Ultralytics Yolov8 не обучается обнаружению объектов

Я пытаюсь научить Yolov8 обнаруживать черные точки на коже человека. Пример скина и разметки показан ниже. Я обрезал изображения до размера 256x256 пикселей, выбрал те кадры, у которых есть хотя бы одна метка, и получил наборы данных поезда, тестирования и проверки (4000, 2000 и 2000 изображений соответственно). Модель сегментации отsegmentation_models_pytorchпрогнозирует черные точки с IoU=0,15. Это нормально, учитывая, что разметка имеет прямоугольную форму (хотя после увеличения изображения лучше всего предположить круг) и что объект не имеет четкой границы (в отличие от автомобиля или стула).

Я пробовал тренировать Yolov8 с помощью команды

yolo обнаружить данные поезда = D:\workspace\ultralytics\my_coco.yaml model=yolov8n.yaml epochs=100 imgsz=256 Workers=2 close_mosaic=100 project='bd' Flipud=0.5 мозаика=0.0 Отчеты о каждой эпохе

        Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
 19/100      1.44G        nan        nan        nan        372        256: 100%|██████████| 267/267 [00:44<00:00,  5.96it/s]
             Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 44/44 [00:06<00:00,  7.06it/s]
               all       1391      26278          0          0          0          0

Полный вывод можно найти здесь

https://pastebin.com/TLz32ZRv

Другая команда дает лучшие результаты yolo обнаружить данные поезда = D:\workspace\ultralytics\my_coco.yaml model=yolov8n.pt epochs=100 imgsz=256 Workers=2 close_mosaic=0 project='bd' Flipud=0.5 мозаика=0.5

        Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
  1/100      1.56G        nan        nan        nan        389        256: 100%|██████████| 267/267 [00:44<00:00,  5.96it/s]
             Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 44/44 [00:05<00:00,  8.08it/s]
               all       1391      26278     0.0118    0.00202    0.00747    0.00278
....

  Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
  4/100      1.54G        nan        nan        nan        165        256: 100%|██████████| 267/267 [00:43<00:00,  6.12it/s]
             Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 44/44 [00:05<00:00,  7.65it/s]
               all       1391      26278     0.0118    0.00202    0.00747    0.00278

Я все еще получаю нан для обучения после эпохи и некоторые значения в течение эпохи. Например: 6/100 1,05G 3,279 2,164 0,937 565 256: 47%|████▋ | 126/267 [00:20<00:22, 6.22it/s] Также обратите внимание, что проверка застревает на значениях из первой эпохи.

1 ответ

The nanПроблема и недостаток обучения были вызваны проблемами с окружающей средой. Я узнал, что вам нужно создать новую среду и запускать толькоpip install ultralytics. Во время первой тренировки это проявляетсяrunning on CPU. У вас может возникнуть соблазн установить pytorch cuda от nvidia. Не делай это. Вместо этого перезагрузите компьютер и повторите обучение. Это покажетrunning on GPU(при условии, что у вас есть видеокарта Nvidia и установлен набор инструментов Nvidia).

Следующий. Вы должны использоватьif __name__ == "__main__":как показано ниже.

      from ultralytics import YOLO

if __name__ == "__main__":  # this is crucial
    model = YOLO('yolov8n.pt')
    model.train(data='my.yaml', epochs=1000, imgsz=256, workers=1)

В противном случае вы начнете вилочную бомбу.

Следующий. Начните с предварительно обученной модели и попробуйте ееcoco8.yaml. Точность прогноза будет неуклонно падать во время обучения. Это нормально: coco8 — очень маленький набор данных, поэтому вы катастрофически забываете CNN.

Затем скачайте Pascal VOC 2007. Разберите его. Ultralytics использует json, а Pascal VOC использует xml (и они используют разные обозначения для полей координат). Обучите свою предварительно обученную модель обнаруживать только людей. Опять же, произойдет первоначальное падение производительности. Но примерно через 20 эпох вы получаете устойчивое улучшение (которое не совсем достигает показателей исходной модели, но близко к этому. Теперь вы можете настроить параметры в default.yaml).

Как только вы будете готовы к обучению yolov8 на своем наборе данных.

PS было еще десять сбоев (некоторые из них заняли у Google час), но я не уверен, сколько из них было вызвано конфликтом пакетов pytorch.

Другие вопросы по тегам