Comments 26
Прекрасная новость! Количество типов слоев «из коробки» приятно удивляет.
Действительно, думаю, что возможные сложности и подводные камни при встраивании в работу openCV-based приложений сторонних фреймворков для работы с DNN многих, как минимум, пугают.
Действительно, думаю, что возможные сложности и подводные камни при встраивании в работу openCV-based приложений сторонних фреймворков для работы с DNN многих, как минимум, пугают.
Очень круто! Молодцы! Очень точно нишу нащупали. Надеюсь что взлетит этот подход.
Да, с поддержкой. Caffe потихоньку умирает переходя в Caffe2. Поддержка на Caffe2 будет?
Да, с поддержкой. Caffe потихоньку умирает переходя в Caffe2. Поддержка на Caffe2 будет?
Это всё на CPU? Немного пролетел мимо понимания, как планируется использовать GPU-ускорители? Только за счёт Halide?
Сейчас dnn использует CPU. Использование GPU планируется добавить с помощью Halide и других бэкендов.
А на CPU для dnn используете самописные оптимизированные функции или какие-то библиотеки?
Спасибо, будем стараться. Насчет caffe2 — это, на самом деле, вопрос приоритетов. Срочность добавления зависит от того, насколько этот фреймворк окажется популярным. Если мы поймем, что пользователям это нужно, или что есть много классных моделей, созданных в caffe2, то с радостью займемся реализаций поддержки. Ну а в долгосрочной перспективе мы, конечно же, за как можно больший охват фреймворков.
Интересно, запустится ли все это дело на Raspberry Pi
Предположительно, должно. Построение OpenCV выполняется, кроме многих других конфигураций, еще и для некоторого числа машин с ARM
Спасибо, обязательно попробую. Как раз есть Raspberry c камерой. Как я понимаю, такие проекты https://svds.com/tensorflow-image-recognition-raspberry-pi/ теперь будет проще делать.
Да, однозначно. Портировать фреймворк теперь не нужно
Конкретно у tensorflow есть свое решение для работы в подобных условиях tfcompile — Using AOT compilation
Не знал о такой возможности у TF, спасибо. Они вообще молодцы, оптимизируют код под CPU, активно развивают фреймворк, оказывается, еще и о мобильных устройствах позаботились
Самое интересное что скоро должен выйти релиз The Qualcomm® Snapdragon™ Neural Processing Engine (NPE) SDK с поддержкой компиляции tensorflow моделей в Hexagon DSP
Может, я не внимателен, но я не увидел UpSampling2D в списке слоев. Он как то по другому называется? Раз с статье упоминаются сети для сегментации — FCN и Enet.
Скорее всего речь о FullConvolution слое. Он используется для того, чтобы увеличить пространственные размерности в моделях для сегментации. И он же в разных источниках называется «In-network Upsampling», «Fractionally-strided convolution», «Backwards Convolution», «Deconvolution», «Upconvolution».
Хотел еще уточнить, реализован ли FullConvolution при экспорте из tensorflow\keras? В tf-importer.cpp не обнаружил что-то похожего.
Мне сделать pull-request?
Если это важно, то я пытаюсь экспортировать несколько модифицированную версию U-net для сегментации.
Мне сделать pull-request?
Если это важно, то я пытаюсь экспортировать несколько модифицированную версию U-net для сегментации.
В данный момент FullConvolution (Deconvolution) не читается при загрузке из tf. Но сам слой реализован (как и его загрузка из Caffe и Torch). Если у вас есть желание и возможность — pull request будет очень кстати. Вам потребуется добавить «конвертацию» параметров из TensorFlow формата в тот, что используется в dnn (для данного слоя фактически Caffe формат). «Конвертация» в кавычках, так как иногда соответствие между параметрами идентичное. Иногда же они могут быть связаны некоторой формулой. В этом и потерубется разобраться. Для удобства можно сохранить tf модель в текстовом виде — так вы сможете непосредственно увидеть имена и значения параметров.
Мы стремимся к тому, чтобы для использования Halide вместе с OpenCV у пользователя не возникало необходимости в
… комфорте?!
Не припомню ни одного случая, когда притянутый экзотический язык в какой-либо фреймворк, приносил пользу.
У пользователя всегда останется выбор, использовать какой-то бэкенд или нет. На данный момент наши эксперименты показывают, что все, что потребуется, пользователю, это указать флаг при вызове cmake. Все остальное будет сделано в фоне. Halide действительно дает ускорение, и пользователю совершенно необязательно знать, как программировать на этом языке, чтобы использовать это ускорение. В любом случае — удобство для пользователей — это то, о чем мы (команда OpenCV) постоянно думаем. Пример тому: OpenCV 2.4 до сих пор фиксится, так как много пользовательского кода использует эту версию, хотя 3.3 уже готова к релизу.
Вау! Проснулся утром, зашел на Хабр и нашел прямо то, что мне нужно в данный момент. Спасибо!
Важно что NVIDIA GPU до сих пор не поддерживается.
Уже поддерживается: https://github.com/opencv/opencv/pull/14827
Привет, nVidia GPU поддерживаются как с CUDA без cuDNN, так и с CUDA + cuDNN?
А касаемо github.com/opencv/opencv/issues/15033 что сейчас реализовано из LSTM?
А касаемо github.com/opencv/opencv/issues/15033 что сейчас реализовано из LSTM?
- LSTM-fullyconnected on CPU
- LSTM-fullyconnected on GPU
- LSTM-convolutional on CPU
- LSTM-convolutional on GPU
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)
Sign up to leave a comment.
Deep Learning, теперь и в OpenCV