YOLO? v2介绍:
? ? ? ?在原论文当中,使用pascal voc 2007数据集以及imagent数据集联合训练,最后能检测的类别超过9000,所以原论文名叫作YOLO9000。yolov2相比于yolov1,变强大了很多。
? ? ? ? ?上图给出了当时主流的目标检测网络框架的FPS-mAP性能对比,可以很明显的看出,YOLOv2的强大,比较常用的是YOLOv2 416*416配置。
YOLOv2在YOLOv1的基础上进行的各种尝试,改进措施:
? ? ? ? 1、Batch Normalization(BN层)
? ? ? ? ? ? ? ? 在YoLOv2中,作者在每个卷积层后面都加上了BN层,对训练收敛有非常大的帮助,同时也减少了所需使用的正则化处理,且可以移除dropout操作(解决过拟合)。对于没有使用BN层,可以提高大概两个百分点的mAP。
? ? ? ? 2、High Resolution Classifier(高分辨率的分类器)
? ? ? ? ? ? ? ?在yolov2中,作者采用448*448分辨率的分类器,可以提高4个百分点。
? ? ? ? 3、Convolutional With Anchor Boxes(基于anchor的目标边界框的预测)
? ? ? ? ? ? ? ? 在yolov1当中,预测目标边界框是直接预测其中心坐标和长宽,这种预测的效果是比较差的。所以这里作者尝试使用基于anchor的目标边界框的预测,可以简化目标边界框预测的问题以及使得网络更加容易学习以及收敛。采用anchor的方式,mAP并没有上升,但是噪回率有很大的提示(意味着模型有更多的提升空间)。
? ? ? ? 4、Dimension Clusters (对于anchor 的聚类)
? ? ? ? ? ? ? ? 针对于如何预测anchor或default box的尺寸大小问题,采用聚类的方法获得。
? ? ? ? 5、Direct location prediction (对边界回归框的预测)
? ? ? ? 6、Fine-Grained Features(更底层的特征信息)
? ? ? ? ? ? ? ? 在最终的预测特征图上,结合给底层的特征信息。因为更底层的特征信息,会包含更多的细节在里面,这些细节就是在检测小目标所需要的。将高层的信息以及较底层的信息进行融合(通过PassThough Layer进行融合)。
? ? ? ? 7、Multi-Scale Training? (采用多尺度的训练方法)
? ? ? ? ? ? ? ? 在训练过程中替换掉固定的训练尺寸。每迭代10个batches,就调整输入网络的大小,网络的大小是32的整数倍,从{320~608}选取一个数值,作为网络的输入尺寸。
YOLO的BackBone
? ? ? ? 在YOLOv2中使用的主干网络是Darknet-19(使用了19个卷积层),下图是该网络结构的配置:
????????
? ? ? ? ?在上面是以224*224大小作为训练,但在实际使用过程中,会采用448*448高分辨率进行训练,如上文所述。作者这里采用224*224大小输入,主要和之前的分类网络进行一个对比。
YOYOv2的模型框架
? ? ? ? 这里采用的是416*416输入大小作为例子,采用一系列卷积以及最大池化构成的,如下图:
? ? ? ? ? ? ? ? ?
? ? ? ? 比如第一个卷积层,卷积核的个数为32个,卷积核的大小为3*3,步距为1(没有给出,则默认为1),padding也为1,所以输出为416*416*32。
? ? ? ? 然后通过最大池化层,池化核大小为2*2,步距为2,所以输出为208*208*32.
? ? ? ? 说明:对于每一个Convolutional部分,都是由三部分组成:卷积层(Conv2d,不包含偏置,因为使用了BN层),BN层,LeakyReLU激活函数激活。
? ? ? ? 解释:该模型框架移除了DarkNet的最后一个卷积层以及相连接的操作,在后面添加了3个3*3的卷积层(卷积核为1024),最后再接上一个1*1的卷积层,其输出的个数就是我们需检测目标的参数 (比如VOC数据集:它会预测5个Bounding box,每个box带有5个参数以及需要预测VOC数据集20个类别分数,所以最后一层需(5+20)*5个卷积核)。
????????
? ? ? ? (说明:以上各图,并非原创。)
|