За последние годы благодаря усовершенствованию вычислительных технологий в области искусственного интеллекта уже достигнуты огромные успехи. Прошли те времена, когда искусственный интеллект был в значительной степени чем-то теоретическим и концептуальным. Сегодня мы не только можем видеть практические применения ИИ почти в каждой отрасли, но и уже привыкли им пользоваться. Прогресс в области ИИ, без сомнения, является одним из перспективных направлений развития техники и технологий, но стоит и отметить, что он требует больших вычислительных мощностей. 

Изначально предложенная модель проведения расчётов на облачных серверах имеет свои недостатки, поскольку ИИ и компьютеры имеют доступ к большому количеству личных данных, что вызывает озабоченность по поводу их конфиденциальности. Крупные компании имеют доступ к большому количеству наших персональных данных в своих облачных сервисах и во всю этим пользуются, предоставляя услуги ИИ для решения различных проблем бизнесов. Кроме того, не секрет, что часто происходят и утечки данных, а пользователям приложений ИИ приходится больше беспокоиться о своей конфиденциальности.

Чтобы решить эти проблемы и не передавать личные данные для обработки на облачные сервера, был сделан шаг к проведению вычислений на стороне пользователя и предоставлении альтернативы традиционной модели облачных вычислений для приложений ИИ. Требования к высокой производительности вычислений для приложений ИИ могут быть выполнены с помощью выделенных вычислительных процессоров ИИ на устройствах. Сегодня в смартфонах есть процессоры для конкретных приложений, которые выполняют только вычислительные задачи ИИ. Один из примеров включает нейронный процессор Huawei (NPU) в их чипсете Kirin 980. Современные вычислительные чипсеты даже имеют прямую поддержку библиотек машинного обучения.

Единственный пробел на рынке сегодня находится в пространстве IoT (Интернета вещей). Не многие комплекты для разработки с поддержкой микроконтроллеров или более продвинутые одноплатные компьютеры, представленные сегодня на рынке, готовы для приложений ИИ. Продукты под брендом NVIDIA Jetson специально нацелены на этот сегмент рынка. Используя комплект разработчика Jetson Nano разработчики наконец-то получили достаточно хорошую систему для тестирования и развертывания своих приложений с поддержкой ИИ непосредственно на периферии. Все это возможно без необходимости подключения к Интернету или использования облака.

Когда дело доходит до разработки, речь идет не только об оборудовании, но и о поддержке библиотеки программного обеспечения, поддержке разработки и совместимости. NVIDIA Jetson Nano — это привлекательный продукт, способный решить все упомянутые проблемы благодаря накопленному опыту NVIDIA в этой области. Несмотря на то, что он считается уже не самым новым, он заслуженно пользуется огромной популярностью и имеет своё сообщество поклонников в ​​Интернете.

Итак, комплект разработчика NVIDIA Jetson Nano Developer Kit бесспорно является отправной точкой для разработки маломощных и недорогих приложений искусственного интеллекта на периферии.

А вот и он, встречайте:

В данной статье мы опустим технические характеристики модуля NVIDIA Jetson – вы можете найти их на нашем сайте: NVIDIA Jetson Nano 2GB Developer Kit. Отметим только то, что основной особенностью данного набора является его бюджетность при необходимых параметрах для запуска приложений искусственного интеллекта на стороне клиента, и в комплекте разработчика в качестве загрузочного устройства и основного хранилища используется карта microSD. Поэтому важно иметь достаточно быструю и большую карту для ваших проектов. Многие проекты с Jetson Nano 2GB Developer Kit будут использовать пространство подкачки на карте microSD из-за всего 2GB физической памяти. По этой причине мы рекомендуем карты microSD емкостью 64 ГБ или больше (Карта памяти MicroSD 64 GB) с повышенной надёжностью.

 

Распаковка комплекта NVIDIA Jetson Nano Developer Kit

Начать работу с NVIDIA Jetson Nano довольно просто. Для вас представлены инструкции прямо с момента открытия коробки: при извлечении Jetson Nano из упаковки вы увидите краткое руководство и инструкцию от онлайн-видео. В нём показано, как загрузить и прошить карту MicroSD операционной системой Linux4Tegra (являющейся по сути вариантом Ubuntu 18.04, совместимым с оборудованием NVIDIA).

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

 

 

 

 

 

 

На момент выхода микрокомпьютера Jetson Nano в марте 2019 года его актуальным соперником был Raspberry Pi 3. Сравнивая их, мы видим, что Jetson Nano немного больше по размеру:

 

 

Графический процессор на базе Maxwell также предполагает выделение большего тепла, что требует специальный радиатор охлаждения, но это вполне ожидаемо, поскольку он НАМНОГО быстрее, чем Raspberry Pi 3, а также имеет гораздо больше специфических для ИИ вычислительных функций, которых нет в Raspberry Pi 3.

 

Вычислительный модуль Jetson Nano

Однако сам вычислительный модуль NVIDIA Jetson Nano без материнской платы (при установке на которую он уже является полноценным одноплатным микрокомпьютером) имеет значительно меньшие габариты. То есть, на самом деле сам модуль Jetson Nano занимает лишь небольшую часть всего комплекта разработчика.

 

 

Удалив основной модуль Jetson Nano (который поставляется в форме 260-контактного разъема SODIMM) с платы, мы можем увидеть, что материнская плата в основном обеспечивает только ввод-вывод и питание. Основная магия для вычислений ИИ по-прежнему исходит от модуля Jetson Nano.

 

 

Модуль Jetson Nano состоит из GPU, CPU и DRAM. Слот для карты памяти MicroSD также находится непосредственно на этом модуле. Поскольку тепло будет выделяться процессором и графическим процессором, на противоположной стороне этой платы также установлен радиатор для надлежащего охлаждения всего устройства во время его работы.

 

Ввод/вывод и порты

NVIDIA Jetson Nano имеет достаточно широкий набор вводов-выводов. В отличие от простых одноплатных компьютеров, таких как Raspberry Pi 3, Jetson Nano имеет более продвинутую архитектуру, поддерживающую гораздо более высокую пропускную способность. Это дает инженерам возможность предоставлять высокоскоростные интерфейсы, такие как USB 3.0 и порты Gigabit LAN, что обычно редко встречается на других одноплатных компьютерах.

 

 

 

 

 

Обратите внимание, что вам может потребоваться вход питания 5 В / 4 А через разъем постоянного тока (вместо маломощного порта MicroUSB) при работе с высоконагруженными приложениями для вычислений AI, или если есть много внешних периферийных устройств, подключенных к цепи питания (часть 40-контактного разъема расширения).

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

 

Приложения и производительность

А теперь давайте проведем несколько тестов и демонстраций, чтобы понять, насколько эффективен NVIDIA Jetson Nano.

 

Архитектура Maxwell 

Если внимательно посмотреть на Jetson Nano, то его графический процессор основан на архитектуре Maxwell. Эта архитектура, мягко говоря, не особенно нова. Фактически, она была впервые представлена в 2014 году, а архитектура Maxwell второго поколения является основой для видеокарты GeForce GTX 980. Поэтому Jetson Nano имеет такую же производительность, как GTX 980, однако Jetson Nano имеет всего 128 ядер CUDA, а GTX 980 имеет в 16 раз больше — 2048 ядер CUDA.

 

Краткое введение в искусственные нейронные сети

Вычисления ИИ для машинного обучения (в частности, нейронных сетей), состоят из двух частей: обучения модели и логического вывода.

Тяжелые вычисления возникают во время обучения, когда «обученная модель» создается путем нескольких итераций обучения. Искусственные нейронные сети разработаны на основе того, как работает человеческий мозг, и когда происходит обучение/тренировка, нейронная сеть буквально учится и становится лучше, приходя к логическому выводу. Даже если они не могут быть на 100% идеальными, как и человеческий мозг, они всё же могут достигать определенного уровня точности. Затем такие обученные модели могут быть перенесены и «установлены» в механизмы логического вывода, где выводы могут быть сделаны непосредственно.

 

 

NVIDIA Jetson Nano спроектирован так, чтобы брать уже обученную модель из библиотек и быстро делать выводы на основе логических выводов. Следовательно, ему не нужна слишком большая вычислительная производительность, и он не «обучается». Тяжелая работа по обучению новых моделей нейронных сетей уже была проделана в другом месте. Единственное отличие NVIDIA Jetson Nano — это поддержка CUDA (Compute Unified Device Architecture). CUDA — это среда параллельного программирования от NVIDIA, которая использует GPU для параллельных вычислений. Поскольку большинство базовых ЦП могут иметь только ограниченные возможности параллельных вычислений, то когда дело доходит до них, графические процессоры делают это значительно лучше. NVIDIA, выпускавшая изначально видеокарты для графики, извлекла выгоду из этого аспекта своих графических процессоров и разработала для себя индустрию искусственного интеллекта.

На самом деле, большинство платформ искусственного интеллекта и машинного обучения, доступных прямо сейчас, будут поддерживать CUDA для ускоренного обучения и логических выводов. Более того, поскольку видеокарты GeForce созданы для потребителей, они могут быть вполне доступны даже для массового пользователя. Таким образом, Jetson Nano преуспеет, когда дело доходит до вывода на обученных моделях, поскольку он имеет графический процессор с поддержкой CUDA для значительного ускорения такого процесса. Другие одноплатные компьютеры, представленные на рынке, такие как Raspberry Pi, просто не созданы для таких вычислительных сценариев.

С CUDA NVIDIA также открыла Jetson Nano с довольно большой поддержкой программных библиотек AI и комплектов для разработки программного обеспечения (SDK). Именно поэтому Jetson Nano поддерживает самые популярные фреймворки глубокого обучения, такие как Tensor Flow, PyTorch, MxNet, Keras и Caffe.

 

Демонстрация NVIDIA DeepStream SDK

В демонстрации NVIDIA DeepStream SDK Jetson Nano продемонстрировал истинные возможности графического процессора при обработке видео и изображений в реальном времени. NVIDIA DeepStream SDK — это набор программного обеспечения и инструментов для разработчиков, которые создают масштабные приложения для видеоаналитики.

 

 

В приведенном видео мы наблюдаем, что Jetson Nano с легкостью может обрабатывать восемь одновременных видеопотоков. Все эти 8 видеопотоков имеют разрешение 1080p со скоростью 30 кадров в секунду.

 

Невероятно, но при использовании методов логического вывода нейронной сети для каждого из этих видеопотоков с Jetson Nano не было падения частоты кадров. Jetson Nano смог нарисовать рамки привязки на различных объектах во всех 8 видеопотоках одновременно. Определенно впечатляет! Это показывает, насколько хорошо Jetson Nano справлялся с такими рабочими нагрузками с помощью DeepStream SDK.

 

Тесты производительности

В отрасли были предприняты усилия по внедрению вычислительных возможностей ИИ в одноплатные компьютеры. В частности, Intel разработала Neural Compute Stick для Raspberry Pi, чтобы он мог выполнять выводы нейронной сети с некоторой формой ускорения. Однако такое решение дает довольно плохие результаты, вероятно, также из-за низкой пропускной способности используемого интерфейса USB 2.0. Несмотря на то, что это действительно дает некоторое ускорение Raspberry Pi, скорее всего, для такого решения Raspberry Pi скорее не хватает, поскольку изначально он не создавался специально для такого использования.

С другой стороны, CORАL Dev Board, представленная ​​на рынке, использует специализированную интегральную схему (ASIC) для обработки нейронной сети. Однако быть ASIC также означает, что она не будет совместима со многими моделями. Таким образом, несмотря на то, что в некоторых случаях плата разработки Coral работает лучше, чем Jetson Nano, в большинстве других случаев она вообще не может работать.

 

Проект распознавания лиц для системы доступа в помещение

Из сказанного выше, NVIDIA Jetson Nano со своими 128 ядрами CUDA обеспечивает ускоренную обработку ИИ и логические выводы для разработчиков, которые хотят создавать простые ИИ-приложения. А цель нашего приложения — использовать технологию распознавания лиц как средство различения авторизованного и неавторизованного персонала. Как только персонал будет признан авторизованным, система разрешит отпирание физической двери, чтобы разрешить вход в закрытую территорию. Итак, давайте приступим к подробному рассмотрению и описанию конструкции приложения.

 

1. Подбор оборудования

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

  • совместимый модуль камеры для обнаружения и кодирования лиц
  • реле, которое будет подключено к физической двери и послужит механизмом для отпирания двери
  • ну и мы решили внести в проект немного магии, включив ЖК-дисплей, который будет использоваться только для отображения имени персонала при авторизации.

 

 

Чтобы подключить компоненты к плате Jetson Nano, мы использовали схему выводов, показанную по этой ссылке: Jetson Nano J41 Header Pinout.

 

2. Выбор библиотеки распознавания лиц

Мы будем использовать библиотеку распознавания лиц как часть нашей реализации. Репозиторий Github можно найти здесь. Эта библиотека написана на Python (поддерживает 2.7 и 3.3+) и может похвастаться точностью 99,38% в тесте Labeled Faces in the Wild. Кроме того, эта библиотека предоставляет нам богатый набор функций для настройки и реализации наших основных функций.

 

 

3. Установка программных библиотек

ВАЖНО: Не торопитесь и следуйте руководству по установке библиотеки для Jetson Nano здесь: Build a Hardware-based Face Recognition System for $150 with the Nvidia Jetson Nano and Python

 

 

Руководство по установке проведет вас через ряд шагов, от настройки Jetson Nano и до создания вашего первого проекта распознавания лиц. Исходный код, предоставленный автором, может служить основой и для других связанных проектов.

Нам ещё понадобятся две дополнительные программные библиотеки, чтобы:

После приобретения необходимого оборудования и установки необходимых программных библиотек приступим к окончательной настройке нашего ПО. Для этого загрузим фотографии лиц сотрудников, для которых разрешён вход, чтобы система распознавала их как авторизованных, если они смотрят в камеру. За исключением написания кодов для включения реле и ЖК-модуля, общая программа почти аналогична коду, предоставленному в руководстве по установке выше.

Итак, после сборки и монтажа, система выглядит так:

 

 

А вот как выглядит пример реализации этого проекта распознавания лиц для входа в офис.

 

 

Завершая статью можно хочется сказать, что Jetson Nano однозначно подходит для работы над экспериментальными проектами ИИ, такими как этот. У NVIDIA также есть активное сообщество разработчиков, где легко найти решения, если в процессе разработки возникнут какие-либо проблемы, а в интернете доступно множество ресурсов, которые предоставят информацию о Jetson Nano.

Ну и за такую бюджетную стоимость – это определенно будет ваш правильный выбор!

 

Заказать и купить NVIDIA Jetson Nano 2GB Developer Kit с доставкой в течение 1-3 дней по всей территории Украины можно в интернет-магазине evo.net.ua