目录
一、性能评价:
map值:综合的衡量检测效果
IoU:真实值和预测值交集 / 真实值和预测值并集
FPS:表示每秒可以处理的帧数
二、相关知识
非极大值抑制 NMS
Soft NMS
不直接删除,而是减小anchor置信度
三、YOLO v1
核心思想
一:输入的图像被划分为 S×S个网格(例如 7x7)。每个网格单元负责预测目标中心点落在该网格内的物体。
二:对于每个网格,预测多个边界框(通常是 2 个),每个边界框包含以下信息:
- 边界框位置(4 个值):边界框的中心点位置 (x,y)、宽度 w和高度 h,这些值是相对于网格单元的。
- 边界框的置信度:表示该边界框内包含物体的置信度和边界框与真实物体匹配程度的综合分数。
三:类别概率预测,每个网格单元还预测类别的概率分布,假设一共有 C 个类别,则每个网格输出一个长度为 C的向量,表示该网格包含某类物体的概率。
四:最终网络的输出是一个 S×S×(B×5+C)的张量。对于每个网格单元,有 B个边界框(通常 B=2),每个边界框输出 5 个值(边界框坐标和置信度),外加 C个类别概率。
网络结构
输出为: 7*7*(5*2+20)
由于最后有全连接层导致输入大小固定为:448*448*3
损失函数
位置误差:选择IOU最大的边界框,误差 = x和y的差平方+根号w和根号h的差平方(加根号因为更注重小物体)
置信度误差:前景置信度希望是1,背景的置信度希望是0
(置信度-IOU)^2
优缺点分析:
优点:速度快,全局推理
缺点:
- 输入大小固定
- 模型在处理高密度或小物体时表现欠佳
- 定位精度较低
- 处理同一网格内的多个物体较差
四、YOLO v2
改进
- 删除dropout
- 每个卷积层后增加 批归一化
- 删除全连接层
- 网格改为13*13
- k-means聚类提取先验框(可改进)
- 使用sigmoid限制偏移
- 加入多尺度输入
- 后面的特征图感受野太大,导致小目标丢失,加入特征融合
五、YOLO v3
来源:yolov3spp理论讲解(包括CIoU以及Focal Loss)_哔哩哔哩_bilibili
改进
- 更新softmax层,适应多标签任务
- 在模型的不同位置输出,检测多尺度物体(3个),每个三个候选框
- 三个输出,上采样特征融合
- 加入残差连接
SPP
图像增强:多张图片拼接在一起
增加数据多样性
增加目标个数
BN能一次统计更多图片的参数
SPP模块:
损失:
IoU loss:
ln(IoU):
优点:更好的反应重合程度。具有尺度不变性
缺点:不相交的时候等于零 无法计算loss,梯度消失
GIoU loss:
缺点:
DIoU loss:
引入中心点的欧氏距离
CIoU loss:
引入中心点距离和长宽比
Focal loss
针对one-stage目标检测网络中的类别不平和
一张图片中正样本的数量只有几个或几十个,而负样本大概有10000到100000个
Focal loss可以更好地去学习难分的样本。
缺点:易受噪音干扰,对于错误样本(难分样本)会更多的学习
六、YOLO v4
数据增强
一、
用随机值进行遮挡
二、
马赛克数据增强:使用马赛克图层处理四张拼接照片
DropBlock
它是一种空域正则化技术,随机将某些区域的特征图置为0,从而防止模型过拟合,尤其在深层卷积网络中非常有效。
Label Smoothing
适当改变标签的值,防止过拟合,簇内更紧密,簇间更分离
网络修改
SPP
CSP
增强CNN的学习能力
加快计算速度
降低显存的使用
SAM注意力机制(空间)
PAN层
双层金字塔
激活函数
Mish激活函数
七、YOLO v5
数据增强
Copy Paste
结构优化:
SPPF
两个5*5的MaxPool = 9*9的MaxPool
三个5*5的MaxPool = 13*13的MaxPool
这样效果一样并且效率更高
Focus模块
Hardwish激活函数函数
损失优化:
grid 敏感
对不同尺寸的特征图采用不同权重的损失(小的目标难预测)
正样本采样
真是框在anchor大小的0.5到4倍之间
训练策略
八、YOLO V7
Req-Vgg
正样本策略
真样本框做0.5个单位的偏移,涉及的框都算正样本