Comments 8
священные роды,
великие с малыми
Хеймдалля дети!
Один, ты хочешь,
чтоб я рассказала
о прошлом всех сущих,
о древнем, что помню
Была бы интересна оценка — с Мовидиусом и без.
CopterSpace, В данном случае у нас алгоритм состоит из двух частей: нахождение лиц и затем, по лицу, определить положение головы. Все найденные лица вырезаются из кадра и приводятся к единому размеру (60x60). То есть если говорить про качество — важно отдельно оценивать детектор и предсказатель углов.
Про сравнение с Мовидиусом и без. Две эти сети сохранены в формате, который можно запускать только через OpenVINO — а это значит, что только на железе Intel (CPU, GPU, FPGA, VPU (Movidius)). Для Raspberry Pi доступен только режим запуска на Movidius (или через OpenCV, но уже не Intel сетей, а других публичных). Альтернатива — попробовать взять публичную сеть и запустить как на CPU, так и на Movidius (через тот же OpenCV).
Конкретно для этих двух сетей, этого скрипта, и того, что у меня лежит дома (Movidius Neural Compute Stick первой версии и Raspberry Pi 2 model B) — детектор отрабатывает за 72-75 миллисекунд (около 14 FPS), предсказание углов — 10-11 миллисекунд (около 100 FPS). Детектор можно разогнать, подавая ему на вход изображение размера не 300x300, а меньше. Мы (OpenCV) так сделали для JavaScript примера с похожей сетью (там 128x96 вход). Какой размер брать — зависит от потребностей в балансе качества против скорости.
Хочу обратить внимание, что эти числа можно воспроизвести только указывая ddepth=cv.CV_8U
, что значит, что на стик по USB отправляются не FP32, а U8, которые конвертируются уже на девайсе. Такой трюк необходим потому, что на RPI USB 2.0 и чем меньше отсылаем данных — тем быстрее общий FPS.
Intel OpenVINO на Raspberry Pi: урожай 2018 года