1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/duping812-jetson-inference

Клонировать/Скачать
pytorch-collect-detection.md 13 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 15:38 5e07e18

Назад | Далее | Содержание
Переносное обучение - Распознавание объектов

# Сборка собственных наборов данных для распознавания объектов Используемый ранее инструмент `camera-capture` также может пометить наборы данных для распознавания объектов из видео в реальном времени: Когда выпадающий список `Тип набора данных` находится в режиме распознавания объектов, инструмент создает наборы данных в формате [Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) (который поддерживается во время обучения).

Примечание: если вы хотите пометить набор изображений, которые у вас уже есть (вместо их захвата с камеры), попробуйте использовать инструмент, такой как 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/duping812-jetson-inference.git
git@api.gitlife.ru:oschina-mirror/duping812-jetson-inference.git
oschina-mirror
duping812-jetson-inference
duping812-jetson-inference
master