0

尝试使用 Keras 自定义训练 yolov3 模型。结果,.h5创建了格式为的模型。不幸的是我不能直接导入.h5模型cv2.dnn。因此,我首先将.h5模型转换为ONNX使用 keras2onnx 库,然后尝试.onnx使用 opencv 加载模型,但它会引发错误。代码的某些部分可以让您了解我是如何做的,如下所示:

import keras2onnx

keras_model = load_model("/content/gdrive/MyDrive/42028/Week9/weights_coco.h5", custom_objects={'tf':tf, 'custom_loss':custom_loss})
onnx_model = keras2onnx.convert_keras(keras_model, keras_model.name)
keras2onnx.save_model(onnx_model, "/content/gdrive/MyDrive/42028/Week9/onx_model.onnx")
net = cv2.dnn.readNet('onx_model.onnx')

输出:

cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-m8us58q4\opencv\modules\dnn\src\onnx\onnx_importer.cpp:2129: error: (-2:Unspecified error) in function 'cv::dnn::dnn4_v20210301::ONNXImporter::handleNode'
Node [SpaceToDepth]:(lambda_1_1/SpaceToDepth:0) parse error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-m8us58q4\opencv\modules\dnn\src\dnn.cpp:621: error: (-2:Unspecified error) Can't create layer "lambda_1_1/SpaceToDepth:0" of type "SpaceToDepth" in function 'cv::dnn::dnn4_v20210301::LayerData::getLayerInstance'

如果有人可以帮助我解决这个问题,那就太好了。

4

0 回答 0