opencv - 我可以在 OpenCV 的 yolo 检测模型中更改批量大小吗?
问题描述
我在 python 中使用 opencv 加载 yolo 模型,cv2.dnn_DetectionModel(cfg,weights)
然后调用net.detect(img)
. 我认为我可以使用批处理来加快每个图像的速度,但是我看不到任何对批处理大小的支持,而不是一个。
是否可以设置批量大小?
解决方案
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。这部分很重要,但可行。
推荐阅读
- php - 从 PHP Web 应用程序连接到本地 Active Directory
- reactjs - 从项目的 Github 存储库中提取新 udates 后出现 Graphql 错误
- c# - 按钮单击时颜色更改文本
- sql - 在sql中使用pivot的多行
- python - 如何在 setup.py 中指定 `--formats` sdist 选项?
- html - HTML 将页脚内容与页面包装器对齐
- sql - oracle数据库在表列'SYS_###########'中创建什么?
- twilio - Twilio 按内容过滤消息?
- docker - 在 Fedora Docker Image 中找不到任何手册页
- user-interface - 如何在Install4j中禁用屏幕的十字按钮