Pull to refresh

Comments 26

Прекрасная новость! Количество типов слоев «из коробки» приятно удивляет.

Действительно, думаю, что возможные сложности и подводные камни при встраивании в работу openCV-based приложений сторонних фреймворков для работы с DNN многих, как минимум, пугают.
Очень круто! Молодцы! Очень точно нишу нащупали. Надеюсь что взлетит этот подход.
Да, с поддержкой. Caffe потихоньку умирает переходя в Caffe2. Поддержка на Caffe2 будет?
Это всё на CPU? Немного пролетел мимо понимания, как планируется использовать GPU-ускорители? Только за счёт Halide?
Сейчас dnn использует CPU. Использование GPU планируется добавить с помощью Halide и других бэкендов.
А на CPU для dnn используете самописные оптимизированные функции или какие-то библиотеки?
В данный момент используются собственные оптимизации — то есть модуль не нуждается в дополнительных библиотеках, чтобы работать также быстро, как указано в статье. В скором времени появится Halide как один из бэкендов.
Спасибо, будем стараться. Насчет caffe2 — это, на самом деле, вопрос приоритетов. Срочность добавления зависит от того, насколько этот фреймворк окажется популярным. Если мы поймем, что пользователям это нужно, или что есть много классных моделей, созданных в caffe2, то с радостью займемся реализаций поддержки. Ну а в долгосрочной перспективе мы, конечно же, за как можно больший охват фреймворков.
Интересно, запустится ли все это дело на Raspberry Pi
Предположительно, должно. Построение OpenCV выполняется, кроме многих других конфигураций, еще и для некоторого числа машин с ARM
Да, однозначно. Портировать фреймворк теперь не нужно
Конкретно у tensorflow есть свое решение для работы в подобных условиях tfcompile — Using AOT compilation
Не знал о такой возможности у TF, спасибо. Они вообще молодцы, оптимизируют код под CPU, активно развивают фреймворк, оказывается, еще и о мобильных устройствах позаботились
Может, я не внимателен, но я не увидел UpSampling2D в списке слоев. Он как то по другому называется? Раз с статье упоминаются сети для сегментации — FCN и Enet.
Скорее всего речь о FullConvolution слое. Он используется для того, чтобы увеличить пространственные размерности в моделях для сегментации. И он же в разных источниках называется «In-network Upsampling», «Fractionally-strided convolution», «Backwards Convolution», «Deconvolution», «Upconvolution».
Хотел еще уточнить, реализован ли FullConvolution при экспорте из tensorflow\keras? В tf-importer.cpp не обнаружил что-то похожего.
Мне сделать 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 до сих пор не поддерживается.
Привет, nVidia GPU поддерживаются как с CUDA без cuDNN, так и с CUDA + cuDNN?
А касаемо github.com/opencv/opencv/issues/15033 что сейчас реализовано из LSTM?
  1. LSTM-fullyconnected on CPU
  2. LSTM-fullyconnected on GPU
  3. LSTM-convolutional on CPU
  4. LSTM-convolutional on GPU


Sign up to leave a comment.