文章目录
一、YOLO v1
特点:
- 经典的One-stage算法
- 一个CNN预测x,y,w,h;回归问题
- 可对视频实时检测
1.核心思想
首先将输入图分为SxS个格子,每个格子分别做两个操作(所有格子):
- 对输入图片进行网格划分,每个格子生成两个bounding boxes.
- 每个网格预测的class信息和bounding boxes预测的confidence信息相乘,得到每个bounding box预测具体物体的概率和位置重叠的概率PrIOU
其中Pr(Class|Object)为每个网格预测的class信息,Pr(Object)*IOU为confidence。 - 最后对于每个类别,对该类别PrIOU进行排序,去除该类别小于阈值的PrIOU,然后做非极大值抑制。
2.网络架构
- 输入图片大小为448x448x3
- 通过一系列卷积得到7x7x1024的特征图
- 全连接后reshape得到7x7x30,其中7x7是格子数,30是对应参数,其中有两个预测框(x,y,w,h,confidence)=10,剩下20是类别的总数(根据数据集类别数定)。
3.损失函数
- 首先,求0-s方也就是全部格子和每个格子b(v1是2)个候选框对应的位置损失值,其中l表示第i个网格中的第j个预测框是否负责obj这个物体的预测(只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个网格的所有box中最大)。其中wh加根号是因为微分求导可提高对小数物体敏感性。
- 计算置信度
如上图- 首先,若有真实框落入该中心格,Pr就为1,否则为0
- 其次通过计算预测框和真实框的IOU
- 最终计算出置信度
- 对于置信度有分前景和背景,前景指有物体的,背景指没有物体的,有物体用上面那个置信度loss,无物体用下面那个置信度loss,其中Ci是真实值,就是上面计算的置信度,Ci_hat是yolo的预测值。
- 最后一个是有物体格子对应类别的概率值
4.优劣性
二、YOLO v2
1.YOLO v2改进点及提升效果
2.各改进点
-
2.4先验框选取
就是v1中提到的b,起初是2,v2通过k-means聚类coco数据集中的标注框获得比例。 最终得到K=5时最合适。
-
2.5选框后的实验效果
recall提升很多,precision略降。
-
2.6直接预测相对位置
- grid cell偏移量计算
- 为避免出现v1乱飘移,首先将中心点限定在cell格内,通过sigmod(tx)+Cx方式限定。其中tx为预测值,Cx为cell格左上角坐标。y类似;pw和ph是对应于特征图的,所以需要原图通过等比例缩小,例如输入为120x120,特征图为13x13则pw则通过120/32得到。
- 预测结束后通过计算特征图上的数值进行还原,得到实际值。 -
2.7感受野
-
2.8细粒度特征
越后面的特征图感受野越大,越前特征感受野越小,通过融合前的特征图和后的特征图,可以得到大的和小的物体的特征,不会导致小物体特征丢失。- 通过对小物体拆分,例如26x26x512拆成4x13x13x512,叠加到13x13x1024中,得到13x13x3072。
- 通过对小物体拆分,例如26x26x512拆成4x13x13x512,叠加到13x13x1024中,得到13x13x3072。
-
2.9多尺度
不同的训练迭代过程中改变输入图像尺寸大小,加强学习能力。
三、YOLO v3
1.YOLO v3提升效果图:
2.各改进点
-
scale变换经典方法:
图像金字塔:通过reshape可固定输入,设置好卷积机构就可在不同位置抽取到固定大小的特征图。例如:13x13、26x26、52x52。缺点:速度慢,一个预测做了三次,且学习信息不充分,不符合yolo的初衷。
单一输入:就是CNN卷积后得到单一的特征图。 -
不同特征图融合预测
特征融合预测:CNN先获得前1、中2、后3部分的特征图,通过3得到的特征图也就是4进行大物体预测,再将4进行上采样扩充成与2一样大小的特征图后融合得5,通过5预测中型目标物体,5通过上采样扩充成1一样大小的图和1融合得6,通过6进行预测小目标物体。选取卷积过程中不同的特征图并结合特征图融合技术预测,离输出端越近,则预测大物体,中间抽取的特征图预测中的,离输出越远的预测大的物体。
-
2.2多种规格先验框
例如从不同backbone提取的特征图:大、中、小,每种规格3种先验框,一共9种。
-
2.3主干网络结构改进
- 存在问题,基于vgg结构实验发现56层的error率比20层的学的更差。如下图。
- 残差连接
分两条路,第一条路向下做两层卷积结果为F(x),第二条路是F(x)原封不动的x,然后相加得H(x)。
- 存在问题,基于vgg结构实验发现56层的error率比20层的学的更差。如下图。
-
2.4核心网络架构darknet53
darknet53:2为主干网络,通过不同尺度的残差模块组合53层,3为多尺度特征图融合方法。1为主干的改进点,去掉了池化和全连接使用3x3卷积核代替。