Показатели трансферного обучения YOLOv3 хуже, чем его официальный вес

Недавно тренировал yolov3 методом трансферного обучения.

Я использовал следующую команду, чтобы тренировать свой вес yolov3.

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74  -gpus 0,1,2,3 -map | tee -a yolov3-official-transfer-learning.log

После отправки веса 500200 пакетов в CodaLab для проверки производительности на COCO Dataset,

Получил следующий результат:

AP: 0.321
AP_50: 0.541
AP_75: 0.339
AP_small: 0.143
AP_medium: 0.332
AP_large: 0.450
AR_max_1: 0.284
AR_max_10: 0.434
AR_max_100: 0.454
AR_small: 0.257
AR_medium: 0.473
AR_large: 0.617

По сравнению с официальным весом в CodaLab

AP: 0.315
AP_50: 0.560
AP_75: 0.324
AP_small: 0.153
AP_medium: 0.334
AP_large: 0.430
AR_max_1: 0.278
AR_max_10: 0.433
AR_max_100: 0.456
AR_small: 0.267
AR_medium: 0.484
AR_large: 0.610

Мы ясно видим, что AP_50 в официальном весе на 1,9% больше, чем моя самообучаемая версия.

Кстати,

[1] Я использовал AlexeyAB / darknet, а не pjreddie / darknet / для обучения YOLOv3.

[2] Я использовал COCO2014 в качестве набора данных для обучения.

Кто-нибудь знает, как объяснить эту ситуацию? Или возможно воспроизвести официальный результат?


person Yanwei Liu    schedule 10.07.2020    source источник


Ответы (2)


Вы использовали cfg по умолчанию? Если да, то вы, вероятно, тренировались с более низким разрешением и / или с меньшими мини-сериями, чем авторы, что означало бы более вероятностное обучение - ›более низкую AP.

Также есть уровень случайности с обучением DNN, я видел, как сети обучаются немного разным точкам доступа с идентичными конфигурациями. Вероятно, что авторы Yolov3 провели много тренировочных испытаний и выбрали для публикации самый лучший результат, поэтому вполне вероятно, что в среднем точная имитация их обучения даст немного худшие результаты.

person ezekiel    schedule 12.07.2020
comment
Да, я использовал cfg по умолчанию, но с размером ввода 416x416. batch = 64 и subdivisions = 16. Возможно, случайность во время обучения является причиной того, что он немного отличается от официального результата. - person Yanwei Liu; 13.07.2020
comment
Итак, вы использовали размер мини-пакета 64/16 = 4, что довольно мало и наверняка меньше, чем у авторов. Немного удивительно, что, несмотря на это, у вас действительно немного выше AP75. - person ezekiel; 13.07.2020
comment
Но когда я смотрю на yolov3.cfg, Автор использовал batch = 64 и subdivisions = 16. Что-то не так с моим пониманием? - person Yanwei Liu; 13.07.2020
comment
batch = 64, subdivisions = 16 означает размер мини-партии из 4. документ довольно скуден в деталях, но я был бы удивлен, если бы это был размер, который они использовали для своего окончательного обучения, размеры минипакетов 256 или больше не являются редкостью для новых алгоритмов SOTA. этот ответ содержит более подробную информацию о размере мини-пакета. - person ezekiel; 13.07.2020

MAP более убедителен в оценке, которая является метрикой AP в вашем вопросе.

Фактически, ваш MAP (0,321) немного выше, чем у официальной версии (0,315).

AP_50 - это просто AP, когда порог IOU установлен на 0,5, тогда как mAP учитывает несколько AP, когда порог IOU установлен на 0,5: 0,95: 0,05 (всего 10 IOU) соответственно.

Ваш AP_50 ниже. Купив вы можете заметить, что у вас AP_75 выше. Это объясняет, почему ваша карта немного выше официальной версии.

Вы можете обратиться к официальному сайту coco, чтобы найти дополнительную информацию об оценочных показателях.

person leedewdew    schedule 12.07.2020
comment
Спасибо за ответ, я бы зашел на официальный сайт coco, чтобы найти более подробную информацию. - person Yanwei Liu; 13.07.2020