我已经根据tensorflow教程(https://www.tensorflow.org/hub/tutori..。)中的Inception v3训练了一个神经网络。网络可以在C ++中使用tensorflow正常工作。
我正在尝试将其与OpenCV 4.0 beta一起加载。通过以下方式正确加载网络(我使用.pb文件):
net = cv :: dnn :: readNetFromTensorflow (model);
当我对输入图像执行.forward时出现问题,发生异常:
错误:在cv :: dnn :: dnn4_v20180917 :: LayerData :: getLayerInstance,文件c:\ build \ master_winpack-build-win64-中,未指定的错误(无法创建类型为“ PlaceholderWithDefault”的图层“ input / BottleneckInputPlaceholder”) 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])
请帮助我。
谢谢。