![](https://habrastorage.org/webt/50/ur/xz/50urxzos6joxyapv5ogomdp9dkm.png)
Мы завершаем очередную итерацию Хабра рубрики «Задай вопрос эксперту Intel», посвященную Deep Learning и Intel OpenVINO Toolkit. По не очень ясным для нас причинам активность читателей Хабры в этот раз была намного ниже обычной, однако в Intel не занимать увлеченных людей — недостающие для полноты картины вопросы были собраны оффлайн. И да, победитель конкурса на лучший вопрос у нас тоже есть — о нем, по традиции, в конце поста.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Какие преимущества даёт пользователю OpenVINO и почему им нужно пользоваться?
Юрий Горбачев. Основное преимущество продукта – производительность, минимальный размер и практически нулевое количество зависимостей. Именно эти требования мы выделяем как главные при разработке продукта.
Продукт идеально подходит для реализации приложений, использующих Deep Learning и Computer Vision для решения задач. К примеру, производительность нашего продукта при вычислении сетей на платформах Intel в разы выше по сравнению с популярными фреймворками. Также у нас значительно ниже требования по используемой памяти, что актуально для ряда приложений. Банально, на некоторых платформах невозможно запустить сеть с использованием фреймворков по причине нехватки памяти.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Можно ли тренировать сети посредством OpenVINO на Intel платформах? Скажем, очень интересно, можно ли тренировать на платформах Nervana?
Юрий Горбачев. Нет, поддержка тренировки не включена в продукт. Приличную часть улучшений мы получаем как раз за счет того, что не рассчитываем на то, что продукт будет использоваться в тренировке (к примеру переиспользование памяти, фьюзинг слоёв и т. д.).
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Почему для запуска нейронных сетей нельзя просто использовать фреймворки, в которых сеть была натренирована? Что даёт Deep Learning Inference Engine в сравнении с фреймворками? Зачем вообще мне менять что-то?
Юрий Горбачев.Использовать, само собой, можно. Но если нужна самая лучшая производительность – выбор в пользу OpenVINO достаточно легко объяснить.
Производительность Deep Learning Inference Engine на текущий момент – самая лучшая на платформах Intel. Мы публикуем результаты в сравнении с популярными фреймворками, наверное, повторять их тут нет смысла. Могу сказать только что даже версии фреймворков, использующие библиотеки Intel, проигрывают в производительности нашему продукту.
Кроме того, Deep Learning Inference Engine – единственный продукт, который поддерживает запуск сетей популярных фреймворков на всех платформах Intel и под управлением различных операционных систем. В качестве примеров приведу следующие сценарии:
- Запуск сетей на FPGA возможен только посредством OpenVINO
- Запуск Caffe/TensorFlow/MXNet сетей на Intel GPU & Movidius.
- Полноценный запуск на сетей на платформах Интел под управлением Windows OS
Вообще, запуск под управлением Windows – отдельная история. Не все фреймворки поддерживают такой запуск «из коробки», к примеру, запуск caffe не очень прост. TensorFlow поставляет бинарники для Windows, но, если нужно внести модификации и перестроить – может быть проблема. В то же самое время, мы видим что запуск на Windows часто востребован.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
За каким форматом промежуточного представления архитектуры сетей будущее? Планируется ли в OpenVINO поддержка NNEF?
Юрий Горбачев. На текущий момент наибольшей популярностью пользуется стандарт ONNX. Это, скорее, следствие поддержки со стороны Facebook, Microsoft и других игроков. В частности, WinML принимает на вход ONNX для выполнения и предоставляет неплохой инструментарий для работы с этим форматом. Я скептически отношусь к стандартизации таких вещей в целом. К сожалению, практика показывает, что как только разговор переходит в плоскость комитетов по стандартизации, в которых заседают представители разных компаний, реализующих свои продукты, прогресс сильно тормозится. Уже сейчас налицо проблема, что ONNX не достаточен для того чтобы выразить набор существующих сетей. К примеру, Mask-RCNN, разработанная самим Facebook, не поддерживается в ONNX. Также как и сети семейства SSD и Faster-RCNN.
NNEF мы к поддержке не рассматриваем — не было запросов от заказчиков и, объективно говоря, используется этот стандарт не часто. На практике я видел этот стандарт в использовании только один раз. К слову, та компания имеет контракт с Khronos Group.
Какие существуют средства анализа эффективности работы Intel GPU при одновременном инференсе нескольких сетей?
Юрий Горбачев. Думаю, наиболее подходящим продуктом будет Intel vTune. Мы пользуемся им в разработке сами, показывается достаточно много полезной информации и, если этот продукт освоить хотя бы на базовом уровне – это существенное подспорье. Кстати, в Deep Learning Inference Engine поддерживается возможность реализации слоёв самому. И вот в процессе этой реализации пользоваться профайлером, вероятно, всё равно придётся, чтобы достичь наилучшей производительности.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Исследователи определили уникальный «дыхательный отпечаток» для 17 различных заболеваний, таких как рак почек или болезнь Паркинсона, и разработали устройство, которое отображает образцы дыхания с точностью 86%, используя массив наномасштабных датчиков и анализируя результаты с помощью методов искусственного интеллекта. И в связи с этим возник вопрос: «Как вы считаете, до какой степени в медицине сможет развиться AI и будет ли возможно при помощи него объединить человеческий мозг с компьютером?
Юрий Горбачев. Развитие AI в медицине происходит уже сейчас, в основном, на достаточно базовом уровне, но шаги достаточно чётко прослеживаются. Становятся популярными подходы по сегментации МРТ изображений с помощью сетей, наши заказчики уже анализируют наиболее производительные платформы для таких задач – свидетельство того, что продукты готовятся к выходу. Мне кажется важным, что часто использование сетей преследует не только цели ускорения, но и улучшения качества диагностики.
Про синергию компьютера с человеческим мозгом думать пока страшновато. По крайней мере, выглядит так что текущие методы решения AI задач достаточно топорны по сравнению с человеческим мозгом.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Пытался интегрировать openVINO и ROS, у меня это не получилось, вопрос, как правильно интегрировать OpenVINO в ROS?
Юрий Горбачев.Ответить на вопрос несколько сложно, не понятно, что не получилось. Самым базовым способом может быть линковка конкретного ROS узла c OpenVINO. Мы сами таким способом пользовались, работало.
Рекомендую задать более детальный вопрос на нашем форуме, там вам помогут, наша команда отвечает на вопросы там вместе с командой поддержки продукта.
В обработке биомедицинских изображений зачастую используются пятимерные входные данные, трехмерные свертки и прочие операции. Есть ли / планируется ли их поддержка? Есть ли / планируется ли поддержка рекурсивных сетей, сетей (или отдельных слоев) с общими наборами параметров?
Юрий Горбачев. Да, поддержку трехмерных сверток и пулинга мы планируем и реализуем. Думаю, можно ожидать выход версии продукта с поддержкой уже к концу года. Там же будет поддержка рекуррентных сетей (LSTM/RNN).
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Почему в состав OpenVINO входит библиотека OpenCV в бинарном виде? Ведь любой может скачать и построить её самостоятельно.
Юрий Горбачев. Причины достаточно банальны. OpenCV доступен в виде исходников и построение его, в сущности, несложная задача. Несколько сложнее построить наиболее эффективный пакет. Часто это вызывает вопросы и нами было принято решение просто предоставить готовый пакет. Мы не пользуемся какой-то особой магией, просто строим правильно и с правильными опциями.
Само собой, пользоваться им необязательно, но я бы рекомендовал сравнить производительность приложения с ним и с кастомным билдом. В ряде случаев заказчики смогли ускорить свои приложения просто потому, что переключились на наш дистрибутив.
Также, в случае поставки OpenVINO, модуль OpenCV DNN использует Inference Engine в качестве движка для запуска сетей. В среднем это даёт ускорение по меньшей мере в 2 раза по сравнению с кодом в OpenCV.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
В состав OpenVINO входят натренированные модели. В чем их отличие от моделей, которые доступны в сети? Можно ли их использовать в приложениях и есть ли ограничения на коммерческое использование?
Юрий Горбачев. Действительно, в составе OpenVINO присутствуют модели, использование которых не накладывает абсолютно никаких ограничений (кроме попыток реконструировать оригинальную модель из формата промежуточного представления) и не требует подписания лицензионного соглашения.
Отличий от публичных моделей два:
- Производительность и размер моделей. Все поставляемые модели решают узкую задачу (к примеру детектирование пешеходов) и это позволяет нам значительно уменьшить их размер. В случае публичных моделей делается попытка решить более общую задачу (детектирование нескольких классов объектов) и это требует гораздо более вычислительно сложных моделей с большим количеством параметров. В приведённом выше примере (детектировании пешеходов) наша модель может решать задачу в 10+ раз быстрее, чем публичная с не худшим качеством.
- Решение экзотических задач. Часто бывает так, что задача не вызывает особого интереса у академического сообщества и найти публичную модель непросто. К примеру, детектирование углов поворота головы или анализ возраста и пола. В таком случае, наша модель освобождает вас от необходимости находить датасет и тренировать модель.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Выглядит так, что несколько моделей делают одно и то же, к примеру, детектирование лиц. Зачем их так много?
Юрий Горбачев. Отличий два:
- Соотношение скорость\качество. Некоторые модели могут работать значительно быстрее, за счёт незначительной потери в качестве. В зависимости от требований приложения можно выбрать то или другое.
- Разные условия постановки задачи. К примеру угол съемки человека может влиять на качество детектирования и мы предоставляем 2 модели для разных случаев.
Следует отметить что для моделей существует файл с описанием, там можно посмотреть цифры производительности, аккуратность модели и примеры изображений, которые ожидаются на вход, т.е. описание сценария.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Почему не поддерживаются рекуррентные сети? Планируется ли поддержка специфических примитивов и топологий, использующих эти примитивы?
Юрий Горбачев. Поддержка реализуется, это банальный вопрос времени и приоритетов. Думаю, к концу года мы должны реализовать эту функциональность и ещё ряд нововведений.
![image](https://habrastorage.org/webt/59/cf/6b/59cf6b8d57817194264534.png)
Что делать если я пытаюсь импортировать модель и у меня выдаются ошибки. Можно ли самому решить это или обязательно нужно идти в поддержку? Будут ли меня вообще поддерживать?
Юрий Горбачев. На текущий момент вы вполне можете обратиться на форум поддержки, мы отвечаем на достаточно большое количество вопросов и решаем проблемы. Нужно отметить что Model Optimizer компонент – это набор скриптов python. В принципе, это означает, что можно посмотреть и починить что-то самому, если в этом есть интерес.
Мы также планируем релиз исходного кода – это должно позволить делать более сложные вещи, чем устранение ошибок.
Ну а победителем конкурса становится Хабраюзер S_o_T с вопросом относительно поддержки NNEF. Поздравляем!