YOLOv2
速度
--YOLOv2:67FPS(76.8mAP on VOC2007);40FPS(78.6mAP on VOC2007),mAP优于Fater R-CNN(ResNet和SSD)而且运行更快;
目的
--改进YOLO;
--为了解决检测图像标签昂贵而不能进一步提高网络检测性能的问题,利用ImageNet分类数据和COCO检测数据的组合数据集联合训练一种多达9000类的实时检测模型;
YOLO改进--Better
--YOLO与Fast R-CNN对比,其错误主要来源于定位错误,而且相比于基于区域的方法,YOLO具有相对低的检全率;所以接下来的问题就是在维持分类精度的同时提高检全率与定位准确率;以往的网络为了提高准确率往往是加深加大网络,YOLOv2为了保持原有的快速,简化网络模型并且寻找更容易学习的(损失)表示法(收集以前的各种想法,用新的概念改进YOLO的性能);
--Batch Normalization:所有层添加batch normalization;提高约2%的mAP;无过拟合情况下去掉dropout;
--High Resolution Classifier:将YOLO中在ImageNet上和224*224分辨率条件下训练的模型,首先在448*448分辨率条件下微调10epoch是,使得网络能够更好的适应高分辨的输入;提高几乎4%的mAP;
--Convolutional With Anchor Boxes:借鉴Fater R-CNN的Anchor boxes;预测偏置而不是坐标简化了问题,使得该网络能够更好的学习;做法:移除全连接层使用anchor,删除一个池化层增加输入分辨率,输入图片大小改为416使得特征map的位置数量为奇数(可以有一个中间的cell,因为目标往往位于图片的中间,而不是附近四个位置),将之前每一位置的预测一个类的条件概率和和多个目标对象预测替换成为每个anchor box预测一个类和目标对象(真实的目标框与预测的目标框的IOU);无anchor boxes:69.5mAP,recall81%;有anchor boxes:69.2mAP,recall88%;mAP下降少许,但是检全率增加;
--Dimension Clusters(尺寸聚类)(使用Anchor boxes的第一个问题):之前的anchor尺寸都是先验知识手动挑选的,好的尺寸会得到好的检测;在训练集上利用k-means聚类自动寻找好的anchor尺寸;利用k-means的Euclidean distance进行聚类,运用小boxes和大boxes生成的结果存在误差,而需要的anchor尺寸是不会依赖训练集boxes尺寸的,所以YOLOv2使用的距离公式为;
--Direct location prediction(使用Anchor boxes的第一个问题):模型不稳定,尤其是早期迭代时(这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束,tx没有数值限定,可能会出现anchor检测很远的目标box的情况,效率比较低);将预测直接的offset改为预测相对于grid cell的坐标位置,为此利用logistics回归函数将ground truth限制在0到1之间;限制了位置预测使得模型更加稳定,使用尺寸聚类并且直接预测boundingbox的中心位置,YOLOv2的性能提高5%;
(论文中应该为加号,据有关资料,不过不影响理解,表明tx为正向右移,反之,左移)
(预测的5个坐标为)
--Fine-Grained Features(细粒度特征):修改使YOLO最终在13 * 13的特征图上进行预测(足以胜任大尺度物体的检测),细粒度特征可能对小尺度的物体检测有帮助;Faser R-CNN和SSD在不同层次的特征图上产生区域建议(SSD直接就可看得出来这一点),获得了多尺度的适应性。添加了一个转移层( passthrough layer),这一层要把浅层特征图(分辨率为26 * 26,是底层分辨率4倍)连接到深层特征图;passthrough layer,具体来说就是特征重排(按行和按列隔行采样);
--Multi-Scale Training:每10batches随机选择图像的维度,最小320*320,最大608*608;
--Further Experiments:在VOC2012上训练YOLOv2以及在COCO数据集上训练
YOLO改进--Faster
--总览:很多检测网络依赖VGG-16作为特征提取部分,VGG-16是一个强大而准确的分类网络,但是复杂度有些冗余;224 * 224的图片进行一次前向传播,其卷积层就需要多达306.9亿次浮点数运算;YOLO使用基于Googlenet的定制网络,比VGG-16更快,一次前向传播仅需85.2亿次运算;但精度要略低于VGG-16,单张224 * 224的top-5准确率为88%(YOLO)和90%(VGG-16);
--Darknet-19:借鉴network in network的思想,网络使用全局平均池化(global average pooling),1 * 1的卷积核置于3 * 3的卷积核之间,用来压缩特征;用batch normalization稳定模型训练、加速收敛并正则化模型;Darknet-19运算次数为55.8亿次,imagenet图片分类top-1准确率72.9%,top-5准确率91.2%;
--分类训练:标准ImageNet 1000类分类数据集;160epochs;SGD;初始学习率0.1;多项式速度衰减(polynomial rate decay)权值为4;weight decay 0.0005;momentum 0.9;Darknet-19网络框架;数据集扩展:随机裁剪,旋转,hue,saturation和exposure的变换;训练时初始图片大小为224*224,在448*448图片上微调图像(参数同上,训练10epochs,初始学习率0.001),最终在448*448分辨率下实现top-1准确率76.5%和top-5准确率93.3%;
--检测训练:删除最后一个卷积层及后面的层,添加3个3*3*1024卷积层和一个用于检测1*1*out_num的卷积层;为了能够使用细粒度特征,在倒数第三个卷积层后添加一个转移层(最后一个3*3*512层);训练:160epochs,初始学习率0.001(在60epochs和90epochs时分别除以10),weight decay 0.0005,momentum 0.9;数据扩展方式与YOLO和SSD类似;
YOLO改进--Stronger(YOLO9000)
--总述:提出在分类数据和检测数据集上联合训练的机制;使用检测数据集学习特定检测信息(boundingbox的坐标和目标对象(置信度))以及对公共目标分类;使用分类数据集扩展以上能够检测到的目标的类别数量;
--训练:混合分类数据与检测数据,网络识别训练数据为检测数据时,反向传播YOLOv2的整个损失,反之,只反向传播分类部分的损失;
--挑战:检测数据具有普遍目标的概括性标签(例如狗不会细分),而分类数据具有宽泛深层次的标签,所以要合并数据集训练就需要以一种连贯的方式合并两类数据的标签 ;
--层次分类:层次树;利用可能的词增加层次树;词语存在多条路径,选择短路径;形成WordTree;为了执行分类,计算条件概率;某一节点的绝对条件概率,利用条件概率知识计算,默认根节点概率为1;
--验证(WordTree上的对比):Darknet-19;WordTree;1000 class ImageNet;WordTree1k;标签空间从1000到1369;模型预测1369维向量;根据每一层次计算softmax;训练参数与之前相同,层次Darknet-19实现top-1准确率71.9%和top-5准确率90.4%(Darknet-19,top-1准确率76.5%和top-5准确率93.3%);
--用WordTree组合数据集
--联合分类和检测:WordTree组合COCO 检测数据集和9000类的ImageNet;可以从ImageNet上添加之前不存在的检测数据集;平衡COCO 检测数据集和9000类的ImageNet;使用3个anchor限制输出向量的大小;损失反向传播(分类数据与检测数据集);IOU至少为0.3(假设);
--评估:ImageNet上得到19.7mAP;检测数据里未出现的ImageNet的156类上得到16.0mAP;(任务ImageNet上每张图片只有一类);该结果比DPM模型的检测性能高,而且YOLO9000检测很多类,半监督,具有实时性;
--优缺点:可以很好的学习新动物(从COCO数据集上得到);COCO没有关于任何衣服类型的标签,所以YOLO9000在检测这类目标上具有竞争性;
--接下来的工作:分割领域;弱监督的图像分割;训练期间为分类数据使用弱标签以提高检测性能;