titile | YOLO9000:Better, Faster, Stronger |
---|---|
url | https://arxiv.org/pdf/1612.08242.pdf |
动机 | 检测方法受限于一小部分目标,目标检测数据集有限,最常见的检测数据集包含成千上万到数十万张具有成百上千个标签的图像。分类数据集有数以百万计的图像,数十或数十万个类别。 |
内容 | YOLO V2:67FPS,76.8mAP,VOC2007。40FPS,78.6mAP,优于Faster R-cnn。 YOLO 9000:进行无标签目标的预测。19.7mAP。156类无样本,16.0mAP值。 Better: 动机:YOLO与Fast R-CNN相比存在大量的定位误差。与基于区域提出的方法相比,召回率相对较低。 目的:保持分类准确性的同时提高召回率和改进定位。 做法:传统方法:更深的网络。YOLOv2:accuracy detector and fast,简化网络。 (1)Batch Normalization:mAP提高2%。 在所有的卷积层后加BN,提高收敛性,取消正则化,可以去掉dropout而不过拟合。 (2)High Resolution Classifier:mAP提高4%。 YOLO:imagenet预训练输入224*224,检测网络448*448微调。 YOLOv2:imagenet训练后网络,10个epochs 448*448输入的fine-tune,再448*448检测网络fine-tune。适应高分辨率。 (3)Convolution With Anchor Boxes:mAP 69.5% -->69.2%,recall 81%-->88% YOLO:全连接层直接预测box坐标,98 boxes per image。 YOLOv2:去掉全连接层,使用anchor机制。 (a)去掉pooling层,输出更高分辨率。 (b)448输入改416,feature map尺寸奇数,有center cell,大目标往往占图像中心,奇数使中心有一个单独的位置来预测目标,而不是四个附近位置。网络下采样32倍,变成13*13。 (c)class prediction和spatial location分离。 (d)anchor超过一千变多,mAP下降,但recall上升。 (4)Dimension Clusters:提高5%mAP k-means聚类训练集bounding box尺寸,得到先验尺寸。 使用欧式距离的k-means,较大box比较小box误差多。而真正想要的是得到更好的IOU分数。 平衡召回率和模型复杂度选择k=5,聚类结果更少短宽的box和更多高细的box。 (5)Direct location Prediction: 原计算方法如下: 缺点:tx=1,box右移,tx=-1,box左移。公式无限制,任何anchor boxes可以在图像中的任意一点预测。模型随机初始化后需很长时间才稳定。 YOLOv2方法: 优势:和YOLO一样预测相对于grid的box的坐标。把ground truth约束在0-1之间(logistic激活函数约束网络预测值,每个cell尺寸看成1,则中心一直在该cell内)。每一个cell预测5个bbox,每个bbox预测5个坐标值,tx,ty,tw,th以及to。cell距离图像左上角边距为cx,cy,cell对应的box 的长和宽分别为(pw,ph),预测框(bw,bh),公式如上。限制位置,容易训练。 (6)Fine-Grained features:1%性能提升。 Faster R-CNN and SSD:多层预测,适应小目标。 YOLOv2:增加passthrough layer: 前面26*26*512的层,将2*2的区域转化为channel维度,变成13*13*2048,与输出的13*13*1024 concat,形成 13*13*3072。 (7)Multi-Scale Training:每隔10个batches,网络随机选择一个新的图像尺寸,图像尺寸为32的倍(320-608),适应不同分辨率。 输入228 * 228的时候,90FPS,mAP几乎和Faster R-CNN相同。适用于低性能GPU、高帧率视频和多路视频场景。 高分辨率图mAP为78.6%,超过实时速度要求。 (8)Further Experiments: Faster: VGG-16:强大的、精确的分类网络,但非常复杂。224*224图片,需要306.9亿次浮点运算。 YOLO:一种基于Googlenet的自建网络。比vgg-16要快,85亿次运算,精度比VGG-16只下降一点。224 * 224图片 single-crop, top-5 accuracy88%(VGG-16 90%)。 YOLOv2:darknet19:类似VGG,多使用3*3卷积核,池化后channel翻倍。借鉴network in network,网络用1 * 1的卷积核置于3 * 3的卷积核间,压缩特征,global average pooling做预测。batch normalization稳定模型训练,加速收敛,正则化模型。Darknet-19:19个卷积层,5个max pooling。一张图55.8亿次运算,imagenet的top-1准确率为72.9%,top-5准确率为91.2%。 (1)Training for classification:ImageNet1000类分类数据集训练,160个epochs,随机梯度下降,开始学习率为0.1,polynomial rate decay为4,weight decay为0.0005 ,momentum 为0.9。data augmentation:random crops, rotations, and hue, saturation, and exposure shifts。 fine tune为448*448。相同参数训练,10个epochs,初始学习率为0.001。网络top-1准确率76.5%,top-5准确率93.3%。 (2)Training for detection:分类网络改为检测网络,去掉最后一个卷积层,增加了3个3*3的卷积层,每个卷积层后一个1*1的卷积层,输出要检测的数量。VOC数据集,预测5种boxes,每个box包含5个坐标值和20个类别,5 * (5+20)= 125个输出维度。 passthrough layer,最后3 * 3 * 512的卷积层连到倒数第二层,使模型有细粒度特征。 160个epochs,学习率为0.001,第60、90次epochs时,学习率降为原来的十分之一。weight decay为0.0005,momentum为0.9,data augmentation: random crops, color shifting, etc。COCO 同上。 Stronger: 提出一种联合训练机制,将检测数据集和分类数据集联合训练。有label的检测数据集学习检测相关的信息,如bbox的坐标预测,是否包含目标,及目标的score。仅有类别label的分类数据集去扩展检测的种类。 训练时,混合检测和分类数据集,网络遇到检测数据集图片基于YOLOv2的全部损失函数反向传播。遇到分类数据集图片仅基于分类部分的损失函数反向传播。 挑战:检测数据集仅含common objects和general labels,如dog,boat。分类数据集 much wider and deeper range of labels,如ImageNet有超过100种dog。因此训练需要整合标签。 做法:分类多用softmax计算结果。softmax类别之间互不包含,但整合后数据类别有包含关系,如 “Norfolk terrier” 和 “dog”。 因此采用multi-label model整合数据集。该方法忽略数据集的结构(如 COCO数据集类别之间是互不包含的)。 (1)Hierarchical classification:ImageNet labels参考Wordnet,a language database that structures concepts and how they relate。 WordNet是有向图结构(而非树结构),为简化,构建了一个层次树结构(hierarchical tree)。 建立tree,遍历ImageNet中视觉名词,在WordNet上找到到根节点路径。 许多同义词集只有一条路径。先把这些路径加入hierarchical tree。然后迭代检查剩下词,得到路径,逐个加入hierarchical tree。一个名词有两条路径到根节点,选择添加边数少的路径。 wordtree,层次模型,分类时,预测每个节点的条件概率。 计算某个节点的绝对概率,沿着路径做连续乘积。 分类时,图片包含object,Pr(physical object) = 1。 验证方法:在WordTree(1000类ImageNet创建)上训练Darknet-19。创建WordTree1k添加很多中间节点,标签由1000扩展到1369。 训练:ground truth labels顺着向根节点路径传播,如一张图片label为“Norfolk terrier”也被标为“dog” 和“mammal”等。 计算条件概率,模型预测1369维向量,基于所有“同义词集”计算softmax。 相同训练参数,hierarchical Darknet-19获得71.9%的top-1精度和90.4% top-5精度。加369label且预测树形结构,精度只略微降低。 优势:遇到新的或未知类别,预测精确度不会巨幅下降。如网络输入一张狗的图片,但不确定狗的类别,网络预测为狗的score依然很高,但(“xx狗”)的score较低。 检测策略同上。不假设每张图都有object,用YOLOv2 objectness predictor得到Pr(physical object)。detector一个bounding box和 the tree of probabilities。沿根节点向下每次走score最高分支直到达到某个阈值,最终预测物体的类别为最后的节点类别。 (2) Dataset combination with WordTree:用WordTree整合多数据集。只需把数据集中的类别映射到树结构中的同义词集合(synsets)。 (3)Joint classification and detection:整合COCO检测数据集和ImageNet前9000类。从ImageNet detection challenge 中向整合数据集添加不在整合数据集的类别验证效果。 WordTree 9418类别。oversampling COCO数据集保持ImageNet:COCO = 4:1。 训练YOLO9000,使用YOLO v2结构,anchor box为3限制输出大小。 网络遇到检测图正常反向传播。其中分类损失只在当前及其路径以上对应的节点类别上进行反向传播。 网络遇到分类图仅反向传播分类损失。在该类别对应的所有bounding box中找一个置信度最高的(作为预测坐标),只反向传播该类及其路径以上对应节点的类别损失。反向传播objectness损失:预测box与ground truth box的重叠度至少0.31IOU。 联合训练:YOLO9000从COCO数据集学习寻找object,从ImageNet数据集学习更广泛的object分类。 评估:ImageNet detection task和COCO仅有44个object类别相同。YOLO9000测试数据集中只包含多数分类类别少数检测类别。19.7mAP,未见过的156个object classes16.0mAP。 可以同时实时检测9000多种其它物体类别。 YOLO9000学习新动物类型表现很好,对于像衣服、设备这种类别表现不好。因为从COCO数据集上动物类别学习的object预测泛化性好。但是COCO数据集没有衣服类别标签(只有person)。 |
思考 | 难以检测小物体 |
网友评论