Назад | Далее | Содержание
Переносное обучение - Распознавание объектов
Примечание: если вы хотите пометить набор изображений, которые у вас уже есть (вместо их захвата с камеры), попробуйте использовать инструмент, такой как
CVAT
и экспортируйте набор данных в формат Pascal VOC. Затем создайте файлlabels.txt
в наборе данных с именами каждого из ваших классов объектов.## Создание файла меток Под папкойjetson-inference/python/training/detection/ssd/data
создайте пустую директорию для хранения вашего набора данных и текстовый файл, который определит метки классов (обычно называетсяlabels.txt
). Файл меток содержит одну метку класса на строку, например:
Вода
Nalgene
Кока-кола
Диетическая кока-кола
Грейпфрут
Если вы используете контейнер, вы захотите сохранить ваш набор данных в монтированной директории как выше, чтобы он сохранялся после завершения работы контейнера.## Запуск инструмента
Инструмент camera-capture
принимает те же входные URI на командной строке, которые найдены на странице Трансляция видеопотока и мультимедиа.
Вот несколько примеров команд для запуска инструмента:
$ camera-capture csi://0 # используя стандартную MIPI CSI камеру
$ camera-capture /dev/video0 # используя V4L2 камеру /dev/video0
Примечание: для примеров камер, которые можно использовать, см. следующие разделы в Вики Jetson:
- Nano:https://eLinux.org/Jetson_Nano#Cameras
- Xavier:https://eLinux.org/Jetson_Xavier#Cameras
- TX1/TX2: наборы разработчика включают встроенный модуль сенсора MIPI CSI (0V5693)
Ниже приведено окно Управление захвата данных
, после того как выпадающий список Тип набора данных
был установлен в режим обнаружения (сделайте это первым).
Затем откройте путь к набору данных и метки классов, которые вы создали. Кнопки
Заморозить/Редактировать
и Сохранить
станут активными.
Поместите камеру на объекты в вашей сцене, и нажмите кнопку Заморозить/Редактировать
(или нажмите пробел).Живое изображение камеры будет заморожено, и вы сможете рисовать ограничивающие рамки вокруг объектов. Затем вы можете выбрать соответствующий класс объекта для каждой ограничивающей рамки в таблице классов в окне управления. Когда вы закончите маркировку изображения, нажмите кнопку Заморозить/Редактировать
снова, чтобы сохранить данные и разморозить камеру для следующего изображения.
Другие виджеты в окне управления включают:
Сохранить при разморозке
- автоматически сохраняет данные при разморозке кнопки Заморозить/Редактировать
Очистить при разморозке
- автоматически удаляет предыдущие ограничивающие рамки при разморозкеОбъединить наборы
- сохраняет данные для наборов обучения, проверки и тестированияТекущий набор
- выбор из наборов обучения, проверки и тестирования
Объединить наборы
, данные будут копироваться для обучения, проверки и тестированияКачество JPEG
- управление качеством кодирования и размером диска сохраненных изображений
Важно, чтобы ваши данные собирались с разными ориентациями объектов, точками зрения камеры, условиями освещения и, желательно, с разными фонами для создания модели, устойчивой к шуму и изменениям в окружающей среде.Если вы обнаружите, что ваша модель не работает так, как вы хотели, попробуйте добавить больше данных обучения и экспериментировать с условиями.
train_ssd.py
. Процесс обучения такой же, как и в предыдущем примере, с тем отличием, что аргументы --dataset-type=voc
и --data=<ПУТЬ>
должны быть установлены:
$ cd jetson-inference/python/training/detection/ssd
$ python3 train_ssd.py --dataset-type=voc --data=data/<YOUR-DATASET> --model-dir=models/<YOUR-MODEL>
Примечание: если вы столкнулись с нехваткой памяти или ваш процесс был "прерван" во время обучения, попробуйте Монтирование SWAP и Отключение графического интерфейса.
чтобы сэкономить память, вы также можете уменьшить--batch-size
(по умолчанию 4) и--workers
(по умолчанию 2) Как и раньше, после обучения вам потребуется преобразовать вашу модель PyTorch в ONNX:
$ python3 onnx_export.py --model-dir=models/<YOUR-MODEL>
<YOUR-MODEL>/ssd-mobilenet.onnx
, которую вы сможете загрузить с помощью программы detectnet
как это было сделано в предыдущих примерах:
NET=models/<YOUR-MODEL>
detectnet --model=$NET/ssd-mobilenet.onnx --labels=$NET/labels.txt \
--input-blob=input_0 --output-cvg=scores --output-bbox=boxes \
csi://0
``` > **примечание:** важно запускать инференс с файлом меток, который был сгенерирован в вашем каталоге модели, а не с тем, который вы создали для вашего набора данных. Это связано с тем, что класс `BACKGROUND` добавляется к меткам классов функцией `train_ssd.py` и сохраняется в каталоге модели (который ожидает обученная модель).
Если необходимо, вернитесь и соберите больше данных для обучения и переобучите вашу модель. Вы можете перезапустить обучение с помощью аргумента `--resume` (запустите `python3 train_ssd.py --help` для получения дополнительной информации). Не забудьте переэкспортировать модель в ONNX после переобучения.
## Что дальше
Это последний шаг туториала *Hello AI World*, который охватывает инференс и перенос обучения на Jetson с использованием TensorRT и PyTorch.
Вкратце, мы рассмотрели:
* Использование сетей распознавания изображений для классификации изображений и видео
* Написание собственных программ для инференса на Python и C++
* Выполнение детекции объектов для определения координат объектов
* Сегментацию изображений и видео с использованием полностью сверточных сетей
* Переобучение моделей с использованием PyTorch с помощью переноса обучения
* Сбор собственных наборов данных и обучение собственных моделейДалее мы призываем вас экспериментировать и применять то, что вы узнали, к другим проектам, возможно, используя встроенную форму-фактор Jetson — например, автономного робота или интеллектуальной системы на основе камеры. Вот несколько примеров идей, с которыми вы можете поэкспериментировать:
* использовать GPIO для активации внешних актуаторов или LED при обнаружении объекта
* автономный робот, который может находить или следовать за объектом
* переносной батарейный-питаемый камерный модуль + Jetson + мини-дисплей
* интерактивная игрушка или автоматический диспенсер для вашего питомца
* умный дверной звонок с камерой, приветствующий ваших гостей
Для получения дополнительных примеров, которые могут вдохновить вашу креативность, посмотрите страницу Jetson Projects. Удачи и приятного времяпрепровождения!
Назад | Переобучение SSD-Mobilenet
© 2016-2020 NVIDIA | Содержание
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )