Comments (23)
Hello @hiteshtechshslok,
Thank you for sharing the label distribution image. When we talk about a "balanced" dataset, we mean that each class should have a relatively similar number of instances. This helps the model learn to detect all classes effectively without biasing towards any particular class.
From your image, it looks like there might be some imbalance. Ideally, you want to avoid having classes with significantly fewer instances compared to others. Here are a few tips to achieve a balanced dataset:
- Equal Representation: Aim for each class to have a similar number of images. If some classes are underrepresented, consider collecting more data for those classes or using data augmentation techniques.
- Oversampling/Undersampling: You can oversample the minority classes (duplicate images) or undersample the majority classes to balance the dataset.
- Data Augmentation: Apply transformations like rotation, flipping, and scaling to increase the diversity of your dataset, especially for underrepresented classes.
Here's a simple example of how you might balance your dataset using oversampling:
from sklearn.utils import resample
# Assuming you have a list of images and their corresponding labels
images, labels = load_your_dataset()
# Combine images and labels into a single dataset
dataset = list(zip(images, labels))
# Separate majority and minority classes
majority_class = [item for item in dataset if item[1] == 'majority_class_label']
minority_class = [item for item in dataset if item[1] == 'minority_class_label']
# Oversample minority class
minority_class_oversampled = resample(minority_class, replace=True, n_samples=len(majority_class), random_state=42)
# Combine majority class with oversampled minority class
balanced_dataset = majority_class + minority_class_oversampled
# Shuffle the dataset
random.shuffle(balanced_dataset)
I hope this helps clarify what a balanced dataset means and how you can achieve it. If you have any further questions, feel free to ask! 😊
from ultralytics.
Hello @hiteshtechshslok,
Thank you for sharing the results and the detailed feedback. I'm sorry to hear that the model's performance did not meet your expectations after 300 epochs. Combining datasets and ensuring balanced training can indeed be challenging.
Suggestions for Improvement:
-
Class Imbalance: Despite balancing the dataset by copying images, the model might still struggle due to overfitting on certain classes. Consider using data augmentation techniques to introduce more variability in the duplicated images.
-
Hyperparameter Tuning: Sometimes, fine-tuning hyperparameters such as learning rate, batch size, and augmentation strategies can significantly impact performance. You might want to experiment with different settings.
-
Transfer Learning: Ensure that the pre-trained weights are being utilized effectively. Sometimes, freezing fewer layers or adjusting the learning rate for the pre-trained layers can help.
-
Validation Metrics: Continuously monitor validation metrics like precision, recall, and mAP during training to identify any early signs of overfitting or underfitting.
Example Code for Data Augmentation:
Here's an example of how you can apply data augmentation using the Albumentations library:
import albumentations as A
from albumentations.pytorch import ToTensorV2
from PIL import Image
import numpy as np
# Define augmentation pipeline
transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.2),
A.Rotate(limit=15, p=0.5),
A.Cutout(num_holes=8, max_h_size=8, max_w_size=8, p=0.5),
ToTensorV2()
])
# Apply augmentation to an image
def augment_image(image_path):
image = np.array(Image.open(image_path))
augmented = transform(image=image)
return augmented['image']
# Example usage
augmented_image = augment_image('/path/to/image.jpg')
Monitoring Training:
To ensure that training is progressing well, keep an eye on the following metrics in your training logs:
- Training and Validation Loss: These should decrease over time.
- Precision and Recall: These should increase and stabilize.
- mAP (Mean Average Precision): This should also increase and stabilize.
Continuous Learning:
Combining datasets and training models effectively is an iterative process. Don't hesitate to experiment with different strategies and tools. If you decide to revisit YOLOv8 in the future, the community and resources will be here to support you.
Thank you for your efforts and contributions. If you have any further questions or need additional assistance, feel free to reach out. Best of luck with your work on MediaPipe! 😊
from ultralytics.
👋 Hello @hiteshtechshslok, thank you for your interest in Ultralytics YOLOv8 🚀! We recommend a visit to the Docs for new users where you can find many Python and CLI usage examples and where many of the most common questions may already be answered.
If this is a 🐛 Bug Report, please provide a minimum reproducible example to help us debug it.
If this is a custom training ❓ Question, please provide as much information as possible, including dataset image examples and training logs, and verify you are following our Tips for Best Training Results.
Join the vibrant Ultralytics Discord 🎧 community for real-time conversations and collaborations. This platform offers a perfect space to inquire, showcase your work, and connect with fellow Ultralytics users.
Install
Pip install the ultralytics
package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.
pip install ultralytics
Environments
YOLOv8 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):
- Notebooks with free GPU:
- Google Cloud Deep Learning VM. See GCP Quickstart Guide
- Amazon Deep Learning AMI. See AWS Quickstart Guide
- Docker Image. See Docker Quickstart Guide
Status
If this badge is green, all Ultralytics CI tests are currently passing. CI tests verify correct operation of all YOLOv8 Modes and Tasks on macOS, Windows, and Ubuntu every 24 hours and on every commit.
from ultralytics.
Hello!
Thank you for reaching out. It looks like you're trying to retrain the YOLOv8 model to detect additional classes from a custom dataset, but you're encountering an issue where the model only recognizes the classes from your new dataset.
To help you better, could you please confirm a few things:
- Are you using the latest versions of
torch
andultralytics
? If not, please upgrade and try again. - Could you provide a minimum reproducible example? This will help us investigate the issue more effectively. You can refer to our guide on creating a minimum reproducible example here: Minimum Reproducible Example.
In the meantime, here's a small code snippet that might help you integrate your new classes with the existing ones:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Print the original classes
print("Original classes:", model.names)
# Train the model on your custom dataset
results = model.train(data='/kaggle/working/dms_test-7/data.yaml', epochs=10, imgsz=320, freeze=9)
# Print the new classes after training
print("New classes after training:", model.names)
If you want to combine the original 80 classes with your new classes, you might need to modify the dataset configuration file to include all the classes you want to detect. Ensure that your data.yaml
file correctly lists all the classes.
Feel free to share more details or any errors you encounter, and we'll be happy to assist you further! 😊
from ultralytics.
Hello @glenn-jocher
I tried your code
print("Original classes:", model.names)
Original classes: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}
New classes after training
New classes after training: {0: 'Cigarette', 1: 'Phone', 2: 'Seatbelt'}
Please let me what else i can try
Regards
Hitesh
from ultralytics.
Hello @HTerminal,
Thank you for your detailed response! It looks like you're encountering an issue where the model's classes are being overwritten by the new dataset's classes after training.
To help us investigate further, could you please provide a minimum reproducible example? This will allow us to replicate the issue on our end. You can refer to our guide on creating a minimum reproducible example here: Minimum Reproducible Example. This step is crucial for us to understand the problem better and provide an accurate solution.
Additionally, please ensure that you are using the latest versions of torch
and ultralytics
. If not, please upgrade your packages and try again to see if the issue persists.
Here's a small code snippet to help you integrate your new classes with the existing ones:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Print the original classes
print("Original classes:", model.names)
# Train the model on your custom dataset
results = model.train(data='/kaggle/working/dms_test-7/data.yaml', epochs=10, imgsz=320, freeze=9)
# Print the new classes after training
print("New classes after training:", model.names)
If you want to combine the original 80 classes with your new classes, you might need to modify the dataset configuration file to include all the classes you want to detect. Ensure that your data.yaml
file correctly lists all the classes.
Feel free to share more details or any errors you encounter, and we'll be happy to assist you further! 😊
from ultralytics.
Hello @glenn-jocher
The above question is same as previous one. Please look for this answer.
Hello @glenn-jocher
I tried your code
print("Original classes:", model.names)
Original classes: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}
New classes after training
New classes after training: {0: 'Cigarette', 1: 'Phone', 2: 'Seatbelt'}
Please let me what else i can try
Regards Hitesh
from ultralytics.
Hello @HTerminal,
Thank you for your detailed follow-up! 😊
It appears that the model's classes are being overwritten by the new dataset's classes after training. To help us investigate further, could you please provide a minimum reproducible example? This will allow us to replicate the issue on our end. You can refer to our guide on creating a minimum reproducible example here: Minimum Reproducible Example. This step is crucial for us to understand the problem better and provide an accurate solution.
Additionally, please ensure that you are using the latest versions of torch
and ultralytics
. If not, please upgrade your packages and try again to see if the issue persists.
Here's a small code snippet to help you integrate your new classes with the existing ones:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Print the original classes
print("Original classes:", model.names)
# Train the model on your custom dataset
results = model.train(data='/kaggle/working/dms_test-7/data.yaml', epochs=10, imgsz=320, freeze=9)
# Print the new classes after training
print("New classes after training:", model.names)
If you want to combine the original 80 classes with your new classes, you might need to modify the dataset configuration file to include all the classes you want to detect. Ensure that your data.yaml
file correctly lists all the classes.
Feel free to share more details or any errors you encounter, and we'll be happy to assist you further! 😊
from ultralytics.
Hello,
i tried the above code and found that my previous classes are overwrite by new classes.
and the github bot is still suggesting same solution.
i have tested the provided example.
Please suggest something which can work.
it seems this is not possible using yolo at all i think.
from ultralytics.
Hello @hiteshtechshslok,
Thank you for your patience and for providing additional details. I understand your concern about the original classes being overwritten by the new classes during training. Let's address this step-by-step to ensure we can integrate your new classes with the existing ones effectively.
Steps to Combine Original and New Classes
-
Modify the Dataset Configuration File: Ensure that your
data.yaml
file includes all the classes you want to detect, combining both the original and new classes. -
Update the Model Configuration: When training, ensure that the model is aware of the combined class list.
Here's a more detailed approach:
Step 1: Update data.yaml
Ensure your data.yaml
file lists all the classes. For example:
train: /path/to/train/images
val: /path/to/val/images
nc: 83 # Total number of classes (80 original + 3 new)
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush', 'Cigarette', 'Phone', 'Seatbelt']
Step 2: Train the Model
Use the updated data.yaml
file to train the model:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Train the model on your custom dataset with the updated data.yaml
results = model.train(data='/path/to/updated/data.yaml', epochs=10, imgsz=320, freeze=9)
# Print the new classes after training
print("New classes after training:", model.names)
Verify the Issue in Latest Versions
Please ensure you are using the latest versions of torch
and ultralytics
. If not, upgrade your packages and try again to see if the issue persists.
Provide a Reproducible Example
If the issue continues, providing a minimum reproducible example will help us investigate further. You can refer to our guide on creating a minimum reproducible example here: Minimum Reproducible Example.
I hope this helps! If you have any further questions or run into issues, feel free to share more details, and we'll be happy to assist you further. 😊
from ultralytics.
Hello,
It did not work as the classes shown after training are also 83 but it does not detect person as well.
Tried the code given by you.
from ultralytics.
Hello @hiteshtechshslok,
Thank you for your patience and for trying the provided solution. I understand that the model is still not detecting the original classes like 'person' after training with the combined dataset.
To help us investigate further, could you please provide a minimum reproducible example? This will allow us to replicate the issue on our end and provide a more accurate solution. You can refer to our guide here: Minimum Reproducible Example.
Additionally, please ensure you are using the latest versions of torch
and ultralytics
. If you haven't already, upgrading to the latest versions might resolve the issue.
Here's another approach you can try:
- Verify Dataset Annotations: Ensure that your dataset annotations are correct and include all the classes you want to detect.
- Check Training Logs: Review the training logs to see if the model is learning to detect all classes. Look for any anomalies in the loss values or class-specific metrics.
- Evaluate on Validation Set: After training, evaluate the model on a validation set that includes instances of all classes to verify detection performance.
If the issue persists, please share more details or any specific errors you encounter. We're here to help! 😊
from ultralytics.
Hello,
What i did was combine both dataset and then re train the whole model again but it did not work!
I merged the dataset coco128 and dms-7(custom dataset)
In the end still i get 83 classes but the detect only works for first 3 classes here is the output
Installed latest libraries on kaggle
!pip install roboflow
!pip install ultralytics
got the dataset
from roboflow import Roboflow
rf = Roboflow(api_key="----------------------------------")
project = rf.workspace("mohameds-workshop").project("dms_test")
version = project.version(7)
dataset = version.download("yolov8")
Downloaded the colo128 and run the following command
!cp /kaggle/working/datasets/coco128/images/train2017/* /kaggle/working/dms_test-7/train/images/
!cp /kaggle/working/datasets/coco128/labels/train2017/* /kaggle/working/dms_test-7/train/labels/
this is my data.yaml
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', 'hair drier', 'toothbrush', 'Cigarette', 'Phone', 'Seatbelt']
nc: 83
roboflow:
license: CC BY 4.0
project: dms_test
url: https://universe.roboflow.com/mohameds-workshop/dms_test/dataset/7
version: 7
workspace: mohameds-workshop
test: test/images
train: train/images
val: valid/images
That's the code to train
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Print the original classes
print("Original classes:", model.names)
# Train the model on your custom dataset
results = model.train(data='/kaggle/working/dms_test-7/data.yaml', epochs=10, imgsz=320)
# Print the new classes after training
print("New classes after training:", model.names)
Here is the output
Model summary: 225 layers, 3184011 parameters, 3183995 gradients, 9.0 GFLOPsTransferred 319/355 items from pretrained weights
TensorBoard: Start with 'tensorboard --logdir runs/detect/train6', view at http://localhost:6006/
Freezing layer 'model.22.dfl.conv.weight'
AMP: running Automatic Mixed Precision (AMP) checks with YOLOv8n...
AMP: checks passed ✅
train: Scanning /kaggle/working/dms_test-7/train/labels.cache... 6871 images, 2 backgrounds, 120 corrupt: 100%|██████████| 6873/6873 [00:00<?, ?it/s]
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000009.jpg: ignoring corrupt image/label: Label class 50 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000025.jpg: ignoring corrupt image/label: Label class 23 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000030.jpg: ignoring corrupt image/label: Label class 75 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000034.jpg: ignoring corrupt image/label: Label class 22 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000036.jpg: ignoring corrupt image/label: Label class 25 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000042.jpg: ignoring corrupt image/label: Label class 16 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000049.jpg: ignoring corrupt image/label: Label class 58 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000061.jpg: ignoring corrupt image/label: Label class 20 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000064.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000071.jpg: ignoring corrupt image/label: Label class 7 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000072.jpg: ignoring corrupt image/label: Label class 23 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000074.jpg: ignoring corrupt image/label: Label class 16 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000077.jpg: ignoring corrupt image/label: Label class 36 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000078.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000086.jpg: ignoring corrupt image/label: Label class 26 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000089.jpg: ignoring corrupt image/label: Label class 73 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000092.jpg: ignoring corrupt image/label: Label class 55 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000094.jpg: ignoring corrupt image/label: Label class 7 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000109.jpg: ignoring corrupt image/label: Label class 16 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000110.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000113.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000127.jpg: ignoring corrupt image/label: Label class 73 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000133.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000136.jpg: ignoring corrupt image/label: Label class 23 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000138.jpg: ignoring corrupt image/label: Label class 75 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000142.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000143.jpg: ignoring corrupt image/label: Label class 14 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000144.jpg: ignoring corrupt image/label: Label class 23 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000149.jpg: ignoring corrupt image/label: Label class 33 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000151.jpg: ignoring corrupt image/label: Label class 11 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000154.jpg: ignoring corrupt image/label: Label class 22 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000164.jpg: ignoring corrupt image/label: Label class 72 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000165.jpg: ignoring corrupt image/label: Label class 76 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000192.jpg: ignoring corrupt image/label: Label class 34 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000194.jpg: ignoring corrupt image/label: Label class 53 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000196.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000201.jpg: ignoring corrupt image/label: Label class 31 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000208.jpg: ignoring corrupt image/label: Label class 79 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000241.jpg: ignoring corrupt image/label: Label class 65 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000257.jpg: ignoring corrupt image/label: Label class 26 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000260.jpg: ignoring corrupt image/label: Label class 28 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000263.jpg: ignoring corrupt image/label: Label class 20 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000283.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000294.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000307.jpg: ignoring corrupt image/label: Label class 29 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000308.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000309.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000312.jpg: ignoring corrupt image/label: Label class 20 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000315.jpg: ignoring corrupt image/label: Label class 56 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000321.jpg: ignoring corrupt image/label: Label class 52 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000322.jpg: ignoring corrupt image/label: Label class 29 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000326.jpg: ignoring corrupt image/label: Label class 40 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000328.jpg: ignoring corrupt image/label: Label class 73 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000332.jpg: ignoring corrupt image/label: Label class 51 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000338.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000349.jpg: ignoring corrupt image/label: Label class 58 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000357.jpg: ignoring corrupt image/label: Label class 35 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000359.jpg: ignoring corrupt image/label: Label class 9 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000360.jpg: ignoring corrupt image/label: Label class 31 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000368.jpg: ignoring corrupt image/label: Label class 32 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000370.jpg: ignoring corrupt image/label: Label class 50 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000382.jpg: ignoring corrupt image/label: Label class 30 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000384.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000387.jpg: ignoring corrupt image/label: Label class 67 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000389.jpg: ignoring corrupt image/label: Label class 27 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000394.jpg: ignoring corrupt image/label: Label class 29 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000395.jpg: ignoring corrupt image/label: Label class 67 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000397.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000400.jpg: ignoring corrupt image/label: Label class 16 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000404.jpg: ignoring corrupt image/label: Label class 8 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000415.jpg: ignoring corrupt image/label: Label class 38 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000419.jpg: ignoring corrupt image/label: Label class 38 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000428.jpg: ignoring corrupt image/label: Label class 55 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000431.jpg: ignoring corrupt image/label: Label class 38 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000436.jpg: ignoring corrupt image/label: Label class 54 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000438.jpg: ignoring corrupt image/label: Label class 54 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000443.jpg: ignoring corrupt image/label: Label class 65 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000446.jpg: ignoring corrupt image/label: Label class 73 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000450.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000459.jpg: ignoring corrupt image/label: Label class 27 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000471.jpg: ignoring corrupt image/label: Label class 5 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000474.jpg: ignoring corrupt image/label: Label class 35 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000486.jpg: ignoring corrupt image/label: Label class 72 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000488.jpg: ignoring corrupt image/label: Label class 35 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000490.jpg: ignoring corrupt image/label: Label class 36 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000491.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000502.jpg: ignoring corrupt image/label: Label class 21 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000510.jpg: ignoring corrupt image/label: Label class 13 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000514.jpg: ignoring corrupt image/label: Label class 59 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000520.jpg: ignoring corrupt image/label: Label class 14 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000531.jpg: ignoring corrupt image/label: Label class 38 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000532.jpg: ignoring corrupt image/label: Label class 26 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000536.jpg: ignoring corrupt image/label: Label class 67 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000540.jpg: ignoring corrupt image/label: Label class 9 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000542.jpg: ignoring corrupt image/label: Label class 27 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000544.jpg: ignoring corrupt image/label: Label class 35 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000560.jpg: ignoring corrupt image/label: Label class 71 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000562.jpg: ignoring corrupt image/label: Label class 79 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000564.jpg: ignoring corrupt image/label: Label class 56 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000569.jpg: ignoring corrupt image/label: Label class 33 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000572.jpg: ignoring corrupt image/label: Label class 28 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000575.jpg: ignoring corrupt image/label: Label class 15 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000581.jpg: ignoring corrupt image/label: Label class 16 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000584.jpg: ignoring corrupt image/label: Label class 51 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000589.jpg: ignoring corrupt image/label: Label class 29 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000590.jpg: ignoring corrupt image/label: Label class 71 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000595.jpg: ignoring corrupt image/label: Label class 62 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000597.jpg: ignoring corrupt image/label: Label class 20 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000599.jpg: ignoring corrupt image/label: Label class 65 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000605.jpg: ignoring corrupt image/label: Label class 60 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000612.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000620.jpg: ignoring corrupt image/label: Label class 72 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000623.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000625.jpg: ignoring corrupt image/label: Label class 29 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000626.jpg: ignoring corrupt image/label: Label class 74 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000634.jpg: ignoring corrupt image/label: Label class 36 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000636.jpg: ignoring corrupt image/label: Label class 61 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000641.jpg: ignoring corrupt image/label: Label class 5 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000643.jpg: ignoring corrupt image/label: Label class 77 exceeds dataset class count 4. Possible class labels are 0-3
train: WARNING ⚠️ /kaggle/working/dms_test-7/train/images/000000000650.jpg: ignoring corrupt image/label: Label class 15 exceeds dataset class count 4. Possible class labels are 0-3
albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))
os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.
val: Scanning /kaggle/working/dms_test-7/valid/labels.cache... 1967 images, 0 backgrounds, 0 corrupt: 100%|██████████| 1967/1967 [00:00<?, ?it/s]
Plotting labels to runs/detect/train6/labels.jpg...
optimizer: 'optimizer=auto' found, ignoring 'lr0=0.01' and 'momentum=0.937' and determining best 'optimizer', 'lr0' and 'momentum' automatically...
optimizer: AdamW(lr=0.000115, momentum=0.9) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias(decay=0.0)
TensorBoard: model graph visualization added ✅
Image sizes 320 train, 320 val
Using 2 dataloader workers
Logging results to runs/detect/train6
Starting training for 10 epochs...
Closing dataloader mosaic
albumentations: Blur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))
os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.
os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
1/10 1.05G 1.6 3.912 1.479 1 320: 100%|██████████| 423/423 [00:43<00:00, 9.75it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 6.89it/s]
all 1967 2087 0.726 0.598 0.658 0.406
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
2/10 1.07G 1.391 1.879 1.28 1 320: 100%|██████████| 423/423 [00:39<00:00, 10.76it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.45it/s]
all 1967 2087 0.81 0.713 0.777 0.49
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
3/10 1.07G 1.299 1.547 1.213 1 320: 100%|██████████| 423/423 [00:38<00:00, 11.01it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.45it/s]
all 1967 2087 0.818 0.76 0.811 0.517
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
4/10 1.07G 1.245 1.355 1.176 1 320: 100%|██████████| 423/423 [00:37<00:00, 11.25it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.44it/s]
all 1967 2087 0.876 0.786 0.855 0.56Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
5/10 1.07G 1.199 1.231 1.139 1 320: 100%|██████████| 423/423 [00:38<00:00, 11.08it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.41it/s]
all 1967 2087 0.883 0.786 0.856 0.57
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
6/10 1.07G 1.158 1.151 1.123 1 320: 100%|██████████| 423/423 [00:37<00:00, 11.30it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.49it/s]
all 1967 2087 0.867 0.81 0.875 0.589
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
7/10 1.08G 1.127 1.088 1.107 1 320: 100%|██████████| 423/423 [00:38<00:00, 11.13it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.53it/s]
all 1967 2087 0.909 0.814 0.89 0.589
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
8/10 1.06G 1.109 1.031 1.095 2 320: 100%|██████████| 423/423 [00:37<00:00, 11.22it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.33it/s]
all 1967 2087 0.912 0.82 0.898 0.611
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
9/10 1.07G 1.087 0.9842 1.082 1 320: 100%|██████████| 423/423 [00:37<00:00, 11.16it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.40it/s]
all 1967 2087 0.915 0.816 0.901 0.61
Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size
10/10 1.07G 1.069 0.964 1.07 1 320: 100%|██████████| 423/423 [00:38<00:00, 11.03it/s]
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:08<00:00, 7.44it/s]
all 1967 2087 0.896 0.836 0.9 0.615
10 epochs completed in 0.135 hours.
Optimizer stripped from runs/detect/train6/weights/last.pt, 6.6MB
Optimizer stripped from runs/detect/train6/weights/best.pt, 6.6MBValidating runs/detect/train6/weights/best.pt...
Ultralytics YOLOv8.2.42 🚀 Python-3.10.13 torch-2.1.2 CUDA:0 (Tesla T4, 15102MiB)
Model summary (fused): 168 layers, 3178697 parameters, 0 gradients, 8.9 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 62/62 [00:10<00:00, 5.85it/s]
all 1967 2087 0.896 0.835 0.9 0.615
person 646 664 0.865 0.747 0.847 0.474
bicycle 327 378 0.94 0.915 0.956 0.732
car 998 1045 0.884 0.842 0.896 0.637
Speed: 0.1ms preprocess, 0.8ms inference, 0.0ms loss, 1.0ms postprocess per image
Results saved to runs/detect/train6
Run history:
lr/pg0 | ▃▆█▇▆▅▄▃▂▁ -- | -- lr/pg1 | ▃▆█▇▆▅▄▃▂▁ lr/pg2 | ▃▆█▇▆▅▄▃▂▁ metrics/mAP50(B) | ▁▄▅▇▇▇████ metrics/mAP50-95(B) | ▁▄▅▆▇▇▇███ metrics/precision(B) | ▁▄▄▇▇▆███▇ metrics/recall(B) | ▁▄▆▇▇▇▇█▇█ model/GFLOPs | ▁ model/parameters | ▁ model/speed_PyTorch(ms) | ▁ train/box_loss | █▅▄▃▃▂▂▂▁▁ train/cls_loss | █▃▂▂▂▁▁▁▁▁ train/dfl_loss | █▅▃▃▂▂▂▁▁▁ val/box_loss | █▆▄▃▃▂▂▁▁▁ val/cls_loss | █▅▄▃▂▂▂▁▁▁ val/dfl_loss | █▄▄▃▂▂▂▂▁▁
wandb sync /kaggle/working/wandb/offline-run-20240625_080711-kqytzk1q
./wandb/offline-run-20240625_080711-kqytzk1q/logs
only supports monotonically increasing values, use define_metric to set
a custom x axis. For details see: https://wandb.me/define-metric
provided step: 1 is less than current step: 3. Dropping entry:
{'train/box_loss': 1.60013, 'train/cls_loss': 3.91197, 'train/dfl_loss':
1.47877, '_timestamp': 1719303087.1311705}).
provided step: 1 is less than current step: 3. Dropping entry:
{'lr/pg0': 3.8242710795902284e-05, 'lr/pg1': 3.8242710795902284e-05,
'lr/pg2': 3.8242710795902284e-05, '_timestamp': 1719303087.1318152}).
provided step: 1 is less than current step: 3. Dropping entry:
{'metrics/precision(B)': 0.72578, 'metrics/recall(B)': 0.59754,
'metrics/mAP50(B)': 0.65786, 'metrics/mAP50-95(B)': 0.40551,
'val/box_loss': 1.39874, 'val/cls_loss': 1.54163, 'val/dfl_loss':
1.28381, '_timestamp': 1719303096.7590275}).
provided step: 1 is less than current step: 3. Dropping entry:
{'labels': {'_type': 'image-file', 'sha256':
'609a770c6bbd382abbe92ccb087dac96d4b6978341a94b8fd94120815bdedd57',
'size': 195345, 'path':
'media/images/labels_3_609a770c6bbd382abbe9.jpg', 'format': 'jpg',
'width': 1600, 'height': 1600}, '_timestamp': 1719303096.7779589}).
provided step: 1 is less than current step: 3. Dropping entry:
{'train_batch0': {'_type': 'image-file', 'sha256':
'961d74e61767a04d477571908e0e456c1282b8b61973eeab8f774a7e2189acf7',
'size': 218143, 'path':
'media/images/train_batch0_3_961d74e61767a04d4775.jpg', 'format': 'jpg',
'width': 1280, 'height': 1280}, '_timestamp': 1719303096.792543}).
provided step: 1 is less than current step: 3. Dropping entry:
{'train_batch1': {'_type': 'image-file', 'sha256':
'42f951eb9118f36ce9f26497c2ebacc69031f69808b93b34d0d8a992e9291b51',
'size': 221186, 'path':
'media/images/train_batch1_3_42f951eb9118f36ce9f2.jpg', 'format': 'jpg',
'width': 1280, 'height': 1280}, '_timestamp': 1719303096.8065536}).
provided step: 1 is less than current step: 3. Dropping entry:
{'train_batch2': {'_type': 'image-file', 'sha256':
'8ba3c15b9deb1a98de7efb85e72b16aa42632ea2adbc74d807988db3d1ade903',
'size': 213158, 'path':
'media/images/train_batch2_3_8ba3c15b9deb1a98de7e.jpg', 'format': 'jpg',
'width': 1280, 'height': 1280}, '_timestamp': 1719303096.8210611}).
provided step: 1 is less than current step: 3. Dropping entry:
{'model/parameters': 3184011, 'model/GFLOPs': 8.979,
'model/speed_PyTorch(ms)': 0.669, '_timestamp': 1719303096.9181988}).
provided step: 2 is less than current step: 3. Dropping entry:
{'train/box_loss': 1.39111, 'train/cls_loss': 1.87885, 'train/dfl_loss':
1.28006, '_timestamp': 1719303136.6657581}).
provided step: 2 is less than current step: 3. Dropping entry:
{'lr/pg0': 6.899501576044129e-05, 'lr/pg1': 6.899501576044129e-05,
'lr/pg2': 6.899501576044129e-05, '_timestamp': 1719303136.6661427}).
provided step: 2 is less than current step: 3. Dropping entry:
{'metrics/precision(B)': 0.80996, 'metrics/recall(B)': 0.71303,
'metrics/mAP50(B)': 0.77684, 'metrics/mAP50-95(B)': 0.49017,
'val/box_loss': 1.29677, 'val/cls_loss': 1.18206, 'val/dfl_loss':
1.15286, '_timestamp': 1719303145.609174}).
New classes after training: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush', 80: 'Cigarette', 81: 'Phone', 82: 'Seatbelt'}
But the validation does not detect person as well
Ultralytics YOLOv8.2.42 🚀 Python-3.10.13 torch-2.1.2 CUDA:0 (Tesla T4, 15102MiB)
Model summary (fused): 168 layers, 3178697 parameters, 0 gradients, 8.9 GFLOPs
image 1/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-0_jpg.rf.462588ecf8c742a8a29205ee9200707c.jpg: 320x320 2 cars, 9.5ms
image 2/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-26_jpg.rf.4f4c4db04b58f433ca58a5d923fdcbed.jpg: 320x320 1 car, 6.7ms
image 3/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-2_jpg.rf.e55ac802ba2a229043e710f31be3d0c6.jpg: 320x320 1 car, 7.4ms
image 4/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-31_jpg.rf.e13faa475eb3b866a4154bb9cdae6586.jpg: 320x320 1 car, 6.3ms
image 5/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-42_jpg.rf.132f53d6d27869df456f46b2d6a77050.jpg: 320x320 1 car, 5.8ms
image 6/1016 /kaggle/working/dms_test-7/test/images/-1070-_mp4-46_jpg.rf.611d9e8a163eed5d520bbd97ab31b4ce.jpg: 320x320 1 car, 5.9ms
image 7/1016 /kaggle/working/dms_test-7/test/image
from ultralytics.
Hello @hiteshtechshslok,
Thank you for providing detailed information about your process and the steps you've taken. It seems like you've combined the COCO dataset with your custom dataset and retrained the model, but the model is not detecting the original classes like 'person' effectively.
Here are a few suggestions to address this issue:
1. Verify Dataset Annotations
Ensure that the annotations for both the COCO dataset and your custom dataset are correctly formatted and merged. The labels should be consistent and correctly mapped to the combined class list.
2. Balance the Dataset
When combining datasets, it's crucial to ensure that the combined dataset is balanced. If your custom dataset has significantly fewer images compared to the COCO dataset, the model might not learn to detect the new classes effectively. Consider oversampling the custom dataset or undersampling the COCO dataset to balance the training data.
3. Check Training Logs
Review the training logs to see if the model is learning to detect all classes. Look for any anomalies in the loss values or class-specific metrics. Ensure that the model is not overfitting to a subset of classes.
4. Evaluate on a Balanced Validation Set
After training, evaluate the model on a validation set that includes instances of all classes to verify detection performance. Ensure that the validation set is representative of the combined dataset.
5. Use a Custom Training Script
You might need to use a custom training script to handle the combined dataset more effectively. Here's an example:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Print the original classes
print("Original classes:", model.names)
# Train the model on your custom dataset with the updated data.yaml
results = model.train(data='/kaggle/working/dms_test-7/data.yaml', epochs=50, imgsz=640, batch=16, freeze=10)
# Print the new classes after training
print("New classes after training:", model.names)
6. Verify the Issue in Latest Versions
Ensure you are using the latest versions of torch
and ultralytics
. If you haven't already, upgrade your packages and try again to see if the issue persists.
7. Provide a Reproducible Example
If the issue continues, providing a minimum reproducible example will help us investigate further. You can refer to our guide on creating a minimum reproducible example here: Minimum Reproducible Example.
Additional Resources
For more detailed guidance on working with the COCO dataset and training YOLO models, you can refer to the Ultralytics COCO Dataset Documentation.
I hope these suggestions help! If you have any further questions or run into issues, feel free to share more details, and we'll be happy to assist you further. 😊
from ultralytics.
Here is a reproducible example
Get database
Please use your roboflow keys
from roboflow import Roboflow
rf = Roboflow(api_key="23232")
project = rf.workspace("symbioosis-institute-of-technology").project("object-detection-etlzl")
version = project.version(8)
dataset = version.download("yolov8")
from roboflow import Roboflow
rf = Roboflow(api_key="ZT7TFnwC1x0Y")
project = rf.workspace("mohameds-workshop").project("dms_test")
version = project.version(7)
dataset = version.download("yolov8")
from roboflow import Roboflow
rf = Roboflow(api_key="23232323232323")
project = rf.workspace("data-drown").project("datn-kmi9v")
version = project.version(1)
dataset = version.download("yolov8")
I have combined those three dataset images labels even re wrote labels class id's
After combining them here is my results and labels.jpg
The problem is
- Dataset A ,B,C works very nice when individual but when combined it seems everyone looses a bit of thier accuracy
Here is label.jpg and PR curve and labels.jpg
Please suggest what should i do.
from ultralytics.
Hello @hiteshtechshslok,
Thank you for providing a detailed reproducible example and sharing the results of your combined dataset. I understand that combining datasets A, B, and C has led to a decrease in accuracy, which is a common challenge when merging datasets with different characteristics.
Here are a few suggestions to help address this issue:
1. Verify Dataset Annotations
Ensure that the annotations for all datasets are correctly formatted and consistent. Misaligned labels or incorrect class IDs can significantly impact model performance.
2. Balance the Dataset
When combining datasets, it's crucial to ensure that the combined dataset is balanced. If one dataset is significantly larger than the others, it might dominate the training process. Consider oversampling the smaller datasets or undersampling the larger ones to achieve a balanced dataset.
3. Fine-Tune Hyperparameters
Adjusting hyperparameters such as learning rate, batch size, and epochs can help improve model performance. You might need to experiment with different values to find the optimal settings for your combined dataset.
4. Use Transfer Learning
If you haven't already, consider using transfer learning. Start with a model pre-trained on a large dataset (like COCO) and fine-tune it on your combined dataset. This approach can help the model retain useful features learned from the larger dataset while adapting to the new data.
5. Evaluate Class-Specific Performance
Analyze the performance metrics for each class individually. This can help identify if certain classes are underperforming and require more data or different augmentation techniques.
Example Code for Fine-Tuning
Here's an example of how you can fine-tune a pre-trained YOLOv8 model on your combined dataset:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Train the model on your combined dataset
results = model.train(data='/path/to/combined/data.yaml', epochs=50, imgsz=640, batch=16, freeze=10)
# Print the new classes after training
print("New classes after training:", model.names)
Additional Resources
For more detailed guidance on working with combined datasets and training YOLO models, you can refer to the Ultralytics Training Documentation.
I hope these suggestions help! If you have any further questions or run into issues, feel free to share more details, and we'll be happy to assist you further. 😊
from ultralytics.
So according to label and occurrence do you think it is alright or not.
from ultralytics.
Hello @hiteshtechshslok,
Thank you for sharing the detailed information and results. Based on the label distribution and PR curve you provided, it appears that the combined dataset might be causing some imbalance, which can affect the model's performance.
Key Considerations:
- Label Distribution: Ensure that the combined dataset has a balanced distribution of classes. If certain classes are underrepresented, the model may not learn to detect them effectively.
- Dataset Size: Larger datasets tend to dominate the training process. Consider balancing the dataset by oversampling the smaller datasets or undersampling the larger ones.
- Hyperparameter Tuning: Fine-tuning hyperparameters like learning rate, batch size, and epochs can help improve performance. Experiment with different values to find the optimal settings.
Suggested Approach:
- Analyze Class-Specific Performance: Evaluate the performance metrics for each class individually to identify underperforming classes.
- Use Transfer Learning: Start with a pre-trained model and fine-tune it on your combined dataset. This can help retain useful features from the larger dataset while adapting to the new data.
Example Code for Fine-Tuning:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Train the model on your combined dataset
results = model.train(data='/path/to/combined/data.yaml', epochs=50, imgsz=640, batch=16, freeze=10)
# Print the new classes after training
print("New classes after training:", model.names)
Next Steps:
- Verify Dataset Annotations: Ensure annotations are correct and consistent.
- Balance the Dataset: Adjust the dataset to ensure balanced representation of all classes.
- Evaluate on a Balanced Validation Set: Use a representative validation set to verify detection performance.
For more detailed guidance, you can refer to the Ultralytics Training Documentation.
I hope this helps! If you have any further questions or need additional assistance, feel free to ask. 😊
from ultralytics.
Hello,
Does my dataset looks Balanced what do you mean by balanced, is it have to be all images equal or what should it look like, please see this images for occurrence.
from ultralytics.
Thank you
Now i have the images which look like this
I just copied the images using a classic pythons script according to their occurrence
# import os
import shutil
def count_class_occurrences(folder_path):
"""
Count occurrences of each class in all label files within a given folder.
Args:
folder_path (str): Path to the folder containing the label files.
Returns:
dict: Dictionary containing counts of occurrences for each class.
"""
class_counts = {}
# Function to count occurrences of each class in a given file
def count_class_labels(file_path):
nonlocal class_counts
with open(file_path, 'r') as file:
lines = file.readlines()
for line in lines:
parts = line.strip().split()
if len(parts) == 5: # Ensure the line has the expected format
class_id = int(parts[0])
if class_id in class_counts:
class_counts[class_id] += 1
else:
class_counts[class_id] = 1
# Iterate through each file in the folder and count the class occurrences
for filename in os.listdir(folder_path):
if filename.endswith('.txt'):
file_path = os.path.join(folder_path, filename)
count_class_labels(file_path)
print("Class occurrences counted successfully.")
return class_counts
def copy_files_for_classes(base_folder, class_multipliers):
label_folder = os.path.join(base_folder, 'train', 'labels')
image_folder = os.path.join(base_folder, 'train', 'images')
for filename in os.listdir(label_folder):
if filename.endswith('.txt'):
file_path = os.path.join(label_folder, filename)
with open(file_path, 'r') as file:
lines = file.readlines()
for line in lines:
parts = line.strip().split()
if len(parts) == 5:
class_id = int(parts[0])
if class_id in class_multipliers:
image_file = filename.replace('.txt', '.jpg')
image_path = os.path.join(image_folder, image_file)
if os.path.exists(image_path):
for i in range(1, class_multipliers[class_id] + 1):
# Copy label file
new_label_file = filename.replace('.txt', f'_{i}.txt')
new_label_path = os.path.join(label_folder, new_label_file)
shutil.copyfile(file_path, new_label_path)
# Copy image file
new_image_file = image_file.replace('.jpg', f'_{i}.jpg')
new_image_path = os.path.join(image_folder, new_image_file)
shutil.copyfile(image_path, new_image_path)
# Example usage for DATN dataset
base_folder = '/kaggle/working/DATN-11'
class_multipliers = {
0: 1,
1: 5,
2: 2,
3: 8,
4: 7
}
train_class_counts = count_class_occurrences(os.path.join(base_folder, 'train', 'labels'))
print("Train Class Counts:", train_class_counts)
copy_files_for_classes(base_folder, class_multipliers)
print("Files copied successfully.")
Now just going to train this model and will post the results.
from ultralytics.
Hello @hiteshtechshslok,
Thank you for sharing your approach and the detailed script! It looks like you've done a great job balancing your dataset by adjusting the occurrences of each class. This should help improve the model's ability to learn from all classes more effectively.
Next Steps:
- Training the Model: Proceed with training your model using the balanced dataset. Make sure to monitor the training logs and validation metrics to ensure that the model is learning effectively.
- Evaluate Performance: After training, evaluate the model on a validation set that includes instances of all classes. This will help you verify if the balancing has improved the detection performance across all classes.
Example Code for Training:
Here's a concise example to train your model:
from ultralytics import YOLO
# Load a pretrained YOLOv8 model
model = YOLO('yolov8n.pt')
# Train the model on your balanced dataset
results = model.train(data='/path/to/combined/data.yaml', epochs=50, imgsz=640, batch=16, freeze=10)
# Print the new classes after training
print("New classes after training:", model.names)
Additional Tips:
- Hyperparameter Tuning: Experiment with different hyperparameters like learning rate, batch size, and epochs to find the optimal settings for your dataset.
- Data Augmentation: Apply data augmentation techniques to further enhance the diversity of your dataset and improve model robustness.
Feel free to share your training results and any further questions you might have. We're here to help! 😊
Best of luck with your training! 🚀
from ultralytics.
How do I monitor if training is going well and learning is good here is my result.csv what else do you need?
<style> </style>epoch | train/box_loss | train/cls_loss | train/dfl_loss | metrics/precision(B) | metrics/recall(B) | metrics/mAP50(B) | metrics/mAP50-95(B) | val/box_loss | val/cls_loss | val/dfl_loss | lr/pg0 | lr/pg1 | lr/pg2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1.6374 | 3.4337 | 1.5594 | 0.51117 | 0.59932 | 0.53627 | 0.28123 | 1.5275 | 2.2127 | 1.4792 | 0.003331 | 0.003331 | 0.003331 |
2 | 1.5394 | 2.2541 | 1.4527 | 0.48217 | 0.48746 | 0.46223 | 0.24135 | 1.665 | 2.5751 | 1.5658 | 0.006642 | 0.006642 | 0.006642 |
3 | 1.5877 | 1.915 | 1.4916 | 0.49993 | 0.51244 | 0.46529 | 0.24662 | 1.6978 | 2.021 | 1.6077 | 0.009931 | 0.009931 | 0.009931 |
4 | 1.608 | 1.7371 | 1.5135 | 0.58123 | 0.59318 | 0.5803 | 0.3224 | 1.6719 | 1.984 | 1.5841 | 0.009901 | 0.009901 | 0.009901 |
5 | 1.5391 | 1.5554 | 1.4663 | 0.70631 | 0.67715 | 0.71777 | 0.40629 | 1.6033 | 1.5121 | 1.4952 | 0.009868 | 0.009868 | 0.009868 |
6 | 1.5285 | 1.5011 | 1.4599 | 0.74762 | 0.56818 | 0.66181 | 0.39003 | 1.6434 | 1.7364 | 1.5596 | 0.009835 | 0.009835 | 0.009835 |
7 | 1.4793 | 1.4132 | 1.4333 | 0.7372 | 0.67955 | 0.7441 | 0.43818 | 1.5148 | 1.3674 | 1.4304 | 0.009802 | 0.009802 | 0.009802 |
8 | 1.4035 | 1.2741 | 1.377 | 0.76071 | 0.69056 | 0.74608 | 0.45832 | 1.5132 | 1.4978 | 1.4591 | 0.009769 | 0.009769 | 0.009769 |
9 | 1.3084 | 1.1373 | 1.318 | 0.73235 | 0.6711 | 0.72552 | 0.43815 | 1.5545 | 1.5273 | 1.4539 | 0.009736 | 0.009736 | 0.009736 |
10 | 1.3574 | 1.1824 | 1.3492 | 0.78762 | 0.73057 | 0.79337 | 0.48149 | 1.445 | 1.2434 | 1.4069 | 0.009703 | 0.009703 | 0.009703 |
11 | 1.334 | 1.1455 | 1.3311 | 0.81959 | 0.73649 | 0.83402 | 0.52115 | 1.4051 | 1.2236 | 1.3528 | 0.00967 | 0.00967 | 0.00967 |
12 | 1.3097 | 1.0991 | 1.3148 | 0.7817 | 0.74574 | 0.82578 | 0.51995 | 1.4642 | 1.2063 | 1.408 | 0.009637 | 0.009637 | 0.009637 |
13 | 1.3043 | 1.0818 | 1.3135 | 0.8052 | 0.75538 | 0.82124 | 0.5269 | 1.4267 | 1.2486 | 1.3796 | 0.009604 | 0.009604 | 0.009604 |
14 | 1.2878 | 1.0447 | 1.2991 | 0.79389 | 0.76867 | 0.82916 | 0.52161 | 1.4072 | 1.1533 | 1.3481 | 0.009571 | 0.009571 | 0.009571 |
15 | 1.2699 | 1.0371 | 1.2926 | 0.81735 | 0.76722 | 0.84412 | 0.5397 | 1.3811 | 1.0752 | 1.3452 | 0.009538 | 0.009538 | 0.009538 |
16 | 1.2529 | 1.0124 | 1.2788 | 0.84358 | 0.76637 | 0.83639 | 0.54297 | 1.3573 | 1.1132 | 1.3142 | 0.009505 | 0.009505 | 0.009505 |
17 | 1.2545 | 0.99767 | 1.2784 | 0.8394 | 0.74628 | 0.83225 | 0.53428 | 1.4164 | 1.2883 | 1.3448 | 0.009472 | 0.009472 | 0.009472 |
18 | 1.2396 | 0.97381 | 1.2743 | 0.82961 | 0.77327 | 0.85275 | 0.5588 | 1.3565 | 1.0802 | 1.3239 | 0.009439 | 0.009439 | 0.009439 |
19 | 1.2304 | 0.95954 | 1.2629 | 0.8227 | 0.79252 | 0.85521 | 0.56458 | 1.3537 | 1.0894 | 1.3107 | 0.009406 | 0.009406 | 0.009406 |
20 | 1.224 | 0.95311 | 1.2608 | 0.85011 | 0.80706 | 0.88301 | 0.5938 | 1.3071 | 0.97238 | 1.2906 | 0.009373 | 0.009373 | 0.009373 |
21 | 1.2139 | 0.94275 | 1.2546 | 0.84501 | 0.79416 | 0.86825 | 0.57815 | 1.3203 | 0.99591 | 1.3011 | 0.00934 | 0.00934 | 0.00934 |
22 | 1.2037 | 0.9351 | 1.2514 | 0.83572 | 0.79768 | 0.86516 | 0.57974 | 1.3054 | 1.0246 | 1.3003 | 0.009307 | 0.009307 | 0.009307 |
23 | 1.1928 | 0.9208 | 1.2408 | 0.839 | 0.79429 | 0.86424 | 0.58232 | 1.3091 | 1.0518 | 1.2943 | 0.009274 | 0.009274 | 0.009274 |
24 | 1.1917 | 0.91069 | 1.2415 | 0.83913 | 0.80719 | 0.87288 | 0.58629 | 1.3102 | 0.954 | 1.2792 | 0.009241 | 0.009241 | 0.009241 |
25 | 1.1821 | 0.89585 | 1.2348 | 0.84761 | 0.80238 | 0.86705 | 0.58415 | 1.3195 | 1.0015 | 1.2879 | 0.009208 | 0.009208 | 0.009208 |
26 | 1.1841 | 0.89308 | 1.238 | 0.84827 | 0.81809 | 0.88476 | 0.59769 | 1.2907 | 0.93405 | 1.2783 | 0.009175 | 0.009175 | 0.009175 |
27 | 1.1748 | 0.88188 | 1.2298 | 0.84098 | 0.82803 | 0.88479 | 0.59502 | 1.294 | 0.9365 | 1.2736 | 0.009142 | 0.009142 | 0.009142 |
28 | 1.1706 | 0.87318 | 1.2252 | 0.86381 | 0.81463 | 0.87445 | 0.59108 | 1.2928 | 0.91719 | 1.2741 | 0.009109 | 0.009109 | 0.009109 |
29 | 1.1637 | 0.86825 | 1.2246 | 0.85573 | 0.82787 | 0.88016 | 0.59682 | 1.28 | 0.90802 | 1.2675 | 0.009076 | 0.009076 | 0.009076 |
30 | 1.1625 | 0.86346 | 1.2237 | 0.85403 | 0.8312 | 0.88144 | 0.59597 | 1.2995 | 0.93383 | 1.2751 | 0.009043 | 0.009043 | 0.009043 |
31 | 1.1489 | 0.85363 | 1.2181 | 0.85492 | 0.82136 | 0.88218 | 0.59866 | 1.2984 | 0.94674 | 1.2769 | 0.00901 | 0.00901 | 0.00901 |
32 | 1.123 | 0.818 | 1.2013 | 0.85993 | 0.82875 | 0.88762 | 0.60274 | 1.2734 | 0.91118 | 1.2553 | 0.008977 | 0.008977 | 0.008977 |
33 | 1.1366 | 0.8377 | 1.2094 | 0.86082 | 0.83195 | 0.88583 | 0.6014 | 1.2752 | 0.9228 | 1.259 | 0.008944 | 0.008944 | 0.008944 |
34 | 1.1322 | 0.83183 | 1.2082 | 0.86439 | 0.82858 | 0.89011 | 0.60636 | 1.2718 | 0.9082 | 1.2553 | 0.008911 | 0.008911 | 0.008911 |
35 | 1.1288 | 0.83026 | 1.2046 | 0.86826 | 0.83141 | 0.89107 | 0.61041 | 1.261 | 0.90188 | 1.2509 | 0.008878 | 0.008878 | 0.008878 |
36 | 1.1317 | 0.82246 | 1.2051 | 0.86151 | 0.8406 | 0.8925 | 0.60839 | 1.2555 | 0.90413 | 1.2475 | 0.008845 | 0.008845 | 0.008845 |
37 | 1.1237 | 0.81518 | 1.199 | 0.87513 | 0.83827 | 0.8881 | 0.60922 | 1.2498 | 0.88495 | 1.2447 | 0.008812 | 0.008812 | 0.008812 |
38 | 1.1194 | 0.8208 | 1.201 | 0.8728 | 0.84231 | 0.8882 | 0.60714 | 1.2465 | 0.8765 | 1.2408 | 0.008779 | 0.008779 | 0.008779 |
39 | 1.1098 | 0.80846 | 1.1939 | 0.87528 | 0.84003 | 0.88665 | 0.60788 | 1.2428 | 0.87044 | 1.237 | 0.008746 | 0.008746 | 0.008746 |
40 | 1.1195 | 0.8043 | 1.1954 | 0.87061 | 0.84186 | 0.88423 | 0.60814 | 1.2484 | 0.87369 | 1.2392 | 0.008713 | 0.008713 | 0.008713 |
41 | 1.1136 | 0.80339 | 1.1969 | 0.87648 | 0.84749 | 0.88783 | 0.61075 | 1.2408 | 0.84914 | 1.2358 | 0.00868 | 0.00868 | 0.00868 |
42 | 1.104 | 0.79367 | 1.1881 | 0.87162 | 0.85142 | 0.89033 | 0.61266 | 1.2334 | 0.83397 | 1.2323 | 0.008647 | 0.008647 | 0.008647 |
43 | 1.1041 | 0.78934 | 1.1866 | 0.87145 | 0.84869 | 0.88832 | 0.61361 | 1.2283 | 0.8268 | 1.2297 | 0.008614 | 0.008614 | 0.008614 |
44 | 1.0963 | 0.78968 | 1.1841 | 0.87088 | 0.85203 | 0.89262 | 0.61676 | 1.2267 | 0.83197 | 1.2275 | 0.008581 | 0.008581 | 0.008581 |
45 | 1.0928 | 0.78541 | 1.1859 | 0.8663 | 0.85553 | 0.889 | 0.61524 | 1.2273 | 0.829 | 1.2286 | 0.008548 | 0.008548 | 0.008548 |
46 | 1.0916 | 0.77467 | 1.1814 | 0.87487 | 0.85187 | 0.88813 | 0.61588 | 1.2305 | 0.83503 | 1.2314 | 0.008515 | 0.008515 | 0.008515 |
47 | 1.0895 | 0.77595 | 1.1792 | 0.87883 | 0.85025 | 0.88935 | 0.61786 | 1.2307 | 0.8346 | 1.2325 | 0.008482 | 0.008482 | 0.008482 |
48 | 1.0815 | 0.77255 | 1.1765 | 0.87729 | 0.85033 | 0.88845 | 0.61621 | 1.23 | 0.8268 | 1.2332 | 0.008449 | 0.008449 | 0.008449 |
49 | 1.0839 | 0.76934 | 1.1776 | 0.872 | 0.85471 | 0.89218 | 0.61817 | 1.2275 | 0.82272 | 1.2317 | 0.008416 | 0.008416 | 0.008416 |
50 | 1.0827 | 0.76676 | 1.175 | 0.87834 | 0.84615 | 0.89418 | 0.62128 | 1.2231 | 0.82031 | 1.2291 | 0.008383 | 0.008383 | 0.008383 |
51 | 1.0796 | 0.76058 | 1.1728 | 0.875 | 0.85067 | 0.89472 | 0.62236 | 1.223 | 0.82116 | 1.2282 | 0.00835 | 0.00835 | 0.00835 |
52 | 1.0768 | 0.75792 | 1.1733 | 0.87229 | 0.8539 | 0.89599 | 0.62306 | 1.2204 | 0.81489 | 1.2265 | 0.008317 | 0.008317 | 0.008317 |
53 | 1.0758 | 0.75903 | 1.1741 | 0.87612 | 0.8529 | 0.89734 | 0.62393 | 1.2197 | 0.81086 | 1.2253 | 0.008284 | 0.008284 | 0.008284 |
54 | 1.0695 | 0.75508 | 1.1719 | 0.88564 | 0.8452 | 0.89809 | 0.62367 | 1.2182 | 0.80897 | 1.2237 | 0.008251 | 0.008251 | 0.008251 |
55 | 1.0801 | 0.75912 | 1.1748 | 0.88525 | 0.8483 | 0.89855 | 0.62576 | 1.2173 | 0.80595 | 1.2229 | 0.008218 | 0.008218 | 0.008218 |
56 | 1.0788 | 0.761 | 1.1768 | 0.88481 | 0.84702 | 0.89934 | 0.62552 | 1.219 | 0.80875 | 1.2229 | 0.008185 | 0.008185 | 0.008185 |
57 | 1.0732 | 0.74717 | 1.1688 | 0.88837 | 0.8442 | 0.89962 | 0.62522 | 1.2189 | 0.80921 | 1.2226 | 0.008152 | 0.008152 | 0.008152 |
58 | 1.0755 | 0.75262 | 1.1711 | 0.88557 | 0.84546 | 0.8991 | 0.62438 | 1.2175 | 0.80739 | 1.2215 | 0.008119 | 0.008119 | 0.008119 |
59 | 1.0698 | 0.75045 | 1.1691 | 0.88337 | 0.84774 | 0.89949 | 0.62473 | 1.2155 | 0.8046 | 1.2208 | 0.008086 | 0.008086 | 0.008086 |
60 | 1.0663 | 0.74903 | 1.1679 | 0.88516 | 0.84576 | 0.89954 | 0.62457 | 1.2159 | 0.80473 | 1.2205 | 0.008053 | 0.008053 | 0.008053 |
61 | 1.0654 | 0.75104 | 1.1671 | 0.88133 | 0.84498 | 0.89851 | 0.62532 | 1.2151 | 0.80408 | 1.2199 | 0.00802 | 0.00802 | 0.00802 |
62 | 1.068 | 0.73984 | 1.1663 | 0.88196 | 0.8426 | 0.8977 | 0.625 | 1.2151 | 0.80468 | 1.2196 | 0.007987 | 0.007987 | 0.007987 |
63 | 1.0663 | 0.74419 | 1.1681 | 0.88297 | 0.84302 | 0.89906 | 0.62702 | 1.2146 | 0.80276 | 1.219 | 0.007954 | 0.007954 | 0.007954 |
64 | 1.0591 | 0.73835 | 1.1619 | 0.88145 | 0.84472 | 0.89817 | 0.62652 | 1.2139 | 0.8012 | 1.2185 | 0.007921 | 0.007921 | 0.007921 |
65 | 1.0592 | 0.7351 | 1.1652 | 0.87905 | 0.84952 | 0.89793 | 0.6262 | 1.212 | 0.79791 | 1.2172 | 0.007888 | 0.007888 | 0.007888 |
66 | 1.0569 | 0.7351 | 1.1603 | 0.87864 | 0.84797 | 0.89749 | 0.62614 | 1.2116 | 0.79594 | 1.2169 | 0.007855 | 0.007855 | 0.007855 |
67 | 1.0588 | 0.73639 | 1.1638 | 0.88062 | 0.84688 | 0.89654 | 0.62533 | 1.2121 | 0.79727 | 1.2167 | 0.007822 | 0.007822 | 0.007822 |
68 | 1.0498 | 0.73312 | 1.1583 | 0.88141 | 0.84744 | 0.89666 | 0.62542 | 1.2116 | 0.79759 | 1.2161 | 0.007789 | 0.007789 | 0.007789 |
69 | 1.0116 | 0.68693 | 1.1396 | 0.88313 | 0.84646 | 0.89667 | 0.62535 | 1.2116 | 0.79796 | 1.2161 | 0.007756 | 0.007756 | 0.007756 |
70 | 1.0382 | 0.71444 | 1.1529 | 0.87984 | 0.84896 | 0.8978 | 0.62462 | 1.2118 | 0.79916 | 1.2162 | 0.007723 | 0.007723 | 0.007723 |
71 | 1.0399 | 0.72176 | 1.1539 | 0.88066 | 0.84827 | 0.89813 | 0.62497 | 1.2118 | 0.80043 | 1.2163 | 0.00769 | 0.00769 | 0.00769 |
72 | 1.0413 | 0.72619 | 1.1546 | 0.88051 | 0.84947 | 0.89813 | 0.62583 | 1.2116 | 0.80073 | 1.2164 | 0.007657 | 0.007657 | 0.007657 |
from ultralytics.
Hello Here are the results of the model trained 300 Epoch
Which is not good at all , Same problem happened classes which was copied more time to equal the dataset does not detect.
Switching to media pipe now,
Thanks
It seems not possible to combine datasets and then train them in yolov8. Also, transfer learning does not seem to work well.
It was a good try though. .
from ultralytics.
Related Issues (20)
- Unable to export RT-DETR model to TFLite or EdgeTPU HOT 4
- Unable to explain validation results, different from prediction HOT 2
- Sort bounding boxes HOT 10
- Documentation mismatch in val.py#L200-L214 HOT 4
- export error HOT 4
- Extracting Keypoint IDs (an, if possible, Keypoint Labels) in YOLOv8 for Pose Estimation HOT 9
- New YOLOv# Format for Pose Estimation with Keypoints Labels HOT 2
- Error after running make and ./Yolov8CPPInference in C++ HOT 3
- rtdetr fp16 inference HOT 4
- Simple question: How can I check the visual result of tracking video in Colab? HOT 2
- got an unexpected keyword argument 'allow_empty HOT 3
- How to publish an application to the client in python and run it using the GPU HOT 13
- When predicting, does yolov8's behavior change when there are different sized images in the input image list? HOT 2
- Yolov9 onnx export HOT 3
- Trainning not improving: Decreasing mAP and Early Stopping at Epoch 100 HOT 1
- Training on a new dataset based on best.pt HOT 7
- The effect of the random function HOT 3
- During validation, the result is different when setting the "save_txt" is True or False HOT 5
- SPAM HOT 2
- Erro when export yolo8n.pt to yolov8n.engine HOT 14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ultralytics.