YOLOv2和YOLO9000论文总结

YOLOv2详解

yolo模型和fast rcnn比有定位误差大,而且recall比较差,yolov2在关注准确率上提高定位和recall值对yolo进行改进,从几个方面进行改进:

  1. Batch Normalization:在所有卷积层后添加BN,可以加快了模型的收敛速度,取代了其他的正则化,还替代了dropout,同样可以防止过拟合,给模型带来了2%的mAP的改善;
  2. 高输出的分辨率:YOLO输入图片的尺寸是224X224,现在改为了448X448,在224X224的参数上使用Imagenet数据集进行10epochs的微调,模型增加了差不多4%mAP;
  3. 使用多个Anchor Boxes:借鉴于Faster-RCNN的RPN结构,使用多个anchor box,RPN中使用了9个anchor boxes,很多大目标都是在图像中间,为了保证中间大目标落到一个特征点上而不是周围4个特征点,所以要使最后一层的卷积层为奇数,这样就能使特征图中心位置的特征点只有一个,所以调整上述输入图像为448X448改为416X416,整个卷积层的缩放比例为32,这样最后得到13X13的特征图,这种改进使mAP值下降了0.3mAP,但是recall提高了7%,给模型改善带来了空间。
  4. 对Anchor Boxes进行聚类选择适合的个数:通过对VOC和COCO数据集的目标聚类,在权衡模型复杂度和高recall上选择了k=5个anchor boxes,多为窄高的boxes表现好,在k=5是平均IOU为61.0%;
  5. 直接预测边框:抛弃了使用真实边框和5个anchor boxes边框偏移量计算方式,改为直接计算,如图所示,直接回归出5个值,除去置信度,预测四个坐标(t_{x},t_{y},t_{w},t_{h}),anchor boxes边框在特征图上的距离左上角的的特征图四方格子个数为(c_{x},c_{y}),这样只要保证预测出占一个格子的比例就可以了,即预测值要在0-1之间,就能计算出预测边框距离特征图左上角的占有格子的个数,所以使用sigmoid对t_{x},t_{y}值进行约束,就能保证值为在0-1之间,预测边框则为b_{x}=\sigma (t_{x})+c_{x}得到所在位置在特征图所在格子个数,第4条和第5条合计使模型效果改善了5%mAP;

    YOLOv2和YOLO9000论文总结_第1张图片

  6. 对小目标识别的方式:模型使用了倒数第二的特征图即26x26的特征图,把26x26x512变为13X13X2048,在叠加上最后一层特征图的13x13,这样使mAP增加了1%;
  7. 多尺寸训练:对输入尺寸在{320,352,……,608}一次增加32的尺寸大小进行调整,每10batches都随机调整尺寸,对模型进行训练,得到了一系列了模型效果,在相同参数上,输入尺寸越大效果越好,但是速度越慢,需要在速度和准确率上做权衡;
  8. Darknet-19:使用VGG-16在ImageNet上比Googlenet好2%,但是VGG-16参数量有很大,因此使用1x1的卷积对VGG-16参数进行压缩,改善之后的模型叫做Darknet-19,具体参数见下图:

    YOLOv2和YOLO9000论文总结_第2张图片

以上8点改进使YOLOv2效果变得更好。


YOLO9000

分类数据集比较多,而目标检测数据集相对比较少,yolo9000是在yolov2的框架上进行修改最后标签分类得到的模型,作者提出了一种使用分类数据集和目标检测数据集联合训练的方法,联合数据集训练有困难:

  1. 数据在损失函数计算的问题:在训练时,如果发现数据是来自于分类数据集只计算分类部分的损失函数进行反向传播,如果是目标检测数据则使用完整的损失函数进行反向传播;
  2. 不同数据集标记标签不同的问题:作者采用的解决方案为把标签转化为树结构。建立标签直接的关系,作者联合WordNet,WordNet是对物体建立的有向图关系库,通过WordNet中找到数据的不同标签直接的关系,找到所有标签的最上端的根节点,依次往下梳理标签,添加对应的中间标签,添加原则:(1)父节点包含子节点的数据范围(如:父节点是狗,子节点就是哈士奇等狗的种类),(2)一个标签存在两条链路可以到达根节点则选择到根节点最短的路径父节点下进行添加节点;如图所示构建节点结构:

    YOLOv2和YOLO9000论文总结_第3张图片

     

  3. 概率的计算问题:解决方案为计算相对条件概率。按照上述树结构的建立标签之间关系,模型计算每个父节点下的子节点的条件概率,比如:标签从根到下为:动物>狗>哈士奇,P(哈士奇)=p(动物)*p(狗|动物)*p(哈士奇|狗) ,同一个父节点下的子节点预测概率总和为1,也就是每一个父节点的子节点都做一次Softmax计算条件概率如图上部分为原始ImageNet数据做Softmax下为树结构的Softmax的方式:

    YOLOv2和YOLO9000论文总结_第4张图片

  4. ImageNet数据多和目标检测数据(coco)少的不均衡问题:对coco数据进行过采样。使训练样本数据4:1。

以上四点改进,使用WordNet进行树链接标签,使用COCO数据进行目标定位,ImageNet做目标分类,扩充分为到9000多种。

总结

yolov2是对yolo在一些关键点的改进,通过众多的改进点,使模型效果变好,这种小改进的累加的思想也可以用到我们日常的模型改善方法中,在anchor boxes采用了聚类方法,使初始化anchor box更加接近目标,值得借鉴,yolo9000的联合数据集方法很新颖,通过数据集的联合达到扩充数据的作用很不错!

 

 

 

你可能感兴趣的:(目标检测,深度学习,机器学习)