目标检测就是对目标进行动态实时跟踪定位,常见的目标检测算法有 R-CNN、Fast R-CNN、Faster R-CNN、SSD、Yolo 等,其中 Yolo 的速度和精确度都比较高,且只需训练一次,使用起来比较方便。
这里我们就使用官方现成的模型来检测图片,看一看效果,先学会使用流程,以后再训练自己的模型。
注意:opencv-python 目前只有 4.4.0 版本适配了 YOLOv4
导入库
import numpy as np
import time
import cv2
- 1
- 2
- 3
设置标签和标注颜色
LABELS = open("coco.names").read().strip().split("\n")
np.random.seed(666)
COLORS = np.random.randint(0, 255, size=(len(LABELS), 3), dtype="uint8")
- 1
- 2
- 3
coco.names
内包含了很多目标标签,如 person、bicycle、car 等,且按一定顺序排列,里面基本包含了 Yolo 官方模型中可检测的对象。该文件可从以下链接中提取:https://gitee.com/public_sharing/ObjectDetection-YOLO/blob/master/coco.names
每个对象配备了不一样的颜色,以便在图片中标记时便于区分。
加载网络
# 导入 YOLO 配置和权重文件并加载网络:
net = cv2.dnn_DetectionModel('yolov4.cfg', 'yolov4.weights')
# 获取 YOLO 未连接的输出图层
layer = net.getUnconnectedOutLayersNames()
- 1
- 2
- 3
- 4
yolov4.cfg
和 yolov4.weights
文件就是官方提供的模型,下载链接:https://pan.baidu.com/s/1XrcPHdp2_4c-dKge2Guw4w 提取码:xsxb 。如果失效,可以直接百度搜索 Yolov4模型下载,有很多人都分享出来了。