Pull to refresh
20
Karma
0
Rating
Дмитрий Куртаев @dkurt

Нейросетевой хирург из OpenCV

  • Followers 12
  • Following 6

Введение в обработку изображений в Python при помощи Pillow

Если что-то сломано в OpenCV — просим открыть баг репорт. Вообще, билинейная интерполяция это одна из священных войн всего CV где решается вопрос непортируемости и нет победителей и не будет. В том же DL нельзя так просто исправить даже забагованную реализацию, потому что все натренированные к тому моменту сети разойдутся. Взять пример How Tensorflow’s tf.image.resize stole 60 days of my life. А для параллелизма есть встроенный в OpenCV parallel_for о применении которого можно почитать в нашей статье https://m.habr.com/ru/company/intel/blog/489884/.

Самая сложная задача в Computer Vision

Не совсем понял мысль. На то он и удаленный доступ к железу чтобы сделать измерения и сравнить производительность, стоимость, энергопотребление. Разработчику не приобретут всех конфигураций на руки потому что он выберет только одну в итоге. Тут — зашёл и замерил.

Самая сложная задача в Computer Vision

На случай если нет железок, то у Интел есть DevCloud: https://devcloud.intel.com/edge/ (Xeon, Atom, Core, FPGA, VPU, HDDL).

Детектор приседаний на OpenCV и Tensorflow

Sourceforge автоматически берёт бинарники с GitHub Releases страницы

Детектор приседаний на OpenCV и Tensorflow

Последний релиз 4.3.0, просто не доступен через pip на данный момент.

Детектор приседаний на OpenCV и Tensorflow

Надеюсь, c последней версией проблем с OpenCV уже не будет и сможете перебраться) Кстати, можно попробовать OpenCV.js с запуском сети прямо из браузера а хранить проект на GitHub Pages.


Уж такой вот он TensorFlow и Keras, что как минимум по три варианта подграфа хранится в сохраняемых моделях для, казалось бы, одних и тех же слоёв, поэтому выкручиваемся через поиск паттернов или по аналогии с Caffe, с текстовым графом.

Кроссплатформенные оптимизации OpenCV

На самом деле вроде WASM и должен лежать по умолчанию, может та что 300КБ это урезанная версия? Если не ошибаюсь, часть WASM сборки составляет предкомпилированный бинарник и, при загрузке в браузер, там дополнительно происходит какая-то докомпиляция на лету с учётом браузера/железа. Из-за этого производительность в случае WASM должна быть лучше, но может дольше загружаться.

Кроссплатформенные оптимизации OpenCV

Да, пока можно использовать OpenCV.js отсюда: http://docs.opencv.org/master/opencv.js. Но рекомендую скачать один раз и класть рядом. Скоро ещё возродим npm пакет https://www.npmjs.com/package/opencv.js.


Про сборку на всю ночь не верю, простите. 1) Иногда пользователи собирают то, что им не потребуется (модули OpenCV), поэтому есть опция компиляции -DBUILD_LIST, 2) Многие не знают про сборку в несколько потоков (make -j4 для Linux или cmake --build . --config Release -- /m:4 для Windows).

Автономная навигация мобильного робота

Спасибо! Видите также строчку


OpenCV modules
    to be built:

?


Так вот если вы точно знаете, что такие модули как dnn, gapi, features2d вами не используются, то зачем строить? Собирайте только то, что нужно, -DBUILD_LIST опция во времят CMake.

Автономная навигация мобильного робота

Если вы про NEON, то это опция оптимизации: https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options

Автономная навигация мобильного робота

Если сборка через Docker (так или так) не подходит, то проверьте хотябы что выставлены
-DCPU_BASELINE=NEON -DENABLE_NEON=ON


и CMake понимает их:


CPU/HW features:
  Baseline:                    NEON
  required:                  NEON
  disabled:                  VFPV3

Плюс, вы сами написали:


Также, эта библиотека реализована на языках C/C++, что гарантирует быстродействие системы, а ее структура поддерживает различные модули, которые могут быть отключены с целью увеличения производительности.

Это конечно не так, отключение модулей никак не сказывается на производительности. На то она и модульная структура. Но вот на скорости сборки и количестве результирующих библиотек можно сэкономить. Просто укажите флагом только те модули, которые действительно нужны (-DBUILD_LIST=core,imgproc например).

Автономная навигация мобильного робота

Пожалуйста перестаньте советовать собирать OpenCV из исходного кода на RPI. Всё равно неправильно (не включен NEON в данной статье, ну или по крайней мере этого не видно из скриншота summary во время выполнения CMake шага). Если нужен OpenCV на Python и не требуется самого нового функционала, используйте pip.

Локализация QR-кода – важная задача, незаслуженно обделенная вниманием

Я бы настоятельно рекомендовал попробовать более свежую версию. 4.1.1 от июля 2019 и с тех пор было несколько раудов значительных улучшений качества: #15338, #15356, #15637.

Локализация QR-кода – важная задача, незаслуженно обделенная вниманием

Для оценки качества построенных детекторов QR-кодов мы использовали модуль декодирования штрихкодов из библиотеки компьютерного зрения с открытым исходным кодом OpenCV.

Можно уточнить, а сама локализация QR кода тоже выполнялась с помощью существующего в OpenCV алгоритма? Какая версия библиотеки использовалась?

Видео с облачным детектором объектов на Raspberry Pi

Да, внутри можно запустить одну и ту же сеть обрабатывать несколько входов параллельно.

Видео с облачным детектором объектов на Raspberry Pi

У стика главная фича — асинхронное исполнение, не ждать пока данные отправяться, посчитаются и вернуться, а делать параллельно ещё запуск. Можно так и до x2 получить: https://github.com/opencv/opencv/pull/14516


Про неработающий стик на унубту — проверьте udev rules:


$ cat /etc/udev/rules.d/97-myriad-usbboot.rules

SUBSYSTEM=="usb", ATTRS{idProduct}=="2150", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="2485", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"
SUBSYSTEM=="usb", ATTRS{idProduct}=="f63b", ATTRS{idVendor}=="03e7", GROUP="users", MODE="0660", ENV{ID_MM_DEVICE_IGNORE}="1"

Deep Learning, теперь и в OpenCV

AlexeyAB, только всё вместе: https://github.com/opencv/opencv/blob/4e2ef8c8f57644ccb8e762a37f70a61007c6be1c/modules/dnn/CMakeLists.txt#L21


ocv_option(OPENCV_DNN_CUDA "Build with CUDA support" HAVE_CUDA AND HAVE_CUBLAS AND HAVE_CUDNN)

Ноль, один, два, Фредди заберёт тебя

Проект OpenCV, язык C++
bool Jpeg2KDecoder::readHeader()
{
....
cmptlut[0] = ....
cmptlut[1] = ....
cmptlut[2] = ....
if( cmptlut[0] < 0 || cmptlut[1] < 0 || cmptlut[0] < 0 )
result = false;
....
}


Прям чувствуется, как выражение cmptlut[0] < 0 было дважды размножено копированием, но поправили ноль только в одном месте.

Фикс сделали 7 лет назад: https://github.com/opencv/opencv/commit/e87355463f27702f5c398b22b05021f8290e5329

GoLang и OpenCV (OpenVino && Cuda)

Странный вопрос, с учётом того, что автор статьи сделал это вообще возможным и предоставил примеры использования.

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Works in
Date of birth
Registered
Activity