"Мы можем делать бесплатно то, что некоторые не могут сделать за деньги"

Я не могу забыть свое волнение в 2016 году, когда Movidius, компания, базирующаяся в Сан-Матео, Калифорния, которая разрабатывает специализированный процессор с низким энергопотреблением для компьютерного зрения до того, как была приобретена Intel в сентябре 2016 года, объявила о скором выпуске Neural Compute. Stick, который обещал возможности компьютерного зрения с низким энергопотреблением для сквозных устройств. Я терпеливо ждал до лета 2017 года, когда первые несколько сотен стиков стали доступны широкой публике. Тогда, собственно, мне пришлось ждать до 2018 года, когда менеджер по доставке моей компании смог заказать мне этот.

В настоящее время ЦП (центральный процессор) часто называют мозгом ПК. Но все чаще этот мозг дополняется другой частью ПК, GPU (графическим процессором), который является его душой. Все ПК имеют чипы, которые отображают изображение на мониторах. Потребность в аппаратном ускорителе ИИ привела к инновациям и производству некоторых новых процессорных блоков, таких как TPU (блок тензорной обработки), представляющий собой специализированную интегральную схему (ASIC) для ускорителя ИИ, разработанную Google специально для машинное обучение нейронной сети (2016 г.) и VPU (блок обработки изображений), который представляет собой высокопроизводительное и передовое программное обеспечение для искусственного интеллекта на устройстве (MNCS — один из самых известных VPU со сверхнизким энергопотреблением, низкая стоимость и высокая производительность).

Что такое Intel MNCS?

Мы можем думать о MNCS как о графическом процессоре с питанием от USB, хотя он не является графическим процессором и может использоваться только для предсказания/вывода, не подходит для обучение. Я бы классифицировал MNCS как второй процессор с одной целью: выполнение вычислений нейронной сети зрения. В этом блоге мы будем использовать NCS для классификации изображений и обнаружения объектов.

MNCS не следует не использовать для обучения моделей DNN, она предназначена для запуска развертываемых моделей. Поскольку устройство предназначено для использования на одноплатных компьютерах, таких как Raspberry Pi, энергопотребление должно быть минимальным, даже при сверхнизком энергопотреблении, что делает его непригодным для обучения DNN.

Это действительно низкая стоимость. Вы можете купить устройство на Amazon или в любом из розничных продавцов, перечисленных на сайте Intel.

Под капотом NCS находится процессор Myriad 2, способный работать с производительностью 80–150 GFLOPS. Этот процессор высокопроизводителен, ускоритель зрения и потребляет всего 1 Вт энергии (например, Raspberry Pi потребляет около ~1,2 Вт).

OS

Intel Movidius — это интересное аппаратное обеспечение, которое может работать со встроенной системой, такой как Raspberry Pi, что позволит выполнять вычисления в нейронных сетях. Несмотря на то, что поддерживается только в Linux, мы всегда можем использовать Virtual Box, установить виртуальную машину Ubuntu 16.x (лучше всего для нас: 16.04), чтобы заставить ее работать на платформе Mac или Windows.

Фреймворки

MNCS также поддерживает модели Caffe и TensorFlow, и типичный рабочий процесс выглядит следующим образом.

Таким образом, MNCS имеет два основных применения:

  • Профилирование, настройка и компиляция модели DNN на компьютере разработчика с помощью инструментов, предоставляемых в NCS SDK.
  • Прототип пользовательского приложения на компьютере для разработки, который получает доступ к оборудованию нейронного вычислительного устройства для ускорения выводов DNN с помощью NCS API.

В общем рабочий процесс такой:

  1. Используйте предварительно обученную модель TensorFlow/Caffe или обучите сеть с помощью Tensorflow/Caffe в Ubuntu 16.
  2. Используйте цепочку инструментов NCS SDK для создания графического файла.
  3. Разверните файл графа и NCS на своем одноплатном компьютере под управлением Ubuntu в цветах Linux.
  4. Используйте API MNCS, чтобы отправить файл графика в MNCS и запросить прогнозы для изображений. Обработайте результаты прогноза и выполните действие на основе результатов.

Установка

Если вы не используете ОС Ubuntu Linux, мы рекомендуем вам выполнить следующие шаги перед развертыванием рабочего процесса MNCS:

Настройка виртуальной машины:

Первый шаг — настроить и запустить виртуальную машину (ВМ). Несмотря на то, что существует несколько различных вариантов программного обеспечения для виртуальных машин, Virtual Box является бесплатным, простым в настройке и использовании. Альтернативы, такие как VMWare, могут обеспечить более высокую производительность, если виртуальная машина предназначена для использования в качестве основной рабочей станции.

  1. Скачать виртуальный ящик.
  2. Установите VB с помощью установщика.
  3. Скачать пакет расширений Virtual Box.
  4. Установите пакет расширений Virtual Box с помощью установщика.
  5. Скачать 64-битный ISO-образ Ubuntu 16.04.
  6. Создайте новую виртуальную машину.
  7. Загрузите образ Ubuntu 16.04 в качестве оптического диска на только что созданную виртуальную машину.
  8. Запустите виртуальную машину.
  9. Следуйте инструкциям по установке Ubuntu на виртуальной машине.

Не стесняйтесь настраивать размер памяти и выделение виртуального жесткого диска по своему усмотрению, но имейте в виду, что чрезмерное выделение ресурсов приведет к снижению производительности операционной системы хоста.

Настройка компьютера с Ubuntu 16.04:

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

Обновим систему:

sudo apt-get update && sudo apt-get upgrade

Затем давайте установим кучу пакетов:

sudo apt-get install -y libusb-1.0–0-dev libprotobuf-dev
sudo apt-get install -y libleveldb-dev libsnappy-dev
sudo apt-get install -y libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y git-all
sudo apt-get install -y libatlas-base-dev git automake
sudo apt-get install -y python3-dev python-pip python3-pip
sudo apt-get install -y python3-pillow python3-yaml python3-pygraphviz
sudo apt-get install -y python3-h5py python3-nose python3-lxml
sudo apt-get install -y python3-matplotlib python3-numpy
sudo apt-get install -y python3-skimage python3-scipy
sudo apt-get install -y python3-six python3-networkx
pip install scikit-image

Обратите внимание, что мы не установили libopencv-dev из репозиториев Debian. Если вы это сделали, надеюсь, что это и в последний раз. Фактически, установка OpenCV через apt-get устанавливает более старую версию OpenCV и не устанавливает полную версию OpenCV, кроме того, что она не использует преимущества различных системных операций. Опять же, я не рекомендую этот метод для установки OpenCV. Кроме того, вы можете видеть, что мы устанавливаем целую кучу пакетов, которыми мы обычно предпочитаем управлять внутри виртуальных сред Python с помощью pip.

Поскольку мы используем OpenCV и Python, нам понадобятся привязки python-opencv. Инструкции по установке в блоге Movidius не включают этот инструмент. Вы можете установить привязки python-opencv, введя следующую команду:

sudo apt-get install -y python-opencv

Подключите MNCS и убедитесь, что Stick распознан

Теперь пришло время самой важной части. Это включает в себя обеспечение признания нашей MNCS.

  1. Вставьте карту памяти MNCS в USB-порт.
  2. Используйте команду lsusb в консоли, чтобы определить, распознается ли она Ubuntu. Вы должны увидеть флешку MNCS в списке USB-устройств. ID как 03e7(usb 2) ,ID как 040e(usb 3) .
  3. Если вы используете виртуальную машину, и она не распознана, следуйте приведенным ниже инструкциям.
  4. Перейдите к настройкам виртуальной машины и выберите Порты › USB.
  5. Добавьте новый фильтр для USB 2, указав только идентификатор как 03e7/ добавьте новый фильтр для USB 3, указав только идентификатор как 040e
  6. Запустите виртуальную машину Ubuntu.
  7. Используйте команду lsusb для отображения списка USB-устройств, и теперь накопитель MNCS должен быть распознан.

Установка комплекта разработки программного обеспечения для нейронных вычислений

MNCS SDK необходим для взаимодействия с флешкой Movidius. Оттуда давайте перейдем к нашему рабочему столу в консоли и клонируем NCSDK:

cd ~
cd Desktop
git clone https://github.com/movidius/ncsdk

В каталоге NCSDK мы будем использовать Makefile для установки SDK и сборки примеров.

cd ~/Desktop/ncsdk/
make
sudo make install
sudo make examples

Тестирование установки NCSDK, примеры сборки и запуска

Давайте проверим установку, используя код из NC App Zoo. Убедитесь, что MNCS подключен. Neural Compute App Zoo — это хранилище примеров, демонстрирующих, как можно использовать NC SDK и флешку Movidius для обучения и обработки графов нейронных сетей более эффективно, чем обычные процессоры.

cd ~/Desktop/
git clone https://github.com/movidius/ncappzoo
cd ncappzoo
sudo make install 
cd caffe && make
cd ~/Desktop/ncappzoo/apps/hello_ncs_py
python hello_ncs.py

если точный вывод такой же, как указано выше, поздравляю, ваш MNCS действительно работает.

Первый пример (классификация изображений)

Наконец, мы можем запустить несколько примеров и увидеть Movidius в действии. Первый пример, который мы рассмотрим, — это классификация изображений. Вместо создания собственной модели, на сбор, обработку данных и обучение которой уйдет бесчисленное количество часов, мы просто воспользуемся GoogLeNet — хорошо обученной моделью для классификации изображений от Google. Графический движок, используемый для обработки модели, будет Caffe. Caffe — это широко используемая платформа машинного зрения, которая отлично справляется с задачами, связанными с изображениями.

cd ..
cd apps/image-classifier
python image-classifier.py

Второй пример

Второй пример, который мы рассмотрим, — это обнаружение объектов.

cd ..
cd apps/object-detector
python object-detector.py

Хорошо и плохо

+ :

  • прекрасный образец «USB-оборудования AI»
  • обеспечивает скорость, как и было обещано (80,4 мс для обнаружения объектов на нашей базовой машине)
  • Поддержка малины PI
  • Поддержка Tensorflow и Caffe.
  • репозитории с открытым исходным кодом

— :

  • нужен хост Ubuntu для компиляции нейронной сети (ни Windows, ни OSX, хотя виртуальная машина может подойти)
  • неподходит дляобучения
  • очевидно, он поддерживает только часть зрения ИИ, без обработки естественного языка, ни текста, ни голоса (чат-бот ..).

Иди, мы можем

Хотя на данный момент MNCS поддерживает только Raspbian и Ubuntu, его можно запустить на вашей платформе Windows или ОС с помощью виртуальной машины. Возможно, вскоре мы увидим ИИ на периферийных устройствах, таких как дроны, камеры наблюдения домашней автоматизации и другие устройства IoT, с помощью специальных аппаратных решений, таких как MNCS. На самом деле, будем надеяться, что это будет по уважительной причине

Резюме

Сегодня мы изучили Intel Movidius Neural Compute Stick. Нашей целью было познакомить вас с этим новым устройством для глубокого обучения. Мы также продемонстрировали, как использовать рабочий процесс и API NCS.

В целом, рабочий процесс NCS включает в себя:

  1. Обучение сети с помощью Tensorflow или Caffe на компьютере под управлением Ubuntu. (или просто используйте предварительно обученную модель, как мы)
  2. Использование NCS SDK для создания графического файла.
  3. Развертывание графического файла и NCS на вашем ПК под управлением Ubuntu 16.04.
  4. Выполнение вывода, классификация изображений, обнаружение объектов и т. д.

Сегодня мы пропустили шаги 1 и 2. Вместо этого NCAPPZOO предоставляет графические файлы, которые вы можете сразу начать использовать.

Затем мы запустили скрипт Python для сравнительного анализа классификации и проанализировали результаты, демонстрирующие значительное 5кратное ускорение на нашей машине (графическая карта Nvidia Geforce 920M).

Если вы заинтересованы в расширении возможностей Intel Movidius Neural Compute Stick. Intel спонсирует конкурс на TopCoder.

Так что изучайте примеры и создавайте свой собственный ИИ, делитесь своей отличной работой и помогайте сообществу ИИ формировать будущее.

Надеюсь, вам понравился этот вводный пост о новой MNCS от Intel!