目录
一、YOLOV1
1、导论
2、基本思想
3、网络结构
4、损失函数
5、局限性
二、YOLOV2
1、导论
2、基本思想
3、网络结构
YOLO(译为You Only Look Once)由Joseph Redmon在2016CVPR中第一次提出,相对于Faster-RCNN的两阶段目标检测方法,只采用一个单独的CNN模型实现end-to-end的单阶段目标检测。
快:达到了45FPS
准确:mAP达到63.4
轻量:端对端,单阶段
与Faster-RCNN相比:
1、将一副图像分成S×S(S=7)个网格,如果某个目标的中心落在这个网格中,则这个网格就负责预测这个目标。
2、每个网格要预测B(B=2)个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值,每个网格还要预测C(C=20)个类别的分数。(利用的VOC数据集) final prediction:最终的特征矩阵(7*7*30)
30=(4+1)*2+20
注: 2:两个候选框
4:每个候选框有x,y,w,h四个参数
1:每个候选框预测一个confidence值
1、输入:448*448,输出:7*7*30
2、在3*3卷积后接1*1卷积,减少整体计算量的同时,提高非线性能力。
3、激活函数上除了最后一层使用线性激活,其余使用Leaky ReLU激活函数。
4、利用DropOut与数据增强来减少过拟合。
正样本选择:与真实物体有最大IOU边框设为正样本,该区域置信度真值为1
负样本选择:除了正样本边框,其余边框均为负样本,负样本没有类别损失和边框位置损失,仅有置信度损失,置信度真值为0
YOLO使用预测值和GT之间的误差平方求和来计算损失。
损失函数包括坐标损失(1,2行),置信度损失(包含物体时-3行,不包含物体时-4行),分类损失(5行)。
坐标损失:为什么w,h使用了开方处理?
在偏移同样距离时,惩罚小目标边界框,提高小目标检测的识别率。
置信度损失:
通过计算包含物体时置信度损失和不包含物体时置信度的损失两部分,其中前者只要有人工标记的物体落入网格内则记为1,否则0;后者代表预测框bounding box和真实标记的box之间的IoU,值越靠近1越靠近真实位置,否则趋于0。
分类损失:
利用均方误差,若网格中包含object的中心,则负责预测object的概率。
1、 每个cell只预测两个bounding box,且两个都属于同一类别目标,当小目标聚集时预测效果差。
2、当目标出现新的尺寸或配置时,预测效果差。
3、定位不准确,使用直接预测目标坐标信息,而不是采用Faster-RCNN的相对anchor的回归预测,导致定位不准,预测效果差。
参考视频:yolov1理论讲解_哔哩哔哩_bilibili
参考文献:https://pjreddie.com/media/files/papers/yolo_1.pdf
YOLOV2(YOLO9000:Better, Faster, Stronger)由Joseph Redmon在2017CVPR提出,重点解决YOLOv1召回率和定位精度方面的不足,并且该网络能实现不同尺寸的对图像的输入。
相比于YOLOV1利用全连接层直接预测bounding box坐标,YOLOV2利用Faster-RCNN中anchor机制,并利用K-means聚类方法寻找更优的anchor机制,大大提高模型召回率。同时结合图像细粒度特征,将浅层特征与深层特征相连,有助于对小尺寸目标的检测。
1、Batch Normalization
在Convolutional Layer模块(Conv2d->BN->LeakyReLU)通过利用BN层对数据进行预处理大大提高训练速度,提升训练效果。
2、High Resolution Classfier
通过提高backbone中输入的分辨率为448*448,提升了mAP
3、Convolutional With Anchor Boxes
YOLOV1利用全连接层直接预测bounding box坐标,而YOLOV2借鉴Faster-RCNN中RPN网络,引入anchor box预测bounding box。
4、Dimension Clusters
利用K-means聚类方法提前作出anchor模板,并利用平均IOU得分进行评判,最终确定k=5,即5个box维度来预测anchor box
5、Direct location prediction
由于模型的不稳定性,对原有RPN中预测框x,y,w,h坐标的计算进行改良,从而防止出现预测框与anchor box偏离较大而作为正样本的情况。
6、Fine-Grained Features
添加转移层(PassThrough Layer),并在转移层前加1*1卷积层,便于融合底层和高层网络的关系。
7、Multi-Scale Training
为了适应不同图片尺寸的鲁棒性,作者每十次迭代更新一次裁剪输入图片尺寸,由于YOLO下采样参数为32,所以使用32的倍数进行尺度池化{320,352,…,608}
1、输入层416*416*32(由于加入了anchor boxes而改变了原有的448*448)
输出(5+20)*5*1*1
注: 5:预测框参数x,y,w,h,confidence
20:voc类别20类
5:5个anchor box
2、激活函数仍然用LeakyReLU函数
3、PassThrough层的使用,增加细粒度特征
4、利用Darknet-19而非以往的VGGnet模型,通过较多的3*3卷积(借鉴vgg),并在3*3卷积后添加1*1卷积压缩特征。并借鉴network in network,使用全局平均池化。
参考视频:yolov2理论讲解_哔哩哔哩_bilibili
参考文献:https://arxiv.org/pdf/1612.08242.pdf