目标检测
定义
目标检测(ObjectDetection)是计算机视觉中的一项任务,其目标是在图像或视频中识别和定位图像中存在的多个物体,并为每个物体提供相应的边界框(Bounding Box)。与图像分类任务不同,目标检测不仅要求识别图像中的物体类别,还要准确标定每个物体的位置。
识别图像中的物体类别 + 准确标定每个物体的位置.
1 | 图像分类。是计算机视角最基本的任务之一。 |
目标检测: 可以看成图像分类与定位的结合。
给定一张图片,目标检测系统要能够识别出图片的目标并给出其位置,由于图片中目标数是不定的,且要给出目标的精确位置,目标检测相比分类任务更复杂。
应用场景
目标检测的一个实际应用场景就是无人驾驶,如果能够在无人车上装载一个有效的目标检测系统,那么无人车将和人一样有了眼睛,可以快速地检测出前面的行人与车辆,从而作出实时决策。
两类流行的算法
近几年来,目标检测算法取得了很大的突破。
1.R-CNN系算法
一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。
2. Yolo,SSD这类one-stage算法,
其仅仅使用一个CNN网络直接预测不同目标的类别与位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。
Yolo
全称是You Only Look Once: Unified, Real-Time Object Detection.
You Only Look Once说的是只需要一次CNN运算,Unified指的是这是一个统一的框架,提供end-to-end的预测,而Real-Time体现是Yolo算法速度快。这里我们谈的是Yolo-v1版本算法,其性能是差于后来的SSD算法的,但是Yolo后来也继续进行改进,产生了Yolo9000算法。本文主要讲述Yolo-v1算法的原理,特别是算法的训练与预测中详细细节,最后将给出如何使用TensorFlow实现Yolo算法。