[已解决]OpenCV调用yolov3的检测精度下降问题 | darknet检测结果和opencv检测结果不一致问题

  • 如果你用了opencv调用yolov3的weights,names,cfg做目标检测,你会发现用 ./darknet detector test xxx.... 出来的检测结果不一致,大部分任务都还ok,个别任务的精度就低的离谱。
  • AlexeyAB版和Pjreddie版我都试过了,AlexeyAB版更离谱。
  • 目前解决办法是回归本源,用darknet/python/darknet.py这个代码实现接口,本质是调用libdarknet.so动态链接库,Linux下面是so,Windows下面是dll。
  • 要注意两件事:

1、里面的权重,names之类的配置文件要用绝对路径,相对路径会报错。

2、路径前面要加b 比如      b"/home/nvidia/darknet/backup/yolov3_550000.weights"     这样,不然会报错。

 

  • 这个接口速度与原始darknet速度一致,RTX2080下推断速度22帧/秒,检测精度与darknet也没有差别,简直完美
  • 优化权重初始化方式,改写成函数调用,可以直接放在flask里面用了,这一部分很简单 代码我就不放了

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用OpenCV调用YOLOv模型的步骤如下: 1. 下载并安装Darknet。在Darknet官网(https://github.com/pjreddie/darknet)上下载源代码,并进行编译和安装。 2. 下载YOLOv模型权重文件。在Darknet官网上下载YOLOv模型的权重文件,例如yolov3.weights。 3. 使用OpenCV读取图像文件或视频文件。使用OpenCV的cv::imread()函数读取图像文件,或使用cv::VideoCapture类读取视频文件。 4. 加载YOLOv模型和权重文件。使用OpenCV的dnn::readNetFromDarknet()函数加载YOLOv模型的配置文件和权重文件。 ```python model_cfg = "path/to/yolov3.cfg" model_weights = "path/to/yolov3.weights" net = cv2.dnn.readNetFromDarknet(model_cfg, model_weights) ``` 5. 预处理图像。将图像缩放到模型需要的大小,并对图像进行归一化处理。 ```python blob = cv2.dnn.blobFromImage(image, 1/255.0, (416, 416), swapRB=True, crop=False) ``` 6. 将图像输入到模型中进行推理。使用OpenCV的dnn::Net类的forward()函数进行推理,并获取模型输出。 ```python net.setInput(blob) outputs = net.forward() ``` 7. 处理模型输出。对模型输出进行解析和后处理,获取目标检测结果。 ```python for output in outputs: for detection in output: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) x = int(center_x - w/2) y = int(center_y - h/2) cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) ``` 8. 显示图像。使用OpenCV的cv::imshow()函数显示图像,并使用cv::waitKey()函数等待键盘输入。 ```python cv2.imshow("Output", image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 以上就是使用OpenCV调用YOLOv模型的基本步骤,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值