Получая -NaN во время обучения DAR KNET, что я делаю не так? - PullRequest
1 голос
/ 11 февраля 2020

Я хочу обучить YOLOv3 обнаружению людей на аэрофотоснимках. Я использую обнаружение объектов VisDrone в наборе данных изображений: github.com / VisDrone / VisDrone-Dataset

Я написал скрипт, который конвертировал метки в формат dar knet, чтобы я мог тренировать его в соответствии с инструкциями pjredd ie "Обучение YOLO на COCO". Я дважды проверил, правильно ли мои конвертированные метки соответствуют объектам, и я также создал правильный файл coco.names в соответствии с описанием меток на VisDrone2018-DET-toolkit на github. Я создал файл trainvalno5k.txt, запустив

python 5kGenerator.py> trainvalno5k.txt

5kGenerator.py:

import os

for filename in os.listdir('images'):
    print( os.path.abspath( os.path.join( 'images', filename )))

Я изменил файл coco.data, это результат:

classes= 12
train  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/trainvalno5k.txt
#valid  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/5k.txt
#valid = data/coco_val_5k.list
names  = /mnt/d/Olaf/Documents/Python/VisDrone2019-DET-train/coco.names
backup = backup
#eval=coco

Я прокомментировал, что он действителен, потому что, насколько я понимаю, его для проверки результатов и действительный набор данных не имеет значения для обучения (я не удосужился его создать).

Когда я запускаю ./darknet поезд детекторов cfg / coco.data cfg / yolov3.cfg darknet53.conv.74 вещи загружаются правильно и обучение начинается, но через каждые несколько строк я получаю -nan сообщения и у меня есть не знаю, почему и если это влияет на конечный результат, например:

Loading weights from darknet53.conv.74...Done!
Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
Resizing
416
Loaded: 1.122782 seconds
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.428162, .5R: -nan, .75R: -nan,  count: 0
Region 94 Avg IOU: 0.409795, Class: 0.690346, Obj: 0.091164, No Obj: 0.519810, .5R: 0.000000, .75R: 0.000000,  count: 1
Region 106 Avg IOU: 0.157575, Class: 0.532119, Obj: 0.333807, No Obj: 0.417611, .5R: 0.045685, .75R: 0.000000,  count: 197
Region 82 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.427261, .5R: -nan, .75R: -nan,  count: 0

Это довольно медленно, потому что я тестирую это на CPU, надлежащее обучение будет проводиться на Nvidia Quadro

Не могли бы вы объяснить это поведение и что я могу сделать, чтобы решить эту проблему -nan?

Ps. Я использую терминал Ubuntu на Windows 10, я не знаю, если это важно.

1 Ответ

1 голос
/ 12 февраля 2020
  1. Лучше использовать репозиторий AlexeyAB для обучения.

  2. Вы должны использовать набор проверки или тест для оценки обученных сетей на вашем данные.

  3. Я обучил 26 классов данных и проигнорировал 5k классов, а у вас 12 классов.

  4. для значения Nan лучше уменьшить скорость обучения в начале обучения. и затем увеличивая его.

  5. Вы можете обучить свою сеть в windows & Linux, и это не имеет значения.

...