yolo3 нужно посмотреть, чтобы начать [гигантские подробности]

Python

резюме тренировки йоло

Резюме старых статей за предыдущий год, возможно новые контактыyoloнебольшой помощи.

генерация данных

Данные, отмеченные веб-страницей via, должны пройти ряд преобразований, чтобы адаптироваться к обучению yolo.Основные шаги включают следующее:

  1. Создайте метку каждого изображения в соответствии с меткой json: xxx.txt
xxx.txt格式(数值都是除以图片实际宽高保存的):
类名 box矩形中心x坐标 box矩形中心y坐标 box矩形宽 box矩形高

  1. При этом изображение будет сжато в 1536 и сохранено в папку с изображением


  1. Наконец, пути изображений, которые будут обучаться с помощью train и val, будут сохранены отдельно для чтения моделью.


Поделиться: Коллекция индикаторов выполнения многопоточности и Jupyter.


йоло окружающая среда строительство

Этот шаг не занимает много времени, согласно официальному сайту пошагово проблем нетофициальный сайт даркнета

Командная строка обучения:

  1. Войдите в каталог даркнета
  2. Команда Run:./darknet detector train ../_question/question.data ../_question/question1280TR.cfg -i 1

-i 1 :Укажите gpu: 1. [Tucao: почему это сокращение от i]

Проблемы, возникающие во время обучения

Если хочешь не попасть в аварию, не наступай на яму:

  1. Соответствие набору данных — один из аспектов
  2. Другим аспектом является настройка cfg.

Интерпретация данных журнала во время обучения:

Region 16 Avg IOU: -nan, Class: -nan, Obj: -nan, No Obj: 0.000000, .5R: -nan, .75R: -nan, count: 0

Region 23 Avg IOU: 0.860543, Class: 0.999887, Obj: 0.962618, No Obj: 0.000232, .5R: 1.000000, .75R: 0.950000, count: 20

11670 (текущее время пакета итераций): 0,225856 (общие потери), 0,287980 avg (средние потери), 0,000100 скорость (текущая скорость обучения, определенная в cfg), 11,322880 секунд (текущее время пакета), 1867200 изображений (общее количество участвующих в обучении картинки)

1. Region 16, Region 23: (сомнительно)

  • Параметры ящиков разного размера, предсказанные на сверточных слоях разного масштаба (16, 23)
  • 16-й сверточный слой представляет собой самый большой масштаб предсказания, использующий большую маску, но можно предсказывать более мелкие объекты; все они имеют значение nan или 0, что указывает на то, что в 16-м сверточном слое не могут быть обнаружены никакие объекты.
  • 23 Сверточный слой — это наименьший масштаб предсказания, и с меньшей маской можно предсказывать более крупные объекты.

2. Avg IOU: 0.860543:

  • IOU - [область помеченного поля] и [обнаруженная область обнаруженного поля] частота совпадения.
  • Конкретный алгоритм выглядит следующим образом:

3. Class: 0.999887:

Правильная скорость классификации коробок

4. Obj: 0.962618, No Obj: 0.000232:

  • Цель: чем ближе к 1, тем лучше
  • No Obj: ожидайте, что значение будет становиться все меньше и меньше, но не равно нулю.
  • До сих пор неясно, что это значит

Использованная литература:

blog.CSDN.net/Guozijian 2013/art…

blog.CSDN.net/Struggle it Sao…

blog.CSDN.net/Theory_master/Ах…

время не TT.GitHub.IO/static/UN…

журнал проблем

Проблема 1 Модель не может предсказать эффект

Феномен:

При обнаружении эффекта модели ядро ​​умерло

решать:

Неверный путь резервного копирования потому чтоCНаписано, что на ноутбуке нет конкретного вывода журнала ошибок, что приводит к долгому зависанию этой проблемы и, наконец, находит причину проблемы в jupyter.log.

Проблема 2 Тренировка прерывается через некоторое время

решать:

После долгих исследований я обнаружил, чтоxxx.dataустановить вbackup 路径Если его не создать, это приведет к тому, что резервная копия не сохранится, а затем обучение будет прервано.

Проблема 3 Невозможно тренироваться

Феномен 1:

Не удалось начать обучение. Нет сообщения об ошибке.

решать:

После повышения категории обучения необходимо изменить 4 параметра

  1. в ххх.данныеclassesнужно изменить
  2. Соответствующее название категории необходимо добавить в xxx.names.
  3. в слое [yolo] в xxx.cfgclassesнужно соответствовать категории
  4. Слой над слоем [convolutional] слоя [yolo] в xxx.cfgfiltersНужно изменить: фильтры=(классы + 5)*количество масок.Ссылка на ссылку

Феномен 2:

Не удалось начать обучение. Сообщение об ошибке:

./darknet: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory

решать:

Поскольку даркнет cuda path не обнаружен, введите команду временного пути:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64 && sudo ldconfig

Затем выполните обучающую команду

nohup ./darknet detector train ../xxxx/xxxx.data ../xxxxx/xxxx1280TR_1.cfg  -i 0  >> 1280TR_0625_train1.txt  &

Феномен 3:

Не удалось начать обучение. Сообщение об ошибке:

8Cannot load image "/mobileHDD/xxxx/images/xxx_ (7416).jpg"
STB Reason: unknown image type images

решать:

Возникла проблема с размером сжатия изображения, и изображение необходимо перегенерировать.

Проблема 4 Эффект обнаружения объектов моделью крайне плохой

Феномен:

  1. потери около 1,9
  2. порог = 0,5, объект не обнаружен.
  3. Только когда порог настроен на 0,01, некоторые объекты могут быть обнаружены, и много неправильных ящиков, и ящик очень маленький

Гипотеза 1:

В соответствии с [феноменом 2] предполагается, что это может бытьcfgсерединаanchorsНеправильный размер, используйтеkmeansКластерный анализanchorsразмер. Поскольку новый пакет данных содержит много реальных пользовательских данных, а диапазон колебаний размера объекта реальных пользовательских данных очень велик, исходные данныеanchorsБольше не подходит.

Гипотеза 2:

Размер изображения не нормализован.

Как решить не знаю.Возможно что возникли одновременно две проблемы,которые и вызвали это явление.Решилась в 9 часов вечера.Левая часть головы болит...У меня решил эту проблему излишними мозгами...

  1. Восстановите данные, вместо исходного размера изображения используйте 1280 пикселей.
  2. Количество якорей увеличено до 21

Пока вроде нормально...

Проблема 5: Какие-то объекты детектируются хорошо, какие-то очень плохо

Феномен:

  1. loss:

Другие журналы тренировок:

2. [Определенный тип обнаружения объектов] Очень легко пропустить пользовательские изображения, соответствующие [лог]objОн ниже и лучше работает в других данных, некоторые из которых вообще не обнаруживаются.

  1. [Другой тип обнаружения] Практически никакого эффекта

  2. Пропущенное обнаружение определенных объектов очень серьезно

2-4 часаthresh= 0.1в случае Очень ненормально!По логике вещей, если потери упадут примерно до 0,5, эффект должен быть лучше, но он явно хуже предыдущего эффекта.

Спекуляция:

Слишком много грязных данных Всего найдено около 200 картинок с грязными данными (картинки перевернуты, отсутствуют метки, неправильные метки, бинаризация), удалите эту часть и потом потренируйтесь, чтобы посмотреть, станет ли она намного лучше.

Предположение отрицательное:

После удаления грязных данных это явление все еще присутствует в результатах обучения, но скорость обнаружения намного выше.

  1. loss = 0.6

2. Но obj находится в пределах 0,3-0,6.Все равно очень мало, нормальное значение должно быть выше 0,8.

  1. При прогоне результатов я обнаружил такое явление: определенный тип объектов имеет большую площадь, а скорость обнаружения очень низкая, а объекты с маленькой площадью в принципе нормальные.

Поэтому предполагается, что настройка привязок неразумна, а настройка привязок слишком мала.

Понимание параметров:

mask

  1. Чтобы достичь цели использования якорей разных размеров в разных слоях [yolo], используйте маску в качестве нижнего индекса [index] якорей. Общий смысл состоит в том, чтобы использовать более крупные привязки на мелководье [yolo] для грубого выбора цели обнаружения, а в глубоком слое использовать якоря меньшего размера для более точного выбора цели обнаружения.

  • Оригинальные слова автора: Для каждого слоя мы должны знать размер всех ящиков, но только часть ящиков будет использоваться для
  1. Маска связана с фильтрами предыдущего слоя [сверточный].Обучение можно проводить только при фильтрах = (классы +5)*[количество масок], иначе будет выдано сообщение об ошибке: количество выходных слоев и входных слоев не соответствуют
darknet: ./src/parser.c:315: parse_yolo: Assertion `l.outputs == params.inputs' failed

Интерпретация параметра:blog.CSDN.net/рН в ОО/Аретти…

Эксклюзивный мастер-код искусственного интеллекта My Didi Cloud: 3388, Введите мастер-код, чтобы получить скидку 10% при покупке продуктов AI, таких как Didi Cloud GPU. нажмитеwww.didiyun.comПерейдите на официальный сайт Didi Cloud, чтобы купить

Эта статья опубликована на многопостовой платформеArtiPubавтоматическая публикация