titile | You Only Look Once: Unified, Real-Time Object Detection |
---|---|
url | https://arxiv.org/pdf/1506.02640.pdf |
动机 | 最近目标检测方法(如R-CNN):先产生proposal,再用分类器分类,最后后处理(细化 bounding boxes、消除多余框等),因为每部分单独训练,流程复杂,速度慢,优化难。 |
内容 | 将目标检测看作单一的回归问题,直接从图像像素到边界框坐标和类概率, 优势:(1)速度快,在Titan X GPU上无批处理每秒45帧,快速版本超过150fps,是其他实时系统mAP两倍以上。 (2)FP少,训练和测试时输入整个图像(非sliding window and region proposal-based techniques),隐式编码了类别的上下文信息和外观。Fast R-CNN无上下文信息,会将背景误检为目标。YOLO的背景误检数量比它少了一半。 (3)学到泛化特征,artwork领域优于DPM和R-CNN。 劣势:精度不高(定位错误,小目标检测不好(一个cell只能检测两个物体))。 Unified Detection: YOLO将输入图像划分为S*S个cell,每个cell负责去检测中心点落在该cell内的目标,每个cell预测B个bounding boxes及它的confidence scores(box是否有物体及box准确度),每个cell预测C个类别(与B无关)。公式第一项代表一个Object是某个类别的概率。公式二三项代表confidence。 首先ImageNet 1000-class的分类任务数据集Pretrain卷积层。Pretrain网络:上述网络前20 个卷积层,加一个 average-pooling layer,最后加一个全连接层。 Pretrain结果的前20层卷积层用到Detection,加入随机初始化的4个卷积层及2个全连接。 为获取更精细化的结果,输入图像由 224* 224 提升到 448* 448。 归一化bounding box的宽高,最后一层linear activation function,之前采用leaky rectified linear activation,解决RELU梯度消失。 sum-squared error loss问题: (1) localization error和classification error维度不同,同等重要不合理。 (2) cell中没有object(很多),cell的bounding box的confidence 为0,相比于较少有object的cell,不包含object的对梯度更新的贡献会远大于包含object,网络不稳定甚至发散。 (3)不同大小的bbox预测,大bbox和小box预测偏相同的尺寸小的对IOU的影响更大。而sum-square error loss中对同样的偏移loss是一样。 解决: (1)更重视坐标预测,损失前面赋予更大的loss weight, 记为 λcoord ,在pascal VOC训练中取5。 (2)没有object的bbox的confidence loss,赋小的loss weight,记为 λnoobj ,在pascal VOC训练中取0.5。 (3)有object的bbox的confidence loss和类别的loss的loss weight正常取1。 (4)将box的width和height取平方根代替原本的height和width。 small bbox的横轴值较小,发生偏移时,反应到y轴上的loss比big box要大。 训练希望每一个object由一个bounding box预测,选择IOU最大的。 前20个元素是类别概率值,然后2个元素是边界框置信度,最后8个元素是边界框坐标。方便提取每一个部分。首先网络的预测值是一个二维张量P ,shape为[batch, 7730]。采用切片,P[:,0:7*7*20]是类别概率部分,P[:,7*7*20:7*7*(20+2)]是置信度部分,P[:,7*7*(20+2):] 是边界框的预测结果。方便训练及预测时的计算。 data augmentation:random scaling and translations(原尺寸20%);随机调节曝光和饱和度(HSV 1.5) 测试:大目标和接近multiple cells边框的目标,需要多个cells定位;NMS修正多检测目标,提升2-3%mAP。 通常测试方法:首先,对于每个box确定类别,大小[7,7,2](98个box) 。然后类别分数小于阈值的box滤掉。最后对这些box使用NMS算法,留下最后的检测结果。(NMS通常是区分类别进行,但也有所有box一起,可能是因为不同类别目标出现在相同位置这种概率很低)。 Yolo测试方法:(先使用NMS,再确定各个box的类别)。对于98个boxes,首先将小于阈值的值归0,然后分类别地对score采用NMS,NMS处理结果不剔除,将其score值置0。最后才是确定各个box的类别,当score不为0时才检测结果输出。 论文表示NMS算法对Yolo的性能是影响很大,可能这种策略对Yolo更好。但是两种方法测试结果相同。 (1)强空间限制,一个cell预测两个boxes和一个class,对临近物体和成群的小物体效果不好(漏检)。 (2)boxes尺度变化较敏感,尺度上泛化能力较差。 (3)定位精度差。 Comparison to Other Detection Systems: Deformable parts models:sliding window,extract static features, classify regions, predict bounding boxes for high scoring regions,Yolo更快精度更高。 R-CNN:Yolo更快,bounding boxes更少98 vs 2000。 Fast and Faster R-CNN:达不到实时 Deep MultiBox:目标检测一部分,不是完整系统(CNN得到RoI)。 OverFeat:CNN定位并用其检测,仍需sliding window detection,无全局上下文信息。 MultiGrasp:Yolo设计与其类似,grasp detection任务简单。 |
实验 | YOLO背景的误判率(4.75%)比fast rcnn(13.6%)低很多。但YOLO的定位准确率较差,占19.0%,而fast rcnn仅8.6%。 |
思考 | 精度不高,难以检测小物体,定位不准 |
YOLO
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 经典的目标检测网络RCNN系列分为两步,目标proposal和目标分类。而Faster-RCNN中把目标propo...
- yolo forward network.c 获取box函数: 所以yolo Box的取值为: box_loss...
- 介绍 当前主流的CNN目标检测框架可分为两类:包含Region proposals提取阶段的两阶段目标检测框架如R...
- 介绍 相信SSD的横空出世委实给了Yolo许多压力。在目标检测准确性上Yolo本来就弱于Faster-RCNN,它...
- 介绍 如果你已读过之前Yolo v1与Yolo v2系列的文章,另外对FPN/RetinaNet等模型也有所了解,...