Многопроцессный доступ к Intel Neural Computer Stick через REST |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-10-29 19:07 Проблема однозадачности В прошлой серии я поставил на танк Intel Neural Computer Stick 2 и перекинул на него все нейросетевые вычисления, отказавшись от Tensorflow и OpenCV-DNN.
Поиском по форуму поддержки Интела удалось найти похожую проблему. Оттуда нас перебросили на документацию где четко сказано: Single device cannot be shared across multiple processes. На этом эксперименты можно сворачивать и начинать делать многопроцессный доступ. NCS Service Совершенно логично вынести прямую работу с NCS в отдельный сервис, а всем клиентам раздать API через который они и будут работать. NCS API На низком уровне NCS API очень простой: Основной интерфейс Итак, в основной интерфейс входят методы:
Здесь два слова про данным из памяти и файловой системы: Если NCS сервис и его пользователь запущены на одной Raspberry, то есть смысл сэкономить на передаче картинки и вместо этого передать путь, чтобы сервис сам прочитал файл. Если же картинка уже в памяти (или не существует в файловой системе), то передаем ее прямо оттуда. Тесты показывают, что передача байтов из памяти существенно медленнее (измерение сделано на 1000 попыток): Из памяти: 87.5 секунд Путь к файлу: 63.3150 секунд Тем не менее, эти два варианта поддержаны для любого метода, как для общего расчета, так и для специальных случаев ниже. В целом метод inference принимает на вход картинку в виде numpy array и выдает тензор в этом же формате. Как трактовать выхлоп — это уже проблема клиента. Чтобы эту задачу облегчить, сервис поддерживает специализированные методы, которые извлекают из выходного тензора значимую информацию в человеческом виде. Классификация Для классификации заводим отдельный REST-метод, который преобразует выходной тензор в набор пар (class, score).
Как и в случае с обычным выводом, поддерживаются два способа — через файл в памяти и путь на диске.
Детектирование Выходной тензор детектора содержит набор (класс, вероятность, нормированные координаты) и выглядит довольно громоздко.
Как обычно, поддерживаются оба способа:
Сегментация Тензор сегментации содержит вероятности по классам да еще и в размерности нейросети.
Заключение Как уже говорил, изначально я планировал рассказать о сервисе в одной из глав статьи о его использовании, но оказалось что объем тянет на отдельный документ. Ссылки
Источник: habr.com Комментарии: |
|