Если честно, я не прогнозирую какого-то существенного доната за свои статьи — я пишу на Хабр не очень часто, и хитов среди статей нет. Пока выглядит так, будто не стоит того.
Но все равно спасибо за напоминание :)
У меня пока нет в планах запускать вторую сетку в моем проекте, но я запускал демо от Intel, в котором было целых пять нейросетей: детектор лица, разметка ориентации головы, разметка особых точек лица, распознавание пола и возраста, распознавание эмоций. По результатам детекции из кадра вырезается фрагмент с лицом, и на нем запускаются остальные сетки. Это было в interactive_face_detection_demo. OpenVINO позволяет запускать несколько нейросеток в одном или разных плагинах, можно, например, одну сетку запустить на GPU, другую на FPGA, а остальные на NCS.
Судя по документации, face-reidentification-retail-0095 действительно нельзя запустить на NCS, но мне сложно сходу сказать, что пойдет не так. Скорее всего, просто некоторые слои не поддерживаются. Кстати, в OpenVINO есть три сетки для ре-идентификации пешеходов, которые работают на NCS (хоть какая-то замена).
На самом деле, все вычисления нейросеток производит NCS, а процессор я указал просто для контекста, так как он играет роль при обработке кадров. Вероятно, еще одна неточность в моем сравнении, которую нужно исправить.
И правда, всего один блокируется (даже проверил сейчас). Тот, что снизу — впритык, но кабель воткнуть можно. Также закрыт Ethernet.
Про FPS тоже все верно — если измерять чистую производительность детектора, получается примерно 14 FPS (в частности, в демо от Intel я такой результат получал), и это значение должно зависеть только от версии USB, поэтому сравнение не совсем честное получается. Но меня все же интересовала реальная производительность связки RPi+NCS с учетом выполнения других вычислений, вот и сделал так. Наверное, надо добавить пояснение в статье, чтобы не было путаницы.
Ну, начнем с того, что обнаружение лиц, распознавание лиц и обнаружение спуфинг-атак — это три разные задачи, которые решаются по-разному.
Мой детектор занимается только обнаружением лиц, и вообще не различает как лица разных людей, так и настоящие лица и напечатанные. Вообще, я не ставил себе задачу сделать state-of-art детектор лиц, я скорее хотел запустить детектор лиц с приемлемым качеством на своем роботе, на конкретном устройстве (и это мне удалось).
В научной литературе достаточно статей про обнаружение спуфинг-атак с разной степенью сложности системы (начиная от анализа текстуры лица и заканчивая RGBD сенсорами и многомодальными системами контроля), и некоторые из них достаточно надежны. В целом, эта тема очень обширная и мало пересекается с темой моей статьи.
Так, это мой косяк. На самом деле проблема не в кабеле, а в версии USB (если на USB 3.0 фактическое время исполнения составляет 92.4 ms, то на USB 2.0 — 102 ms, независимо от наличия кабеля). Видимо, оба кабеля не поддерживают USB 3.0. Сейчас поправлю в статье.
Я не обучал сеть. В статье я указал, что использовал готовую модель. Но вообще для этого есть открытые базы размеченных изображений, на них обычно и производится обучение. К каскадным детекторам это тоже относится, кстати.
В этом есть смысл, если 5-7 fps достаточно (примерно столько выдает Haar на RPi), а я хотел бы выжать больше, и у меня есть подозрения, что это сделать вполне можно (я проверю).
По поводу колки орехов электронным микроскопом: нейросети неплохо решают множество задач, в том числе и обнаружение лиц, так что не вижу причин отказываться от них. Чувствительность к входным данным — это уже свойства модели, и тот же самый каскадный детектор может плохо переваривать перепады в освещении и окклюзии. Если вдруг модель настолько чувствительна к входным данным, то это скорее плохо обученная модель.
В любом случае, я не предлагаю всем использовать нейросети для обнаружения лиц для всех типов задач. Это скорее экспериментирование с NCS — попытка запустить нейросеть в формате, который официально не поддерживается.
Если я правильно вас понял, то детектор на базе OpenCV — это каскадный Haar или LBP. Я пробовал запускать их на RPi, и получил похожую производительность (порядка 5-7 вроде). Проблема в том, что большей скорости можно добиться только за счет сильного падения качества. У меня есть подозрения, что с помощью нейросетки можно добиться порядка 15 fps или больше, если выбрать более «легковесную» архитектуру, но это еще проверить нужно. С нейросеткой, которую я запускал, есть одна проблема — она явно рассчитана на использование видеокарты. Сейчас есть много архитектур, которые позволяют значительно повысить скорость за счет небольшого падения качества (те же Mobile Net, например).
Проверил. Без GPU и CUDNN получается 0.9 fps на core i3 (это в формате Darknet). То есть, ускорение вполне приличное для такого небольшого устройства. Как я и написал в статье, эта архитектура нейросети предполагает использование видеокарты даже на этапе применения.
Если честно, я не проверял. Возможность вполне есть, надо только собрать демо из репозитории, откуда я модель взял. Попробую проверить, мне и самому интересно стало.
Отлично, теперь ждем прорыва в ответах
Но все равно спасибо за напоминание :)
Да, похоже, что OpenCL. Здесь есть упоминание.
Судя по документации, face-reidentification-retail-0095 действительно нельзя запустить на NCS, но мне сложно сходу сказать, что пойдет не так. Скорее всего, просто некоторые слои не поддерживаются. Кстати, в OpenVINO есть три сетки для ре-идентификации пешеходов, которые работают на NCS (хоть какая-то замена).
С GPU я тоже проводил небольшое сравнение, в этом комментарии.
И правда, всего один блокируется (даже проверил сейчас). Тот, что снизу — впритык, но кабель воткнуть можно. Также закрыт Ethernet.
Про FPS тоже все верно — если измерять чистую производительность детектора, получается примерно 14 FPS (в частности, в демо от Intel я такой результат получал), и это значение должно зависеть только от версии USB, поэтому сравнение не совсем честное получается. Но меня все же интересовала реальная производительность связки RPi+NCS с учетом выполнения других вычислений, вот и сделал так. Наверное, надо добавить пояснение в статье, чтобы не было путаницы.
Мой детектор занимается только обнаружением лиц, и вообще не различает как лица разных людей, так и настоящие лица и напечатанные. Вообще, я не ставил себе задачу сделать state-of-art детектор лиц, я скорее хотел запустить детектор лиц с приемлемым качеством на своем роботе, на конкретном устройстве (и это мне удалось).
В научной литературе достаточно статей про обнаружение спуфинг-атак с разной степенью сложности системы (начиная от анализа текстуры лица и заканчивая RGBD сенсорами и многомодальными системами контроля), и некоторые из них достаточно надежны. В целом, эта тема очень обширная и мало пересекается с темой моей статьи.
По поводу колки орехов электронным микроскопом: нейросети неплохо решают множество задач, в том числе и обнаружение лиц, так что не вижу причин отказываться от них. Чувствительность к входным данным — это уже свойства модели, и тот же самый каскадный детектор может плохо переваривать перепады в освещении и окклюзии. Если вдруг модель настолько чувствительна к входным данным, то это скорее плохо обученная модель.
В любом случае, я не предлагаю всем использовать нейросети для обнаружения лиц для всех типов задач. Это скорее экспериментирование с NCS — попытка запустить нейросеть в формате, который официально не поддерживается.