У стика главная фича — асинхронное исполнение, не ждать пока данные отправяться, посчитаются и вернуться, а делать параллельно ещё запуск. Можно так и до x2 получить: https://github.com/opencv/opencv/pull/14516
Про неработающий стик на унубту — проверьте udev rules:
magistr7, по постановке задачи — визуальный навигатор. Детектор распознаёт повседневные объекты и даёт обратную связь, как они расположены относительно камеры. Пример применения — помощь слабовидящим или незрячим людям. Управление голосом (скажем, выбрать один тип объекта и отслеживать, пока расстояние до него не станет достаточным, чтобы взять).
В AIY Vision Kit только Myriad 2 (это Neural Compute Stick первого поколения). Второе поколение стика носит Myriad X. С Vision Bonnet не всё так просто — там чип это не USB девайс: Raspberry Pi связывается с бордой по своему каналу, которая уже работает с чипом.
Попробуйте прямо оригинальную модель загрузить в OpenCV и выставить net.setPreferableTarget(DNN_TARGET_MYRIAD), если не заведется — пришлите пожалуйста модель, чтобы можно было попробовать.
Я бы сказал, что ускорение даже должно быть. То, что вес модели меньше в 4 раза — это хорошо, но не главное.
Модели обучаются в FP32 режиме — для создания INT8 веса квантизуют, с учетом активаций нейронов (назвали калибровкой). Потребуется 1-2 тысячи картинок-примеров из вашей задачи, чтобы собрать статистики.
У ENet есть одна неприятная особенность, связанная с обучением на Cityscapes — на всех изображениях присутствует фрагмент капота Mercedes, отчего, можно заметить, сеть продолжает выделять на всех Ваших примерах полукруг как background внизу кадра.
Все же автор использует Raspberry, где ARM CPU. OpenVINO подойдёт разве что для запуска на Movidius (ну или попробовать OpenCV оттуда, вдруг забыли какие-то флаги оптимизации выставить). Поэтому вариант с уменьшением размеров картинки в несколько раз, как по мне, пока наиболее перспективный.
Хотелось бы уточнить, пробовали ли запускать OpenCV с OpenCL на Mali? То есть вопрос про то, поддерживает ли OpenCV Mali вообще или наблюдается проблема с этой версией?
Вопрос в поддержке. CUDA модули были перенесены в opencv_contrib, в котором требования к изменениям более гибкие, чем в главном репозитории. Тестирование проводится, а вот развитие — уже на стороне заинтересованных пользователей. С 4.0.0 тем не менее 12 коммитов есть (git rev-list -v --no-merges d511587..2c32791 modules/cud*).
Рекомендую посмотреть в сторону асинхронного запуска сети на стике. Для face detection сети из OpenCV (SSD, 300x300), синхронное использование стика даёт около 26FPS, асинхронное — 53FPS (смотрите https://github.com/opencv/opencv/pull/14516).
Не рассматривали вариант с iGPU? С half precision floating point (DNN_TARGET_OPENCL_FP16 в терминах OpenCV) обычно быстрее чем CPU.
Еще не понял, почему старый Corei7 3770 работает горазо лучше через OpenVino. Вы там какое-то графическое ядро к вычислениям подключаете?
У OpenVINO внутри mkl-dnn для CPU. Все вычисления честно на CPU.
У стика главная фича — асинхронное исполнение, не ждать пока данные отправяться, посчитаются и вернуться, а делать параллельно ещё запуск. Можно так и до x2 получить: https://github.com/opencv/opencv/pull/14516
Про неработающий стик на унубту — проверьте udev rules:
AlexeyAB, только всё вместе: https://github.com/opencv/opencv/blob/4e2ef8c8f57644ccb8e762a37f70a61007c6be1c/modules/dnn/CMakeLists.txt#L21
Фикс сделали 7 лет назад: https://github.com/opencv/opencv/commit/e87355463f27702f5c398b22b05021f8290e5329
Странный вопрос, с учётом того, что автор статьи сделал это вообще возможным и предоставил примеры использования.
Уже поддерживается: https://github.com/opencv/opencv/pull/14827
С обученным U-Net можно обратно в OpenCV — нейронные сети не обучаются, но запускать можно.
magistr7, по постановке задачи — визуальный навигатор. Детектор распознаёт повседневные объекты и даёт обратную связь, как они расположены относительно камеры. Пример применения — помощь слабовидящим или незрячим людям. Управление голосом (скажем, выбрать один тип объекта и отслеживать, пока расстояние до него не станет достаточным, чтобы взять).
Ну хотя бы раз-два (есть одна в оригинальном формате, чтобы можно было использовать как базу для тренировки: https://github.com/opencv/open_model_zoo/pull/69)
И нейросетевые детекторы там тоже есть:
раз: https://github.com/opencv/opencv/tree/master/samples/dnn/face_detector
два-пять: https://github.com/opencv/open_model_zoo/tree/master/intel_models
В AIY Vision Kit только Myriad 2 (это Neural Compute Stick первого поколения). Второе поколение стика носит Myriad X. С Vision Bonnet не всё так просто — там чип это не USB девайс: Raspberry Pi связывается с бордой по своему каналу, которая уже работает с чипом.
Попробуйте прямо оригинальную модель загрузить в OpenCV и выставить net.setPreferableTarget(DNN_TARGET_MYRIAD), если не заведется — пришлите пожалуйста модель, чтобы можно было попробовать.
Есть пакет OpenVINO тулкита (внутри и OpenCV и движок для Movidius стиков): https://download.01.org/opencv/2019/openvinotoolkit/R1/l_openvino_toolkit_raspbi_p_2019.1.094.tgz
Ну как бы есть же, чем иначе объяснить влечение сети оставлять пиксели снизу, но не слева, например?
На всякий случай,
Описания: https://github.com/opencv/open_model_zoo
Сами модели: https://download.01.org/opencv/2019/open_model_zoo/R1/models_bin/
Я бы сказал, что ускорение даже должно быть. То, что вес модели меньше в 4 раза — это хорошо, но не главное.
Модели обучаются в FP32 режиме — для создания INT8 веса квантизуют, с учетом активаций нейронов (назвали калибровкой). Потребуется 1-2 тысячи картинок-примеров из вашей задачи, чтобы собрать статистики.
У ENet есть одна неприятная особенность, связанная с обучением на Cityscapes — на всех изображениях присутствует фрагмент капота Mercedes, отчего, можно заметить, сеть продолжает выделять на всех Ваших примерах полукруг как background внизу кадра.
Все же автор использует Raspberry, где ARM CPU. OpenVINO подойдёт разве что для запуска на Movidius (ну или попробовать OpenCV оттуда, вдруг забыли какие-то флаги оптимизации выставить). Поэтому вариант с уменьшением размеров картинки в несколько раз, как по мне, пока наиболее перспективный.
Хотелось бы уточнить, пробовали ли запускать OpenCV с OpenCL на Mali? То есть вопрос про то, поддерживает ли OpenCV Mali вообще или наблюдается проблема с этой версией?
Вопрос в поддержке. CUDA модули были перенесены в opencv_contrib, в котором требования к изменениям более гибкие, чем в главном репозитории. Тестирование проводится, а вот развитие — уже на стороне заинтересованных пользователей. С 4.0.0 тем не менее 12 коммитов есть (
git rev-list -v --no-merges d511587..2c32791 modules/cud*
).BTW, для dnn этим летом, вероятно, появится поддержка CUDA backend (в рамках Google Summer of Code): https://github.com/opencv/opencv/issues/14585.
Рекомендую посмотреть в сторону асинхронного запуска сети на стике. Для face detection сети из OpenCV (SSD, 300x300), синхронное использование стика даёт около 26FPS, асинхронное — 53FPS (смотрите https://github.com/opencv/opencv/pull/14516).
Не рассматривали вариант с iGPU? С half precision floating point (DNN_TARGET_OPENCL_FP16 в терминах OpenCV) обычно быстрее чем CPU.
У OpenVINO внутри mkl-dnn для CPU. Все вычисления честно на CPU.