提示:文章用于学习记录
前言
1. 未识别到全部人脸问题
- 多尺度检测 cv2.detectMultiScale() 的四个比较重要的参数分别是:scaleFacto or、minNeighbors、minSize 和 maxSize,其中 scaleFactor 是对区域进行缩放的比例,可以根据图像的像素值来设置此参数,像素大缩小的速度就可以快一点通常在1~1.5之间,minNeighbors 是最少检测几次。
2. YOLOv3 目标检测
- coco.names 数据集由80个标签组成:
- 置信度过滤和非极大值抑制 NMS :
cv2.dnn.NMSBoxes(boxe,sconfidences,CONF=0.5,NMS=0.4)
在检测中发现出现双框的效果(或者出现多框),使用 NMS 算法解决多框问题,OpenCV dnn 模块自带了 NMSBoxes() 函数,NMS 目的是在邻域内保留同一检测目标置信度最大的框,在下方输出中可以发现对于邻域相同目标检测,只保留了 confidence 值最大的 box 索引。
- 给每个框随机指定颜色
3. 存在问题
- 在用opencv调用yolov3的权重文件,获取三个尺度输出层的名称时出现了这个错误。
- 修改前:output layers names = [layersNames[i[0]-1] for i in net.getUnconnectedutLayers()]
- 解决办法:修改为 output lavers names = [laversNames[i-1] for i in net.getUnconnectedOutLavers()]
- 图片显示问题
- img = cv2.resize(img, Nonefx=0.2, fy=0.2),resize 是 opencv 库中的一个函数,主要起到对图片进行缩放的作用,可解决图片显示问题。其中,参数 fx:是图像 width 方向的缩放比例;fy:height 方向的缩放比例。如果 fx = 0.3,fy = 0.7,则将原图片的 x 轴缩小为原来的 0.3 倍,将 y 轴缩小为原来的 0.7 倍。
- img = cv2.resize(img, Nonefx=0.2, fy=0.2),resize 是 opencv 库中的一个函数,主要起到对图片进行缩放的作用,可解决图片显示问题。其中,参数 fx:是图像 width 方向的缩放比例;fy:height 方向的缩放比例。如果 fx = 0.3,fy = 0.7,则将原图片的 x 轴缩小为原来的 0.3 倍,将 y 轴缩小为原来的 0.7 倍。
总结
以上就是 YOLO V3 目标检测实现与问题解决。