Я обучил свое обнаружение настраиваемых объектов с помощью darknet yolov3, пока средняя потеря не снизилась до 0,06, но теперь я хочу обучить его с помощью дополнительных обучающих и тестовых изображений (возможно, также удаление некоторых файлов изображений). Могу ли я выполнить эти шаги и продолжить тренировку с окончательным файлом .weights или мне следует начать с самого начала?
Могу ли я продолжить тренировку с финального веса с большим количеством тренировочных и тестовых изображений?
Ответы (5)
Да, вы можете использовать обученную в настоящее время модель (файл .weights) в качестве предварительно обученной модели для нового сеанса обучения. Например, если вы используете репозиторий AlexeyAB вы можете обучить свою модель с помощью такой команды:
darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74
где darknet53.conv.74
- предварительно обученная модель.
В новом сеансе тренировки вы можете добавлять или удалять изображения. Однако базовые конфигурации должны быть правильными (например, количество классов и т. Д.).
Согласно упомянутой мной странице:
в исходном репозитории исходный репозиторий файл весов сохраняется только один раз за каждые 10 000 итераций
Если вы продолжите, вам нужно указать другие эпохи. Например, если вы тренируетесь до 300/300, то возобновление также будет тренироваться до 300 (начиная с 300), если вы не укажете больше эпох.
python train.py --resume
вы можете возобновить тренировку с ранее сохраненными весами вашей пользовательской модели.
используйте yolov3_custom_last.weights вместо предварительно обученных весов по умолчанию.
Если вы обнаружите проблемы с возобновлением, попробуйте изменить размер пакета.
это должно сработать и возобновить обучение модели с новым набором изображений :)
Если вы только что изменили набор данных, но не заинтересованы в изменении архитектуры модели, вы можете напрямую возобновить работу с ранее сохраненной модели, используя DarkNet в AlexeyAB / darknet. Например,
darknet.exe detector train cfg/obj.data cfg/yolov3.cfg yolov3_weights_last.weights -clear -map
Флаг clear
сбрасывает итерации, сохраненные в весах, что подходит в случае изменения набора данных. Это связано с тем, что скорость обучения часто зависит от итераций, и вы, вероятно, не захотите изменять конфигурации.
откройте .cfg, найдите код max_batches
, который может быть в 22 строке, установите большее значение:
max_batches = 500200
max_batches совпадает с итерацией передачи.
Как продолжить обучение после 50000 итераций? # 2633