Это мой первый рассказ среднего размера, так что, пожалуйста, потерпите меня и мое отсутствие навыков письма. Если вы не говорите свободно по-английски, я переведу эту историю на румынский или немецкий. (Daca nu vorbești engleză, pot să te ajut traducându-ți acest blog în limba română). Моя цель состоит в том, чтобы иметь возможность писать учебные пособия по машинному обучению для людей, не говорящих по-английски, которые имеют довольно хорошее приложение для реального мира и которые люди, не занимающиеся машинным обучением, могут легко настроить для запуска НЛП, обнаружения объектов, отслеживания и так далее.

Давно хотел поиграться со встраиваемыми платами от Nvidia (удалось поработать только на Raspberry Pis — но они не так хороши для машинного обучения), но так и не получилось. Да, тайм-менеджмент. Но я очень рад, что мне удалось запустить несколько моделей ML на моих платах Jetson (Nano и Xavier agx). Я начну с первого и самого простого способа запустить обнаружение объектов на Jetson Nano.

Во-первых, существует множество интернет-магазинов, в которых можно купить комплект разработчика Jetson Nano. Здесь, в Румынии, также есть несколько интернет-магазинов, и обычно вы получаете их в течение нескольких дней.

Шаг 1) Если у вас нет SD-карты в комплекте для разработки, вам необходимо ее купить. Я бы порекомендовал как минимум 64 ГБ, но если вы просто хотите поиграть, 32 ГБ тоже подойдет.

Шаг 2) Загрузите образ ОС для SD-карты с официального сайта Nvidia: https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write и следуйте инструкциям там. . Я использовал Etcher, и это заняло у меня около 20 минут максимум. !Вы делаете эти шаги на своем ПК или на своем ноутбуке. Если у вас есть только microSD, вы можете использовать адаптер SD-карты. Если у вас нет порта SD-карты, используйте адаптер SD-карта — USB.

Шаг 3) Затем обязательно подключите мышь, клавиатуру и монитор к Jetson nano.

Шаг 4) Загрузка

Шаг 5) Проверьте версию ОС. Совет: всегда используйте команду sudo, если вы не знакомы с Ubuntu. Обычно вы должны запускать Ubuntu 18.04.

Шаг 6) Если вы хотите, вы можете установить программу просмотра/сервера VNC для удаленного доступа. Мой выбор: https://www.realvnc.com/en/connect/download/viewer/

Шаг 7) Проверьте версию Jetpack: sudo apt-cache show nvidia-jetpack

Шаг 8) Вы можете использовать виртуальную среду или Anaconda для установки пакетов и управления ими. Я не использовал ни одного. https://virtualenv.pypa.io/en/latest/ или https://docs.conda.io/en/latest/. Если бы мне нужно было использовать его, я бы начал с conda. Но, как уже было сказано, я не использовал его, потому что не мог заставить его работать. Я пытался и потерпел неудачу.

Шаг 9) Удалите все зависимости и библиотеки Python2. Используйте sudo apt-get purge ‹вставьте сюда ваши имена пакетов›. Обычно это что-то вроде sudo apt-get purge python2* python2-*. Я использовал sudo apt purge -y python2.7-minimal и sudo apt autoremove python. Для проверки вы можете запустить python -V и python3 -V. Обычно команда python должна быть привязана к python2 (что Я не рекомендую использовать) и python3 привязан к python3.

Шаг 9.1) Затем: sudo ln -s /usr/bin/python3 /usr/bin/python, если у вас уже установлен Python3 и вас не волнует версия. Теперь вы можете писать на python только тогда, когда хотите выполнять программы на python3.

Шаг 9.2) В зависимости от того, какая у вас версия Python3 и какая вам нужна, я бы рекомендовал установить нужную вам версию с https://www.python.org/downloads/ и, кроме того, запустить python update-alternatives, а затем выберите индекс версии Python3, которую вы хотите использовать. Это важно! Некоторые вещи не будут работать, если вы используете Python 3.9, а вам нужен 3.7.

Шаг 10) Установите следующие предварительные условия: sudo apt-get install git cmake; sudo apt-get install libatlas-base-dev gfortran; sudo apt-get install libhdf5-serial-dev hdf5-tools; sudo apt-get установить python3-dev

Шаг 10.1) Установите pip из исходного кода: wget https://bootstrap.pypa.io/get-pip.py пакет, а затем запустите python get-pip.py.

Шаг 11) Установите версию Tensorflow для вас Nvidia Jetson Nano. Сначала проверьте версию Jetpack! См. Шаг 7. В моем случае это был «URL/jp46/tensorflow‹2. Да, нам нужен Tensorflow 1, а не Tensorflow 2!

Шаг 12) Установите numpy v1.18.5 с помощью pip install -U numpy==1.18.5. Я думаю, что все ‹1.19.5 должно работать.

Шаг 13) Установите keras v2.3.1 (для версии nvidia jetson nano)

Шаг 14) Клонируйте следующий репозиторий: https://github.com/dusty-nv/jetson-inference, используя клон git https://github.com/dusty-nv/jetson-inference

Шаг 15) Следуйте Readme из репозитория, если есть какие-либо проблемы

Шаг 16) Следуйте процессу установки из файла Readme и настройте необходимые параметры в меню графического интерфейса, которое появляется при установке. Я также установил Pytorch (мало ли что).

Шаг 17) Чтобы запустить обнаружение объектов с их предварительно обученными моделями SSD + MobileNetv2, следуйте руководству HelloAIWORLD DetectNet. https://github.com/dusty-nv/jetson-inference/blob/master/docs/detectnet-console-2.md

Шаг 18) У меня были некоторые проблемы с Python (я получил ошибку: Segmentation fault(core dumped) — поэтому я использовал версию C++. У меня пока нет решения проблемы. Таким образом, пример обнаружения объектов на Jetson Nano находится в : «jetson-inference/detectnet-camera/detectnet-camera.cpp»

Шаг 19) Подключите USB-камеру (или IP-камеру или камеру CSI). У меня была веб-камера USB. Установленный драйвер v4l2 sudo apt-get install -y v4l-utils. ЕСЛИ вы получаете сообщение об ошибке, касающееся отсутствия открытой камеры или ширины и высоты кадра‹0, вам нужно отредактировать приблизительно Строка 39 файла detectnet-camera.cpp и измените значение КАМЕРЫ ПО УМОЛЧАНИЮ с -1 на 0 или любое другое значение вашей камеры. Для этого запустите v4l2-ctl — — list-devices. (2 тире перед списком и пробел между ctl и первым тире). Моя камера была /dev/video0, поэтому ID был 0.

Шаг 20) Поэкспериментируйте с обнаружениями. Я надеюсь, что это помогло кому-то. Это было довольно сложно для меня (мне потребовалось несколько часов в день, чтобы все настроить и запустить).

Я надеюсь, что опубликую больше на Medium и буду держать вас в курсе моего путешествия с досками Jetson. Кроме того, я работаю над запуском обнаружения YOLO в наборе разработчика Nano.