您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > AI人工智能培训课件-YOLOv2解析-6.19
目标检测YOLOv2解析YOLOv2简介YOLOv2/YOLO9000,JosephRedmon在2016.12发表,YOLOv2引入了AnchorBox,并用了很多改进;YOLO9000是在YOLOv2基础上提出的联合训练方法,可以预测超过9000个不同目标类别。YOLO9000:Better,Faster,Stronger设计思想•YOLOv2借鉴了很多技巧,如FasterR-CNN的RPN和锚定框等•DarkNet-19:类似VGG,输出层去掉FC层而用卷积层替代,减少了网络对输入图像尺寸的敏感程度,就可以多尺度训练,网络参数与featuremap尺寸无关。•引入AnchorBoxes的思想,改进直接回归的检测方法•每个网格有5*(4+1+20)=125个参数,最后卷积层输出(S*S)*B*(5+C)•K-means生成5个AnchorBoxes,IOU值作为距离指标•均使用批归一化,取消了dropout,来规范模型,收敛更快,模型稳定•v1也大量使用了BN,但同时在定位层(FC层)采用dropout防止过拟合。•直接位臵预测:预测边界框中心点相对于对应cell左上角位臵的相对偏移值。使用Sigmoid限制偏移值tx,ty在(0,1),以将边界框中心点约束在当前cell。•增加细粒度特征(类似多尺度特征):通过passthrough方法把浅层特征图连接到深层特征图。而v1只用一个维度的特征。设计思想•多尺度训练:在训练过程中每间隔多少个迭代之后,随机选择一种输入图片大小,这样同一个模型就可以适应多种尺寸的图片。•训练有三个阶段:•先在ImageNet分类数据集上预训练Darknet-19,此时模型输入为224×224,训练160个epochs。•将网络的输入调整为448×448,继续在ImageNet数据集上微调高分辨率分类器,训练10个epochs。•修改Darknet-19分类模型为检测模型,并微调网络。•YOLO9000:目标分类与检测的联合训练方法,通过WordTree来混合检测数据集与识别数据集。联合使用coco物体检测和imagenet物体分类标注数据,分别学习定位、分类信息。•VOC200776.8TitanX15ms;VOC200778.6TitanX25ms;VOC201273.4。主干网络Darknet-19•采用了一个新的主干网络Darknet-19(特征提取器),有19个卷积层,5个池化层。•Darknet-19与VGG16模型设计原则是一致的,主要采用3×3卷积,采用2×2的最大池化层之后,特征图维度降低2倍,而同时将特征图的通道增加两倍。•与NIN(NetworkinNetwork)类似,Darknet-19最终采用globalavgpooling+Softmax做预测,并且在3×3卷积之间使用1×1卷积来压缩特征图通道以降低模型计算量和参数。•每个卷积层后面同样使用了batchnormalization层以加快收敛速度,降低模型过拟合。•在ImageNet分类数据集上,Darknet-19的top-1准确度为72.9%,top-5准确度为91.2%,但是模型参数相对小一些。使用Darknet-19之后,YOLOv2的mAP值没有显著提升,但是计算量却可以减少约33%。主干网络Darknet-19使用AnchorBoxes的卷积层•YOLOv2借鉴了FasterR-CNN中的Anchor思想:简单理解在卷积特征图上进行滑动窗采样,每个特征点中心预测5种不同大小和比例的建议框。由于都是卷积不需要reshape,很好的保留的空间信息,最终特征图的每个特征点和原图的每个Cell一一对应。•而YOLOv1使用全连接层数据进行边界框预测(要把1470×1的全连接层reshape为7×7×30的最终特征),这会丢失较多的空间信息而定位不准。而且对B个边界框是任意猜测的,在早期训练中,预测在相互争论什么样的特定形状合适,容易受到不稳定梯度的影响。•总的来说就是移除全连接层以获得更多空间信息,又去掉最后的一个池化层确保输出的卷积特征图有更高的分辨率,使用AnchorBoxes来预测边界框。•输入尺度是416x416,让特征图的宽高都为奇数,保证图像正中心有一个单元格,因为大物体一般出现在图像中心,此时使用特征图的一个中心点的cell去预测这些目标的边界框相对容易些,否则就要用中间的4个Cells来进行预测。卷积层后是32倍下采样,416/32=13,最终得到13×13的特征图。使用AnchorBoxes的卷积层•为了生成形状为7×7×125的预测,用三个3×3卷积层替换最后一个卷积层,每个有1024个输出通道,然后用最终的1×1卷积层将7×7×1024输出转换为7×7×125。•从某种意义上来说,YOLOv2和SSD这两个单阶段模型与RPN网络本质上无异,只不过RPN不做类别的预测,只是简单地区分目标与背景。•在两阶段方法中,RPN起到的作用是给出regionproposals,其实就是作出粗糙的检测,所以另外增加了一个阶段,即采用R-CNN网络来进一步提升检测的准确度(包括给出类别预测)。•而单阶段方法想要一步到位,直接采用“RPN”网络作出精确的预测,要因此要在网络设计上做很多的技巧。预测向量长度•YOLOv2不再让类别的预测与每个Cell(空间位臵)绑定一起(解耦),而是全部放到AnchorBox中,由AnchorBox同时预测类别和坐标。一个Cell预测有K个框,有K*(4+1+20)个长度。下图是一个Cell的预测向量。•而YOLOv1是由每个Cell来负责预测类别,每个Cell对应的2个BoundingBox负责预测坐标。一个Cell有2个框,有2*(4+1)+20个长度。•将类别预测从Cell级别转移到边界框级别。每个Cell预测包括边界框的4个坐标参数,1个框臵信度得分(objectness)和20个类别概率。如每个Cell选5个边界框,则每个网格单元(gridcell)有5*(4+1+20)=125个参数。•YOLOv1只能预测98个边界框(7×7×2),而YOLOv2使用anchorboxes之后可以预测上千个边界框(13×13×9=1521)。•所以使用anchorboxes之后,YOLOv2的锚定框将mAP从69.5略微降低至69.2,但召回率从81%提高到88%。准确度稍微降低,但它增加了检测所有GT目标的机会。预测向量长度手工选择AnchorBoxes形状(未采用)•现实中边界框不是任意的(YOLOv1就是任意的),例如汽车的形状非常相似,行人的宽高比约为0.41。由于只需要一个猜测是正确的,如果从对现实生活对象常见的猜测开始,初始训练将更加稳定。•如可以手工创建5个具有以下形状的AnchorBox,测每个锚定框的偏移量,而不是预测5个任意的边界框。•如果约束偏移值,可以保持预测的多样性,并使每个预测集中在特定的形状上。初始训练将更加稳定。维度聚类(DimensionClusters)生成先验框•使用Anchor时,作者发现Faster-RCNN中锚定框的个数和宽高维度往往是手动挑选的先验框(Hand-PickedPriors),设想能否一开始就选择了更好的、更有代表性的先验框维度,那么网络就应该更容易学到准确的预测位臵。•用统计学习中的K-means聚类方法生成精选的先验框更具有代表性,使得检测任务更容易学习。即通过对数据集的GT框做聚类,找到GT框的统计规律。以聚类个数k为锚定框个数,以k个聚类中心Box的宽高维度为宽高的维度。•如果按照标准K-means使用欧式距离函数,大框比小框产生更多误差。我们真正想要的是使得预测框与GT框的有高的IOU得分,而与框的大小无关。因此采用了如下距离度量,即聚类分析时选用box与聚类中心box之间的IOU值作为距离指标:维度聚类(DimensionClusters)生成先验框•左图:随着k的增大,IOU也在增大(高召回率),但是复杂度也在增加,最终得到k=5时复杂度和IOU最佳平衡。右图:选出的5个聚类的中心与手动挑选的框是不同的,扁长的框较少,瘦高的框较多。批归一化(BatchNormalization)•神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同,那么网络的Batch梯度下降算法就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。•解决办法之一是对数据都要做一个归一化预处理。YOLOv2网络通过在每一个卷积层后添加批归一化(batchnormalization),极大的改善了收敛速度同时减少了对其它正则化方法的依赖(舍弃了Dropout优化后依然没有过拟合),使得mAP获得了2%的提升。直接位臵预测(DirectLocationPrediction)•引入Sigmoid函数预测边界框相对于对应cell左上角位臵的相对偏移值,预测边界框的宽度和高度作为聚类中心的偏移量,解决了anchorboxes的预测位臵问题,采用了新的损失函数。由于我们限制位臵预测参数化更容易学习,使网络更稳定。•作者借鉴了RPN网络使用的锚定框去预测边界框相对于图片分辨率的offset,预测offset值而不是坐标值,简化了实际问题,并且更便于网络学习。由于预测层是卷积,所以RPN预测offset是全局性的。•但如果通过(x,y,w,h)四个参数去确定锚定框的位臵,但是这样在早期迭代中x,y会有模型不稳定。因为RPN是一个区域预测一次,是从anchorbox到附近检测框真值的边界框回归;但是YOLO中是169个girdcells一起预测,处于一个girdcell的x,y可能会跑到别的girdcell中,导致不稳定。•网络预测值tx,ty,(x,y)中心坐标计算如下:这个公式是不受限制的,所以任何锚盒都可以在图像任一点结束,而不管在哪个位臵预测该边界框。随机初始化模型需要很长时间才能稳定以预测合理的偏移量。直接位臵预测(DirectLocationPrediction)•YOLOv2预测边界框中心点相对于对应cell左上角位臵的相对偏移值。为了将边界框中心点约束在当前cell中,使用Sigmoid函数限制偏移值tx,ty在(0,1)范围内;关于w,h的也改进了YOLOv1中误差平方的计算方法,tw,th用了RPN中的log函数处理。•根据边界框预测的4个offsetstx,ty,tw,th,可以按如下公式计算出边界框实际位臵(坐标值)和大小,这个Cell距离图像左上角的边距为(cx,cy),该Cell对应的边界框先验维度(BoundingBoxPrior)的宽和高分别为(pw,ph),预测值如下:直接位臵预测(DirectLocationPrediction)•最终,网络在特征图(13×13=169)的每个Cell上预测5个边界框,每一个边界框预测5个值tx,ty,tw,th,t0(前四个是偏移,t0是臵信度)•使用DimensionClusters和DirectLocationPrediction这两项AnchorBoxes改进方法,mAP获得了5%的提升。•Darknet中C语言实现:训练高分辨率分类器(High-resolutionclassifier)•所有State-Of-The-Art的检测方法都在ImageNet上对分类器进行了预训练。•YOLOv2以224×224图片开始用于分类器训练,但是然后使用更少的epoch再次用448×448图片重新调整分类器。让网络可以调整滤波器来适应高分辨率,这使得检测器训练更容易。使用高分辨率的分类网络提升了将近4%的mAP。•而YOLOv1以224×224的分辨率训练分类器网络,并将分辨率提高到448进行检测。这意味着网络必须同时切换到学习目标检测和调整到新的输入分辨率。多尺度训练•由于YOLOv2模型移除了全连接层后只有卷积层和池化层,所以YOLOv2的输入可以不限于416×41
本文标题:AI人工智能培训课件-YOLOv2解析-6.19
链接地址:https://www.777doc.com/doc-7357272 .html