Python版本3.7
Keras版本2.3.1
TensorFlow版本1.14.0
我希望使用C++中的OpenCV的Read NETFrenceSoFunm运行UNet Keras模型。根据此问题,我已成功将HDF5文件转换为.pb: How we can convert keras model .h5 file to tensorflow saved model (.pb)但是,当我尝试运行该命令时(为了便于测试,请先使用python):
net = cv.dnn.readNetFromTensorflow('tensorflow/my_model.pb')
我收到失败的消息:
error: (-2) Unknown layer type Shape in op decoder_stage0_upsampling/Shape in function cv::dnn::experimental_dnn_v2::`anonymous-namespace'::TFImporter::populateNet
使用OpenCV是否有解决方法?或者在这种情况下,使用TysFuns+C++ API是最好的。p>
我已经解决了我的问题,并将在这里为任何希望在自己的UNet上使用OpenCV执行推理的人添加我的解决方案
步骤1: 将H5/HDF5文件转换为.pb,如我在上述问题中所述
步骤2: OpenCV必须升级到4.2.0(不确定我的解决方案是否在3.3.1[我的起始OpenCV版本]和4.2.0之间的任何其他版本中受支持)
步骤3: 按照我问题中的代码所述加载网络,这应该是成功的。完成后,加载图像并使用cv2.blobFromImage()构造blob,然后设置输入,最后执行推断:
查看您的输出: 您将得到一个(1,1,x,y)形状。使用所需的函数重塑输出(在我的例子中,我只使用np.resize()。绘制输出并查看结果
希望这能帮助那些不想处理TysFooS+C++ API的人,需要一个相对好的工作C++推理设置。p><>编辑:作为一个注释,我应该提到我还没有用C++ OpenCV库来测试这个。我计划在下周左右做这件事。如果这个解决方案在C++中不起作用,我会在这里注意到。p>< >编辑2:在C++ 中进行测试和工作相关问题 更多 >
编程相关推荐