За останні роки завдяки вдосконаленню обчислювальних технологій в галузі штучного інтелекту (ШІ) вже досягнуто величезних успіхів. Минули ті часи, коли штучний інтелект був значною мірою чимось теоретичним і концептуальним. Сьогодні ми не тільки можемо бачити практичні застосування ШІ майже в кожній галузі, але й звикли ним користуватися. Прогрес в області ШІ, без сумніву, є одним з перспективних напрямів розвитку техніки та технологій, але варто і відзначити, що він вимагає великих обчислювальних потужностей.
Спочатку запропонована модель проведення розрахунків на хмарних серверах має свої недоліки, оскільки ШІ та комп'ютери мають доступ до великої кількості особистих даних, що викликає занепокоєння з приводу їх конфіденційності. Великі компанії мають доступ до великої кількості наших персональних даних у своїх хмарних сервісах і користуються всім цим, надаючи послуги ШІ для вирішення різних проблем бізнесів. Крім того, не секрет, що часто відбуваються і витоки даних, а користувачам додатків ШІ доводиться більше турбуватися про свою конфіденційність.
Щоб вирішити ці проблеми та не передавати особисті дані для обробки на хмарні сервери, було зроблено крок до проведення обчислень на стороні користувача та надання альтернативи традиційної моделі хмарних обчислень для додатків ШІ. Вимоги до високої продуктивності обчислень для програм ШІ можуть бути виконані за допомогою виділених обчислювальних процесорів ШІ на пристроях. Сьогодні у смартфонах є процесори для конкретних додатків, які виконують лише обчислювальні завдання ШІ. Один із прикладів включає нейронний процесор 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) при роботі з високонавантаженими програмами для обчислень ШI, або якщо є багато зовнішніх периферійних пристроїв, підключених до ланцюга живлення (частина 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 GPIO) та
- програма могла виводити на РК-дисплей (Raspberry Pi I2C LCD driver).
Після придбання необхідного обладнання та встановлення необхідних програмних бібліотек приступимо до остаточного настроювання нашого ПЗ. Для цього завантажимо фотографії осіб співробітників, для яких дозволено вхід, щоб система розпізнавала їх як авторизованих, якщо вони дивляться на камеру. За винятком написання кодів для включення реле та РК-модуля, загальна програма майже аналогічна коду, наданому в посібнику з установки вище.
Отже, після збирання та монтажу, система виглядає так:
А ось як виглядає приклад реалізації цього проекту розпізнавання осіб для входу в офіс.
Завершуючи статтю можна сказати, що Jetson Nano однозначно підходить для роботи над експериментальними проектами ШІ, такими як цей. NVIDIA також має активну спільноту розробників, де легко знайти рішення, якщо в процесі розробки виникнуть будь-які проблеми, а в інтернеті є безліч ресурсів, які нададуть інформацію про Jetson Nano.
Ну і за таку бюджетну вартість – це безперечно буде ваш правильний вибір!
Замовити та купити NVIDIA Jetson Nano 2GB Developer Kit з доставкою протягом 1-3 днів по всій території України можна в інтернет-магазині evo.net.ua