Inception Tensorflow модель c ++ ошибка при создании входного слоя с OpenCV4 - PullRequest
0 голосов
/ 13 ноября 2018

Я обучил нейронную сеть на основе inception v3 из руководства по тензорному потоку (https://www.tensorflow.org/hub/tutori...). Сеть работает с тензорным потоком в c ++ без проблем.

Я пытаюсь загрузить его с помощью OpenCV 4.0 beta. Сеть загружена правильно (я использую файл .pb) с:

net = cv :: dnn :: readNetFromTensorflow (model);

Проблема возникает, когда я делаю .forward с входным изображением, возникает исключение:

Ошибка: не указана ошибка (не удается создать слой «input / BottleneckInputPlaceholder» типа «PlaceholderWithDefault») в cv :: dnn :: dnn4_v20180917 :: LayerData :: getLayerInstance, файл c: \ build \ master_winpack-build-win64- vc15 \ opencv \ modules \ dnn \ src \ dnn.cpp, строка 412

Слой входа в сеть (заполнитель) нуждается в формате следующего типа: float32 [?, 299,299.3]

Во всех примерах, которые я видел, входной BLOB-объект создается с помощью cv :: dnn :: blobFromImage.

Я использую этот вызов:

cv :: dnn :: blobFromImage (img, blob, 1.0f / 255.0f, Size (299, 299), Scalar (), true, false);

BLOB-объект, сгенерировавший этот вызов, - {FLOAT32, 1 x -1 x -1}, что, очевидно, не соответствует ожиданиям входного слоя сети.

Как правильно создать входной BLOB-объект? (формат ввода: float32 [?, 299,299.3])

Пожалуйста, мне нужна помощь.

Заранее спасибо.

...