首页 > 解决方案 > 我可以在 OpenCV 的 yolo 检测模型中更改批量大小吗?

问题描述

我在 python 中使用 opencv 加载 yolo 模型,cv2.dnn_DetectionModel(cfg,weights) 然后调用net.detect(img). 我认为我可以使用批处理来加快每个图像的速度,但是我看不到任何对批处理大小的支持,而不是一个。

是否可以设置批量大小?

标签: opencvyolo

解决方案


net.detect不支持批量大小 > 1。

但是,可以通过一些额外的工作在暗网模型上进行批量大小 > 1 的推理。这是一些部分代码:

net = cv2.dnn.readNetFromDarknet(cfg,weights)
net.setInputNames(["input"])
net.setInputShape("input",(batch_size,3,h,w))
blob = cv2.dnn.blobFromImages(image_list)
net.setInput(blob)
results = net.forward(net.getUnconnectedOutLayersNames())

现在遍历所有图像,并为结果中的每一层输出,提取每个类的该图像的框和置信度,并为每一层收集此信息,将其传递给 cv2.dnn.NMSBoxes。这部分很重要,但可行。


推荐阅读