Начало работы с комплектом разработчика NVIDIA Jetson Nano: вывод с использованием изображений, видеопоток RTSP


В прошлом месяце мы получили комплект разработчика NVIDIA Jetson Nano вместе с охлаждающим вентилятором 52Pi ICE Tower, и основная цель состояла в том, чтобы сравнить производительность платы со стандартным теплоотводом или комбинированным — радиатором 52Pi + вентилятор.

Стандартный радиатор хорошо справляется с охлаждением платы, и типичные нагрузочные тесты процессора не приводят к дросселированию процессора. Поэтому, нам пришлось обратить внимание и на графический процессор, поскольку для его настройки требуются некоторые усилия. Расскажем вам о нашем опыте настройки платы и запуска программ тестирования AI, включая запуск обнаружения объектов в видеопотоке RTSP.

Настройка платы NVIDIA Jetson Nano

Подготовка платы очень похожа на то, что вы делаете с другими SBC, такими как Raspberry Pi, и у NVIDIA есть хорошее руководство по началу работы, поэтому мы не будем вдаваться в подробности. Обобщим:

  1. Загрузите последнюю версию прошивки (на момент написания обзора, это nv-jetson-nano-sd-card-image-r32.2.3.zip )
  2. Перепишите его с помощью balenaEtcher на карту MicroSD, поскольку в комплекте разработчика Jetson Nano нет встроенной памяти.
  3. Вставьте карту MicroSD в слот под модулем, подключите HDMI, клавиатуру и мышь, прежде чем, наконец, включить плату

По умолчанию плата рассчитана на питание от источника 5 В через порт micro USB. Но, чтобы избежать возможных проблем с питанием, мы подключили источник питания 5 В/3 А к разъему постоянного тока и установили джампер на разъеме J48 для переключения источника питания.

Плата быстро загрузилась в Ubuntu, и, после прохождения мастера настройки, чтобы принять пользовательское соглашение, выбрать язык, раскладку клавиатуры, часовой пояс и настроить пользователя, система выполнила некоторые настройки, и через пару минут мы были готовы идти.

Информация о системе Jetson Nano и инструменты NVIDIA 

Вот некоторая информация о системе после обновления Ubuntu с помощью dist-upgrade:

Загруженные модули:

GPIO, кажется, правильно настроен:

Nvidia Power Model Tool позволяет нам проверить режим питания:

MAXN — это режим мощности 10 Вт. Мы можем изменить его на 5 Вт и проверить его следующим образом:

NVIDIA также предоставляет утилиту tegrastats, которая сообщает в реальном времени о загруженности, температуре и потреблении энергии различными частями процессора:

Звучит довольно странно, так что вы можете проверить документацию . Например, на холостом ходу, как показано выше, у нас используется два ядра на частоте всего 102 МГц, температура процессора составляет около 35 ° C, графический процессор в основном не используется, а энергопотребление платы составляет около 1,1 Вт.

AI Hello World

Лучший способ начать работу с выводами AI — использовать образцы Hello World, которые устанавливаются следующим образом:

Последняя команда выведет диалоговое окно Hello AI World для выбора моделей, которые вы хотели бы использовать. Мы использовали установленные по умолчанию

После загрузки выбранных моделей вам будет задан вопрос, хотите ли вы установить PyTorch:

Если вы собираетесь воспользоваться только предварительно обученными моделями, устанавливать его не нужно, но мы выбрали PyTorch v1.1.10 для Python 2.7 на тот случай, если у нас будет время попробовать обучение.

Теперь мы можем построить образец:

Затем сверьте вывод изображения с образцом изображения, используя ImageNet:

Вот вывод последней команды:

Также был сгенерирован output_0.jpg с информацией вывода «97.858 orange», наложенной поверх изображения.

Tiny YOLO-v3

Образец imageNet не занимает много времени, поэтому мы также попробовали образец Tiny-Yolo3, который имеет 500 изображений, как описано в сообщении на форуме :

После того, как мы создали образец, у нас есть еще немного работы. Сначала мы скачали из сети 5 изображений с типичными объектами:

отредактировали ~ / deepstream_reference_apps / yolo / data / test_images.txt, чтобы повторить ниже 5 строк 100 раз, чтобы получить 500 записей:

и, наконец, изменили ~ / deepstream_reference_apps / yolo / config / yolov3-tiny.txt для использования точности kHALF:

Теперь мы можем запустить вывод Tiny YOLO

Это вывод (не первый запуск):

Этот образец используется только для теста, и для каждого логического вывода потребовалось 30,70 мс, поэтому мы имеем скорость вывода около 32 кадров в секунду. Этот образец не сообщает данные о выводе и ничего не отображает на дисплее.

Обнаружение объектов из потока RTSP

Теоретически, мы могли бы зациклить образец Tiny Yolov3 для стресс-тестирования, но чтобы постоянно нагружать GPU, лучше всего сделать вывод на видеопотоке. Часть образца Detenet-Camera из Jetson Inference (известная как AI Hello World) может выполнять эту работу, если у вас есть совместимая USB-камера.

У нас есть две старые веб-камеры, которые мы купили 10-15 лет назад. Нам никогда не удавалось заставить Logitech Quickcam работать в Linux или Android, но раньше мы могли использовать меньшую камеру «Venus 2.0» в обеих операционных системах. На этот раз нам так и не удалось заставить последнюю работать ни в Jetson Nano, ни в ноутбуке Ubuntu 18.04. Если вы хотите получить камеру MIPI или USB, которая наверняка работает с платой, ознакомьтесь со списком совместимых камер .

Но, потом мы подумали … эй, у нас есть одна камера, которая работает! Веб-камера на  ноутбуке. Конечно, мы не можем просто подключить его к плате NVIDIA, и, вместо этого,  мы запустили поток H.264 с помощью VLC:

cvlc — это утилита командной строки для VLC. Мы также могли воспроизводить поток на ноутбуке:

У нас было отставание около 4 секунд, и мы подумали, что установка опции сетевого кэширования на 200 мс может помочь, но вместо этого, видео было кусками Так что проблема в другом, и у нас не было времени заняться этим. Важной частью является то, что нам удалось заставить поток работать:

Когда мы пытались воспроизвести поток в Jetson Nano с помощью VLC, всплыла ошибка сегментации. Но, давайте не будем зацикливаться на этом, а посмотрим, сможем ли мы сделать detectnet-camera для работы с нашим потоком RTSP.

Кто-то уже делал это несколько месяцев назад, так что это очень помогло. Нам нужно отредактировать исходный код ~ / jetson-inference / build / utils / camera / gstCamera.cpp в двух частях файла:

  1. Отключите обнаружение камеры CSI в gstCamera::ConvertRGBA:

2. Жестко запрограммируйте поток RTSP в gstCamera:: buildLaunchStr:

Теперь мы можем восстановить образец и запустить программу:

и успех! При условии, что мы держим на голове массивный пончик, а Санта-Клаус — плюшевый мишка…

Консоль постоянно обновляется с обнаруженными объектами и отчетом о времени.

Этот пример — хороший способ начать подключать одну или несколько IP-камер к Jetson Nano, чтобы использовать AI для снижения ложных предупреждений вместо примитивного PIR-обнаружения, часто используемого в камерах наблюдения. Мы поговорим подробнее об использовании процессора и графического процессора, а также о тепловых нагрузках в следующем посте.

Нам хотелось бы поблагодарить Seeed Studio за отправку нам комплекта разработчика NVIDIA Jetson Nano для оценки. Комплект продается за 99,00 $ плюс доставка. Кроме того, вы также можете найти плату на Amazon или напрямую у NVIDIA.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.