精读论文:You only look once: Unified, real-time object detection

You only look once: Unified, real-time object detection

去年的存货,丢博客上算做个备份吧

Abstract

老方法

  • repurpose classifier 来做detection
  • 即先做classifier做class probabilities(cp)预测,再换regressor做bounding boxes(bb)预测

YOLO

  • object detection 新方法
  • 将 object detection 看作regressor问题
  • 即用regression来解决bb,cp,这两个问题
  • 用一个neural net,一次evaluation,直接预测bb,cp
  • 一个模型,能做到end-to-end optimization
YOLO的速度
  • 45 frames/s, 155 frames/s
  • 对比state-fo-the-art, 背景的false positive 预测比例低
  • 优越的学习物体general representation 的能力

1.Introduction

快速准确的做object detection 算法的意义在……

  • 无人驾驶:无需特殊的sensor
  • 人体辅助设备:向用户反映实时数据
  • 释放 general purpose, responsive robotic systems 的潜力

YOLO之前的object detection算法

  • repurpose claasifier 来做detection
  • 在不同的scales的测试图片上,及图片里不同的locations上使用classifier
  • DPM(deformable parts models)使用sliding window做上述工作

更近的算法,R-CNN

  • region proposal methods:
    • 为图片生成潜在的bb
    • 针对每个bb做classifier分类
  • post-preprocessing
    • refine bb, 删除重复的bb,rescore bb(基于图中其他的objects)
  • 评价
    • 复杂
    • 低效
    • 每个部位独立训练,难以统一优化、提高效率

到底什么是YOLO?

  • YOLO眼里object detection是一个regression问题
  • 一次性喂入图片,然后给出bb和cp的值的生成(regression)
  • 换言之,只看一次就知道图中物体的类别和位置

YOLO很简单

  • 一个CNN模型
  • 同时输出bb,cp两个结果
  • 从图片到以上两个结果,是end-to-end training,容易优化
  • 算法流程(见图1)

YOLO对比传统的算法的优势

  • 计算高效
    • 45 frames/s, 155 frames/s
    • 处理实时视频的滞后性只有25mm
    • 处理精度是其他实时处理算法的2倍
  • 全局性强
    • reasons, sees更完整全面的图片样本
    • encodes contextual information 来应对分类和定位问题
    • 传统方法,如fast r-cnn容易将背景误认为是物品,因无法看到更大的context
    • YOLO误将背景当作物体的比率是fast r-cnn的一半
  • 对物品做到更generalized representation
    • 更自然(对于那些没有过度变形处理)的图片上训练
    • 在artwork上测试
    • 效果远胜过传统方法DPM, R-CNN
    • 在new domain 和出乎意料的样本上,也能表现平稳

不足之处

  • 虽然速度快,但精度不是最高的
  • 尤其在小图片的定位上,精度有待提高
  • 在实验中会提到速度和精度的tradeoff

代码和训练好的模型已经开源

2.Unified Detection

什么是Unified Detection?

  • 将原来分割的部件,合并为一个neural net
  • 每一个bb,都是基于全图里的特征来预测的
  • 同步为图片里所有类别物体做bb预测(很强的全局能力)
  • 具备end-to-end训练优势,在维持整体高精度的情况瞎实现实时处理

How it work?

  • 把图片分成S×S格
    • 如果物体的中心落在某个格子内,该cell负责detect该物体
  • 即该cell要预测该物体的bb和confidence score
  • confidence score 包含两个概率:
    • cell内有物体的概率
    • 该物体是某一类别的概率
    • c o n f i d e n c e = P r ( O b j e c t ) ∗ I O U p r e d t r u t h confidence=Pr(Object)*IOU^{truth}_{pred} confidence=Pr(Object)IOUpredtruth
    • 如果cell内无物体, P r ( O b j e c t ) = 0 , c o n f i d e n c e = 0 Pr(Object)=0,confidence=0 Pr(Object)=0,confidence=0
    • 有物体, P r ( O b j e c t ) = 1 , c o n f i d e n c e = I O U p r e d t r u t h Pr(Object)=1,confidence=IOU^{truth}_{pred} Pr(Object)=1,confidence=IOUpredtruth
  • prediction输出:x, y, w, h, confidence
    • (x, y)是bb中心点(想对于bb的定位)
    • (w. h)是bb的长与宽,是相对于整张图而言的
    • confidence是基于IOU(对比predicted box与any ground truth box)
    • P r ( C l a s s ∣ O b j e c t ) Pr(Class|Object) Pr(ClassObject)在确认grid cell内有物体的前提下,该物体是某类别的概率

confidence score的完整公式

  • P r ( C l a s s ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class|Object)*Pr(Object)*IOU^{truth}_{pred}=Pr(Class_i)*IOU^{truth}_{pred} Pr(ClassObject)Pr(Object)IOUpredtruth=Pr(Classi)IOUpredtruth
  • confidence score
    • encode两个数值的关系
      1. 某类别物体出现在bb的概率
      2. bb框住物体的贴合程度

图解YOLO算法

  • 分割成S × × ×S(7$×$7)个grid cells
  • 每个grid cells 内进行的工作如下:
    • 是否有物体的概率,1个值
    • 是某种类别物体的概率,因为模型能识别20个类别,所有生产20个概率
    • 计算confidence score,设置阈值NMS留下score高的bb
  • tensor 7 × 7 ( 2 × 5 + 20 ) 7\times7(2\times5+20) 7×7(2×5+20)
    • 7×7 = grid cells 个数
    • B=2 ,bb的个树
    • ×5,一个bb对应(x,y,w,h,confidence score)
    • C = 20,20个类别物体的概率(PASCAL VOC)

2.1 Network Design

  • 训练数据:PASCAL VOC has 20 labelled classes
  • conv layerss: 特征提炼
  • FC layers: 输出概率值和coordinater(x, y, w, h)

模型结构采用Inception类似结构

  • 24 conv layers
  • 2 FC layers
  • 中间conv block采用先1×1conv缩小,在用3×3还原(见图)

YOLO有fast,accurate两个版本

  • 两个版本的参数几乎一样
  • Fast只用了9层且filter的数量也减少了,accurate有24层(如上)
  • 输出tensor 7×7×30

2.2 Training PPT

pretraining

  • ImageNet 1000-calss
  • 20 conv layers + average-pool + FC
  • a week

detection(类似于测试,模型调整如下)

  • add 4 conv layers + 2 FC layers(initial random weights)(任少卿的研究)
  • input image from 224×224 to 448×448
  • output layer 输出cp, bb
  • bb(x, y, w, h)值都在0~1之间
    • w, h 相对于image长度做normalization
    • x, y 相对于grid cell 长度做normalization
  • leaky rectified linear activation
    • θ ( x ) = x , x > 0 \theta(x)=x,x>0 θ(x)=x,x>0
    • θ ( x ) = 0.1 x , o t h e r w i s e \theta(x)=0.1x,otherwise θ(x)=0.1x,otherwise
  • loss function: sum-squared error

sum-squared error 在这里有3点不足

  • 不足1:
    • 我们内心目标:最大化预测accuracy的均值
    • 但SSE眼里,定位的error与accuracy的error,没什么不同,无需区别对待
    • 猜想:如果accuracy error低,但定位error高,不应该让定位error对accuracy最大化干扰过大
  • 不足2:
    • 图片很多区域是没有物体的,使对应grid cell confidence score为0
    • 导致有物体的grid cell的对应的gradients不断强化(值放大了),其他的grid cell对应的gradients被弱化
    • 从而导致模型过度依赖某些区域的parameters或者weights,使模型不稳定
    • 甚至造成训练时很快diverge(损失曲线上翘)
  • 不足3:
    • 大的小的bb产生的error,sum-squared error眼里没什么不同
    • 猜想:我们应该希望损失函数能区别对待

如何解决上述不足?

  • 强制来自bb的损失值变大,强制来自没有物体的grid cell的损失值变小(针对不足1,2,)
    • 给bb有物体的grid cell损失值×5,没物体的×0.5
  • 预测bb的 w , h \sqrt{w},\sqrt{h} w ,h ,而不是预测 w , h w,h w,h(针对不足3)
    • 大的bb的长和宽做square root处理时,即增大small box的敏感度,减少large box的敏感度

如何理解训练时的predictor and predictions?

  • 预测时,针对同一个grid cell会预测出多个bb
  • 训练时,哪个bb负责对应的物体,由IOU决定
  • leads to specialization between bb predictors
  • each predictor get better at predicting certain sized, ratios, classes of object

Training的其他超参数

  • num_epochs = 135
  • batch_size = 64
  • momentum = 0.9
  • weight_decay = 0.0005

避免过拟合所做的处理

  • 在第一个FClayer后面做dropout处理, rate = 0.5
  • 数据增强(引入了随机缩放比例和翻译原始图像大小的20%,还在HSV颜色空间中随机调整图像的曝光率和饱和度,达到1:5)

2.3 Inference

在训练好 YOLO 网络模型后,在 PASCAL VOC 数据集上进行 inference,每一张图像得到 98 个 bounding boxes,以及每个 bounding box 的所属类别概率

  • 当图像中的物体较大,或者处于 grid cells 边界的物体,可能在多个 cells 中被定位出来。可以用Non-Maximal Suppression(NMS,非极大值抑制) 进行去除重复检测的物体,可以使最终的 mAP 提高2−3%,相比较于 NMS 对于 DPM、R-CNN 的提高,不算大

2.4 Limitations of YOLO

哪些局限性

  • 每个grid cell 预测2个bb
  • 但只预测一个类别
  • 以上两点限制了临近的多个物体的识别能力
  • 比如识别一群飞鸟中的单体,很难

局限性的来源

  • 因为是通过数据来预测bb的位置
    • 所以,当物体处于新的或者不常见的比例或设置时,很难有效预测
  • 原图在处理前精度被缩小了,特征信息也降低了,不利于预测bb
  • Loss functions中对于small bounding boxes,以及large bounding boxes的误差,均等对待。尽管已经用了平方根的方法优化了这个问题,但是这个问题还没有很好的解决
  • YOLO中最主要的误差仍是定位不准造成的误差

6 Conclusion

  • 特点是unified model来解决object detection的问题
  • 结构简单,可直接用完整的原题来训练
  • 其损失函数可以直接对detection的表现来评估
  • 整个模型是作为一个整体被训练的
  • fast YOLO 让实时object detection的表现更好
  • YOLO对新的domain的图片也能做出快速和稳定的识别

参考
https://www.bilibili.com/video/av16537005

你可能感兴趣的:(论文笔记)