首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在opencv中加载YOLOv5错误,如何解决?

在opencv中加载YOLOv5错误,如何解决?
EN

Stack Overflow用户
提问于 2022-07-01 17:06:06
回答 2查看 1.3K关注 0票数 1

我正试图使用YOLOv5在opencv中运行人员检测,并且加载模型时遇到了问题。我的opencv版本是4.6.0,遵循此链接的教程,我编写了以下代码

代码语言:javascript
运行
复制
# hyper parameters
INPUT_WIDTH = 640  # width of the input for the YOLOv5 network
INPUT_HEIGHT = 640  # height of the  input for the YOLOv5 network
SCORE_THRESHOLD = 0.5  # filter low probability classes
NMS_THRESHOLD = 0.45  # remove overlapping bounding boxes (?)
CONFIDENCE_THRESHOLD = 0.45  # filter low probability detection
BLACK = (0, 0, 0)
BLUE = (255, 178, 50)
YELLOW = (0, 255, 255)
classes = []
person_found = False
# taking classes names
class_files = 'yolo/coco.names'
with open(class_files, 'r') as source:
classes = source.read().rstrip('\n').split('\n')
# weights path
weights = 'yolo/models/yolov5s.onnx'
net = cv2.dnn.readNet(weights)
# parameters: image, scale factor, size in form of tuple, mean subtraction, swapRB
blob = cv2.dnn.blobFromImage(frame, scalefactor=1/255, size=(INPUT_WIDTH, INPUT_HEIGHT), mean=[0, 0, 0], swapRB=True, crop=False)
net.setInput(blob)
outputs = net.forward(net.getUnconnectedOutLayersNames())

但是,当我试图加载模型时,我会得到以下错误:

代码语言:javascript
运行
复制
[ERROR:0@1.622] global D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\onnx\onnx_importer.cpp (1021) cv::dnn::dnn4_v20220524::ONNXImporter::handleNode DNN/ONNX: ERROR during processing node with 1 inputs and 1 outputs: [Identity]:(onnx_node!Identity_0) from domain='ai.onnx'
Traceback (most recent call last):
  File "D:\Unitn\Corsi\Computer vision\project\synopsis\main.py", line 25, in <module>
    bg_frames = find_bg_frames(video, duration, fps)
  File "D:\Unitn\Corsi\Computer vision\project\synopsis\utils.py", line 152, in find_bg_frames
    people_found = find_people_with_yolo(frame)
  File "D:\Unitn\Corsi\Computer vision\project\synopsis\utils.py", line 102, in find_people_with_yolo
    net = cv2.dnn.readNetFromONNX(weights)
cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\onnx\onnx_importer.cpp:1040: error: (-2:Unspecified error) in function 'cv::dnn::dnn4_v20220524::ONNXImporter::handleNode'
> Node [Identity@ai.onnx]:(onnx_node!Identity_0) parse error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\dnn\src\layer.cpp:246: error: (-215:Assertion failed) inputs.size() in function 'cv::dnn::dnn4_v20220524::Layer::getMemoryShapes'
> 

有人能帮我找到这个问题吗?

EN

Stack Overflow用户

发布于 2022-07-22 14:12:12

仔细观察一下outputs的形状,发现它是1,3,80,80,85。而对于默认的640x640 onnx出口,则应为25200x85。这似乎是一种从PyTorch到ONNX的错误转换。在yolov5s.onnx中,模型已经在文章中更新。

此外,torch==1.12也有一些bug。在修复之前,请在转换模型时使用torch==1.11。

看看这个关于GitHub的问题

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72832585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档