论文名称:You Only Look Once:Unified,Real-Time Object Detection
作者:Joseph Redmon ∗ , Santosh Divvala ∗† , Ross Girshick ¶ , Ali Farhadi
论文地址:http://openaccess.thecvf.com/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf
发表年份:CVPR 2016
yolo是截至目前又快又好检测中的佼佼者,本文是yolo系列的第一个版本。虽然mAP上可能不尽如人意,但是它引入了yolo的思想,值得从头学习。
截至到2016年本文写作时,仍然是R-CNN系列在统治目标检测领域,首先预测出可能存在目标的候选区域,然后在候选区域上使用分类器和边界回归器预测目标的类别和更精准的目标边界框,这种two-stage的检测流程虽然检测效果很好,但是有个致命弱点-计算量大,很难达到实时检测。one-stage的DPM虽然检测速度快,但是效果差到不忍直视。
但是,人拿到一张图片,简单看一次就可以知道图中有目标的类别、大小、位置,根本不用先找候选区域再用分类器那么麻烦。
基于此,作者提出,You Only Look Once,把整幅图片输入模型,然后一次性的预测出目标类别、位置。
YOLO把目标类别识别和目标位置确定这两个任务都看做是回归问题,把整张图片输入网络,直接输出目标类别和位置,训练时也是直接按照回归的方式:真-端到端训练。
直接从整张图片中预测出某个目标似乎不太容易,YOLO把图片分成 S ∗ S S*S S∗S个网格单元(gc,grid cell),从每个网格单元中预测出某个目标,然后再把预测的结果汇总,这似乎可以看做是一种类似map-reduce的思想。
对于每个网格单元 C C C,预测 B B B个边界框(bounding box,下文中记做bbox)和C个类别的条件概率。每个bbox包括5部分, ( x , y , w , h , c o n f i ) (x,y,w,h,confi) (x,y,w,h,confi),其中的 c o n f i confi confi指这个bbox中包含目标的可能性和这个bbox的准确性, c o n f i = P r ( O b j e c t ) ∗ I O U p r e d t r u t h confi=Pr(Object)*IOU_{pred}^{truth} confi=Pr(Object)∗IOUpredtruth
( x , y ) (x,y) (x,y)指这个bbox相对于 C C C的中心点坐标, ( w , h ) (w,h) (w,h)指这个bbox相对于整张图片 ( W , H ) (W,H) (W,H)的宽高,此时 w , h 都 是 在 [ 0 , 1 ] w,h都是在[0,1] w,h都是在[0,1],可以使模型更准确。C个条件概率是 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(Classi∣Object)。在测试时,只要把条件概率和 c o n f i confi confi相乘就得到每个类别的分类概率:
P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_i|Object)*Pr(Object)*IOU_{pred}^{truth}=Pr(Class_i)*IOU_{pred}^{truth} Pr(Classi∣Object)∗Pr(Object)∗IOUpredtruth=Pr(Classi)∗IOUpredtruth
yolov1的网络结构启发自GoogLeNet和Network in Network,使用 c o n v ( 1 , 1 ) − c o n v ( 3 , 3 ) conv(1,1)-conv(3,3) conv(1,1)−conv(3,3)的结构, c o n v ( 1 , 1 ) conv(1,1) conv(1,1)主要用于降维和融合特征, c o n v ( 3 , 3 ) conv(3,3) conv(3,3)用于提取特征。网络的输入是(N,3,448,448),输出是(N,SS(B*5+C)),最后一层使用线性激活函数,其他层使用Leaky ReLU( α = 0.1 \alpha=0.1 α=0.1)。
yolov1的损失函数使用优化后的平方差函数(SSE,sum-squared error)。
针对这两个问题,使用 λ c o o r d , λ n o o b j \lambda_{coord},\lambda_{noobj} λcoord,λnoobj加权bbox/cls,包含正/负样本。
本文通过直接预测 w , h \sqrt{w},\sqrt{h} w,h来勉强达到这种要求。
其中的指第 i i i个网格单元中出现目标,一部分出现也算;指第 i i i个网格单元的第 j j j个检测器(bbox predictor)负责检测该网格中的目标。
类型 | 指标 |
---|---|
Correct | correct class , IOU>0.5 |
Localization | correct class , <0.1IOU<0.5 |
Similar | class is similar ,IOU>0.1 |
Other | classs is wrong,IOU>0.1 |
Background | IOU<0.1 for any object |
测试时,对每个类别,取样对该类别的TopN个结果(按类别得分排序),按照上表中的标准分类检测结果。