opencv - 与 opencv 一起使用的小 yolo v4 没有检测到
问题描述
我已经在 google colab 上的自定义数据集上训练了 yolo-tiny-v4,并且检测效果很好。然后我尝试借助opencv的dnn模块在其他colab项目中加载yolo-tiny-v4 ,没有出现错误,但是检测失败(没有检测到物体,检测的输出是Nan的向量)。
[array([[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
...,
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.]], dtype=float32),
array([[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
...,
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.],
[nan, nan, nan, nan, nan, 0.]], dtype=float32)]
我在 colab 上使用 OpenCV 版本 4.5.1 和 Python 3.7。任何的想法 ?
这是代码
#Load YOLO
net = cv2.dnn.readNetFromDarknet("/content/custom-yolov4-tiny-detector.cfg","/content/custom-yolov4-
tiny-detector_last.weights")
classes = []
with open("obj.names","r") as f:
classes = [line.strip() for line in f.readlines()]
net.getLayerNames()
layer_names = net.getLayerNames()
outputlayers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
#loading image
img = cv2.imread("/content/1.png")
#img = cv2.resize(img,None,fx=0.4,fy=0.3)
height,width,channels = img.shape
cv2_imshow(img)
blob = cv2.dnn.blobFromImage(img,0.00392,(416,416),(0,0,0),True,crop=False)
net.setInput(blob)
outs = net.forward(outputlayers)
outs
解决方案
作为初学者,我忘记在 colab 中安装暗网
推荐阅读
- android - 使用 Unity VideoPlayer 组件从自定义本地 URL 播放视频文件
- python - 如何将熊猫数据框转换为具有 Column==value 列的表?
- python - 如何将图像与数据库条目相关联
- asp.net-core - MEF 框架 - 如何将接口传递给 MEF 中类的构造函数方法
- c++ - 如何正确重载全局新函数以创建对象
- machine-learning - Spacy NER如何验证实体的合理性?
- facebook - 如何使用 Graph API 访问公共 Facebook 页面
- git - 在 git commit 中使用 hook 自动添加开发机器 ip、git 根路径和当前分支
- javascript - 如何为 Electron App 建立 SSH MySQL 数据库连接?
- flopy - flopy 程序 mf6 不存在或不可执行