Обучение модели обнаружения объектов с помощью TensorFlow
Итак, мы завершили настройку TensorFlow, и готовы применить архитектуру YOLO для обучения модели обнаружения объектов. YOLO — это нейронная сеть, которая за один проход прогнозирует для изображения положение ограничивающих прямоугольников и вероятности классификации. Модели YOLO способны обрабатывать более 60 кадров в секунду, а значит, эта архитектура отлично подходит для распознавания объектов в видео. Дополнительные сведения о работе YOLO вы найдете здесь.
Использование YOLO
Для начала скачайте этот файл с примером YOLO, который содержит вспомогательные скрипты для быстрого начала работы.
У вас есть три варианта использования YOLO:
Применение заранее обученных весовых коэффициентов для модели YOLO. В этом сценарии модель заранее проходит обучение по крупному набору данных с 80 классами (категориями) для таких типичных объектов, как автобус, человек, бутерброд. Если вас интересует заранее обученная модель YOLO в формате ONNX, вы можете скачать ее здесь. После скачивания переходите сразу к завершающему этапу руководства, где описана интеграция этой модели в приложение.
Реализация обучения переносом из пользовательского набора данных. Обучение переносом — это один из методов обучения модели, в котором заранее обученная модель берется за отправную точку и подготавливается к выполнению схожего, но существенно отличного задания. При работе с этим руководством мы применим заранее обученные весовые коэффициенты YOLO с 80 классами для создания новой модели с 20 классами, обучив ее по набору данных VOC. Если вы предпочитаете использовать собственный набор данных с другими классами, воспользуйтесь этими инструкциями.
Обучение модели YOLO "с нуля". Мы не рекомендуем применять такой сценарий, так как в нем очень трудно обеспечить схождение. В исходном исследовании YOLO пришлось применить обучение по darknet в imagenet (с сотнями тысяч фотографий), а затем также обучить всю сеть.
Чтобы применить обучение переносом по заранее обученным весовым коэффициентам YOLO и набору данных VOC, выполните следующие действия:
Дальше мы будем использовать второй сценарий, и для реализации обучения переносом выполним описанные ниже шаги.
- В окне miniconda перейдите к каталогу с примером YOLO и выполните указанную ниже команду, с помощью которой устанавливаются необходимые пакеты pip для YOLO.
pip install -r requirements.txt
- Выполнение скрипта установки для скачивания данных и заранее обученных весовых коэффициентов
python setup.py
- Преобразуйте набор данных. Реализация описана в файле
tools/voc2012.py
. Этот формат основан на API обнаружения объектов tensorflow. Многие поля здесь не являются обязательными, но они заполнены для совместимости с официальным API.
python tools/voc2012.py \
--data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
--split train \
--output_file ./data/voc2012_train.tfrecord
python tools/voc2012.py \
--data_dir './data/voc2012_raw/VOCdevkit/VOC2012' \
--split val \
--output_file ./data/voc2012_val.tfrecord
- Обучение модели. Выполните следующие команды:
python convert.py
python detect.py --image ./data/meme.jpg # Sanity check
python train.py \
--dataset ./data/voc2012_train.tfrecord \
--val_dataset ./data/voc2012_val.tfrecord \
--classes ./data/voc2012.names \
--num_classes 20 \
--mode fit --transfer darknet \
--batch_size 16 \
--epochs 10 \
--weights ./checkpoints/yolov3.tf \
--weights_num_classes 80
Итак, у вас теперь есть готовая к работе модель с 20 классами.
Следующие шаги
Завершив создание модели TensorFlow, нужно преобразовать ее в формат ONNX для использования с API-интерфейсами Windows Machine Learning.