前言
YOLO的提出是相对Faster RCNN的改进,Faster RCNN的速度是大概1秒7到8张,一般视频播放1s有20多帧吧,所以Faster RCNN不能达到完全的实时,而YOLO的速度可以达到每秒45张图。速度的提升主要得益于一个网络进行box和cls的预测,而Faster RCNN是两个网络分别预测box和cls。不过从准确率上来说,YOLO是不如Faster RCNN的,但是他提升图片定位速度的方式还是值得学习的。
1.介绍
比较早的时候是用slide window的方式进行图片定位,这种方式速度慢而且不准确,因为我们需要用各种形状的box框在图片中滑动然后为框内的每个物体打分。
后来的尝试是RCNN,RCNN需要用selective search先生成预选框,然后用预选框进行训练,会生成相对预选框的矫正值和框中的类别打分。这种网络很难优化,因为所有的网络都是分开的。
YOLO的物体检测只有一个回归模型,会预测出坐标和类别打分,所以叫做you only look once.
YOLO的模型总结下来就是上图的三个步骤,非常直观明了。相对其他网络的优势如下:
- 速度快,并且相比其他实时网络准确率两倍以上(注意,Faster RCNN不算实时网络),可以实时处理webcam的数据
- YOLO是整张图片直接参与网络,相比一些用局部进行网络计算而言,更有全局观,所以对背景识别的错误率更低
- YOLO范化能力好,用普通图片进行训练后,在艺术图片上也有不错的效果
YOLO的准确率确实不是最好的,尤其在识别小物体上不太好,最后作者也会给出一些实际操作中的tradeoff。
2.统一检测
YOLO将其他检测系统中各个分散的模块合并成了一个神经网络。对这个网络输入整张图片就可以得到图片的预测框和框中的物体,能够实现端到端的训练,在准确率不错的情况下达到实时检测的目的。
我们的系统会将输入的图片分成个格子,如果某个物体的中心落在了这个格子中,那么这个格子就代表这个检测物体。
没一个格子会预测个bounding boxes和每个box的confidence score,confidence score代表这个模型有多少信心这个格子包含这个物体,confidence =