python - 无法使用 cv2.dnn.readNetFromTensorflow() 导入 tflite_graph.pb,Python
问题描述
我正在尝试使用 OpenCV测试ssd_mobileet_cpu_coco 模型。该模型有一个tflite_graph.pb
和tflite_graph.pbtxt
一堆其他文件,包括一个检查点文件。我对 TensorFlow 比较陌生。我看过人们cv2.dnn.readNetFromTensorflow
用来阅读 TensorFlow 模型的教程。但是他们将 a 传递frozen_inference_model.pb
给我没有的这个函数。我编写了以下脚本作为测试来尝试加载模型:
import cv2
if __name__ == "__main__":
frozen_graph_path = "tflite_graph.pb"
model_path = "tflite_graph.pbtxt"
input_source = "input_video.mp4"
model = cv2.dnn.readNetFromTensorflow(frozen_graph_path, model_path)
while (True):
if (ret):
frame_height, frame_width, _ = frame.shape
model.setInput(cv2.dnn.blobFromImage(frame, size=(320, 320), swapRB=True, crop=False))
output = model.forward()
但我收到以下错误:
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-r2ue8w6k\opencv\modules\dnn\src\tensorflow\tf_importer.cpp:672:
error: (-215:Assertion failed) const_layers.insert(std::make_pair(name, li)).second in function 'cv::dnn::dnn4_v20201117::`anonymous-namespace'::addConstNodes'
我搜索了这个GitHub线程,@dkurt 提到这.pbtxt
是可选的。此外,@AmanGoyalNayan 在下面的线程中询问了这个问题的确切问题,但仍未得到答复。
所以我尝试了@dkurt 建议的解决方案并得到了这个错误:
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-r2ue8w6k\opencv\modules\dnn\src\layers\eltwise_layer.cpp:216:
error: (-215:Assertion failed) inputs[0][j] == inputs[i][j] in function 'cv::dnn::EltwiseLayerImpl::getMemoryShapes'
- 是因为我只能通过一个
frozen_inference_graph.pb
吗? - 如果是这样,我可以
tflite_graph.pb
使用模型中的其他文件转换为它的冻结版本吗? - 我什至可以
tflite_graph.pb
直接使用 OpenCV 导入吗?
Opencv = 4.5
windows 10
谢谢!