Yolov1
整体思路就是利用CNN做回归任务,预测出物体框的坐标;
- 输入s*s的图片。每一个小格子两种候选框(v1中只有两种),目标是要计算候选框的IoU值与置信度;
- 计算IOU,IoU 计算的是 “预测的边框” 和 “真实的边框” 的交集和并集的比值,选择IOU值大的候选框进行后微调,NMS(非极大值抑制)去除另一个IoU比较低的候选框;
- 计算每个格子confidence置信度,然后根据阈值去除可能性比较低的目标窗口;
全连接层前面的特征图不能变(因为全连接层的参数矩阵大小不能改变),所以输入必须为448448 3,最后reshape成为7730,30表示每个格子的30个值。
两种预选框,B1(x1,y1,w1,h1,c1),B2(x2,y2,w2,h2,c2).30个值为别为5+5+20个分类的预测值。
缺点:重合的物体无法检测,小物体检测效果一般,长宽比可选但单一。
Yolov2
v2只是在一些小细节进行改进
Batch Normalization (BN)
1、,Dropout一般用于FC层,V2版本舍弃了Dropout,v2中舍弃了全连接层,卷积后全部加入Batch Normalization。Dropout的做法是每次对一个batch做训练前对network中的每一个neuron(包括input layer的neuron),做sampling(抽样) ,每个neuron都有p%的几率会被丢掉,如果某个neuron被丢掉的话,跟它相连的权值w ww也都要被丢掉,剩下的neuron组成一个thinner network,以此thinner network为结构进行训练。可以防止CNN训练过程中的过拟合。
2、BN是加在卷积层后的,对卷积后的结果做归一化,控制均值和方差,以至于让卷积朝着更好的方向提取特征。网络的每一卷积层的输入都做了归一化,收敛相对更容易。
3、经过Batch Normalization处理后的网络会提升2%的mAP。
4、现在Batch Normalization已经成为网络必备处理。
更大分辨率
1、v1训练时用的是224224.测试时使用448448,V2训练时额外又进行了10次448*448的微调,提高了mAP约4%。
网络结构DarkNet19
1、取消了全连接层,全部用卷积,减少了参数。
2、5个池化层,也就是5次降采样,实际输入为416416(为了能被32整除),变成1313的特征图大小。
3、使用33 与11卷积,一共使用19个卷积层
聚类提取先验框(Anchor Box)
1、借鉴faster——rcnn,但是选择的先验比例都是常规的,不一定完全适合数据集。比如1比1,1/2。
2、Yolov2使用K-means聚类中的距离,d=1-IOU,k=5。这样做降低mAP,提高查全率recall。
Directed Location Prediction
V2中没有使用偏移量,而是选择相对grid cell的偏移量,也就是在偏移量前面加上sigmoid(),让偏移量保持在0-1之间 。直接放图,
感受野
感受野的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。也就是越看越大,考虑一个整体。
感受野相同时,比如77c 与333 所用的参数不同,在最后一层时感受野最大,可能会有小目标丢失,对倒数第二层进行拆分,然后进行拼接。
Multi—Scale(多尺度)
因为没有全连接层,所以输入的图片最小为320320 ,最大为608608
。
最后总结:v2中的提升
3、Yolov3
1、最大的改进就是网络结构,使其更适合小目标的检测。
2、特征做得更细致,融入多持续特征图像来预测不同规格物体。
3、B=9,3种scale,各3种规格。
4、softmax改进,可以预测多标签任务。
多scale
为了能检测到不同大小的物体,设计了3个scale,在不同感受野时,检测物体。比如在5252时检测小目标,在2626时检测中目标,在1313时检测大目标,但是要向后借鉴。不同特征图进行融合。
scale变换方法:上采样,就是将 1313采样成为2626,再与2626融合在一起。
残差连接-为了更好的特征
借鉴resnet(残差网络)思想,堆叠更多的层来进行特征提取。核心就是学得好的网络保留,学得不好的就丢弃。
Darknet53
没有池化和全连接层,全部卷积,通过设置stride让特征图减小
这个图更好看
v3中有三种输出
用logistic激活函数选择softmax,对于每一个类都进行预测
4、Yolov4
1、单GPU就能跑。
2、两大核心方法,从数据层面和网络设计层面来进行改善。
Mosaic data augmentation
maxup融合
cutout剪切
cutmix剪切融合
Self adversarial training(SAT)
通过引入噪音点来增加难度
DropBlock
DropOut是随机消失点,Block是一个区域
Lable Smoothing
特征平滑
GIOU损失,DIOU,CIOU最终
IOU损失=0时
1、无法计算梯度,梯度消失
2、相同的情况,可能会有相同的梯度。
引入最小包围框C,GIOU在不重叠情况下能让预测框尽可能朝着真实框前进 。 这样能解决梯度问题。
DIOU直接用距离来度量 ,分子为预测框与真实框的中心点欧式距离,分母是能覆盖预测框与真实框的最小Box的对角线长度c。
CIOU中加入了长宽比。
DIOU-NMS
soft-nms不会一刀切,只是降低权重
SPPNet
SPP用最大池化来满足最终输入特征一致。改变输入的大小。
CSPNet
每一个block按照特征图的channel维度拆分成两部分
CBAM
V4中用的是SAM空间注意力机制。
PAN
FPN自顶向下,将高层特征传下来
PAN引入自下向上,将底层的特征与上层进行拼接。
激活函数Mish
用Mish代替Relu
整体网络结构: