GithubHelp home page GithubHelp logo

Comments (23)

glenn-jocher avatar glenn-jocher commented on July 24, 2024 1

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:

  1. 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.
  2. Oversampling/Undersampling: You can oversample the minority classes (duplicate images) or undersample the majority classes to balance the dataset.
  3. 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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024 1

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

github-actions avatar github-actions commented on July 24, 2024

👋 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):

Status

Ultralytics CI

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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:

  1. Are you using the latest versions of torch and ultralytics? If not, please upgrade and try again.
  2. 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.

HTerminal avatar HTerminal commented on July 24, 2024

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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.

HTerminal avatar HTerminal commented on July 24, 2024

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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

  1. 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.

  2. 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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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:

  1. Verify Dataset Annotations: Ensure that your dataset annotations are correct and include all the classes you want to detect.
  2. 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.
  3. 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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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 GFLOPs

Transferred 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.56

  Epoch    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.6MB

Validating 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 | █▄▄▃▂▂▂▂▁▁


You can sync this run to the cloud by running:
wandb sync /kaggle/working/wandb/offline-run-20240625_080711-kqytzk1q
Find logs at: ./wandb/offline-run-20240625_080711-kqytzk1q/logs
Step
only supports monotonically increasing values, use define_metric to set
a custom x axis. For details see: https://wandb.me/define-metric
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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}).
(User
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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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

  1. 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
labels(9)

PR_curve(11)

Please suggest what should i do.

from ultralytics.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

So according to label and occurrence do you think it is alright or not.

from ultralytics.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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:

  1. 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.
  2. Dataset Size: Larger datasets tend to dominate the training process. Consider balancing the dataset by oversampling the smaller datasets or undersampling the larger ones.
  3. 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:

  1. Analyze Class-Specific Performance: Evaluate the performance metrics for each class individually to identify underperforming classes.
  2. 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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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.

344388782-c2d3ddae-96d1-490d-a9ac-4998c22d3240

from ultralytics.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

Thank you
Now i have the images which look like this

From this
344541501-55ee64e9-2fca-44c6-b830-b19f3f710775

To this
labels (6)

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.

glenn-jocher avatar glenn-jocher commented on July 24, 2024

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:

  1. 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.
  2. 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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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.

hiteshtechshslok avatar hiteshtechshslok commented on July 24, 2024

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.
PR_curve (4)

results (2).csv

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.