В этот момент добавление новых данных в тренировочный набор не улучшит точность обучения - PullRequest
1 голос
/ 08 мая 2019

Это более общий вопрос об обучении CNN, но я использую YOLO.Я начал свой тренировочный набор для обнаружения «людей», помечая некоторые данные из видео различных камер (в аналогичной среде) .... Каждый раз, когда я добавлял новые данные для новой камеры, я переучивал YOLO, что фактически улучшало обнаружениедля этой камеры.Для обучения я разбил свои данные случайным образом на набор обучения / проверки.Я использую проверочный набор для вычисления точности.Это не слишком удобно, так как все предыдущие данные также используются в обучении.

Теперь я собрал более 100 000 помеченных данных.Я ожидал, что мне больше не придется тренироваться, так как мой набор данных довольно большой.Но, похоже, мне все еще нужно это сделать.если я получаю новое видео с камеры, помечаю 500-1000 образцов, добавляю их в свой огромный набор данных и снова тренируюсь, точность для этой камеры улучшается.Я не понимаю, действительно понимаю, почему.Почему мне все еще нужно добавлять новые данные в мой набор?Почему точность значительно улучшается для новых данных, в то время как «тысячи» уже «нарисованы»?Есть ли момент, когда я смогу прекратить тренировки, потому что добавление новых данных не улучшит точность?

Спасибо, что поделились своими мыслями и идеями!

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Интересный вопрос.Если качество ваших данных хорошее, а процедура обучения «идеальная», вы всегда сможете лучше обобщить.Подумайте обо всех возможных различных изображениях, которые вы захотите обнаружить.Вы используете только пример этого, надеясь, что этого достаточно для обобщения.Вы можете продолжать увеличивать свой набор данных и можете получить на 0,01% больше, вопрос в том, когда вы хотите остановиться.Точность вашей модели никогда не будет равна 100%.

Мое мнение: если у вас больше 95% точности, прекратите генерировать больше данных, если ваш проект личный, и от этого не зависит ни одна жизнь.Подумайте о постобработке, чтобы улучшить результаты.Поскольку вы обнаруживаете на видео, возможно, попытайтесь проследить за движением человека, поэтому, если в одном кадре оно не обнаружено и у вас есть информация из предыдущего и заднего кадра, вы могли бы сделать что-то необычное.

Надеюсь, это поможетура!

0 голосов
/ 09 мая 2019

Конечно, для создания хорошей модели вам понадобится как можно больше изображений. Но вы должны обратить внимание, станет ли ваша модель оверфитом , то есть ваша модель больше не учится, а средняя потеря 1004 * становится выше, а mAP снижается, когда происходит переобучение, вы должны прекратить тренировку и выбрать лучший вес, который был сохранен в папке darknet / backup /.

Для YOLO есть несколько рекомендаций, которым вы должны следовать, когда следует прекратить тренировки. Наиболее очевидным является:

Во время обучения вы увидите различные индикаторы ошибки, и вам следует остановиться, когда больше не уменьшается 0.XXXXXXX avg:

Region Avg IOU: 0.798363, Class: 0.893232, Obj: 0.700808, No Obj: 0.004567, Avg Recall: 1.000000, count: 8 Region Avg IOU: 0.800677, Class: 0.892181, Obj: 0.701590, No Obj: 0.004574, Avg Recall: 1.000000, count: 8

9002: 0.211667, 0.060730 avg, 0.001000 rate, 3.868000 seconds, 576128 images Loaded: 0.000000 seconds

9002 - номер итерации (номер партии)
0.060730 ср - средняя потеря (ошибка) - чем ниже, тем лучше

Когда вы видите, что средняя потеря 0.xxxxxx avg больше не уменьшается на многих итерациях, вам следует прекратить обучение. Окончательная средняя потеря может быть от 0,05 (для маленькой модели и простого набора данных) до 3,0 (для большой модели и сложного набора данных). Лично я считаю, что модель с потерей ср. 0,06 достаточно хороша.

AlexeyAB подробно все объяснил на своем репозитории github, прочитайте этот раздел, пожалуйста https://github.com/AlexeyAB/darknet#when-should-i-stop-training

...