机器视觉领域的核心问题之一就是目标检测(object detection),它的任务是找出图像当中所有感兴趣的目标(物体),确定其位置和大小。对于人类来说,目标检测是一个非常简单的任务。然而,计算机能够“看到”的是图像被编码之后的数字,很难解图像或是视频帧中出现了人或是物体这样的高层语义概念,也就更加难以定位目标出现在图像中哪个区域。
与此同时,由于目标会出现在图像或是视频帧中的任何位置,目标的形态千变万化,图像或是视频帧的背景千差万别,诸多因素都使得目标检测对计算机来说是一个具有挑战性的问题。百度自研的深度学习平台飞桨(PaddlePaddle)开源了用于目标检测的一系列模型,从而可以快速构建强大的应用,满足各种场景的应用,包括但不仅限于安防监控、医学图像识别、交通车辆检测、信号灯识别、食品检测等等。
项目地址:
https://github.com/PaddlePaddle/models/tree/v1.4/PaddleCV
经典的单阶段的目标检测器SSD
Single Shot MultiBox Detector (SSD) 是一种单阶段的目标检测器。与两阶段的检测方法不同,单阶段目标检测并不进行区域推荐,而是直接从特征图回归出目标的边界框和分类概率。SSD 运用了这种单阶段检测的思想,并且对其进行改进:在不同尺度的特征图上检测对应尺度的目标。
如下图所示,SSD 在六个尺度的特征图上进行了不同层级的预测。每个层级由两个3x3卷积分别对目标类别和边界框偏移进行回归。因此对于每个类别,SSD 的六个层级一共会产生 38x38x4 19x19x6 10x10x6 5x5x6 3x3x4 1x1x4 = 8732 个检测结果。SSD 可以方便地插入到任何一种标准卷积网络中,比如 VGG、ResNet 或者MobileNet,这些网络被称作检测器的基网络。
表:SSD模型评估结果
项目地址:
https://github.com/PaddlePaddle/models/blob/v1.4/PaddleCV/object_detection/README_cn.md
运行速度大大提升的Faster R-CNN
Faster R-CNN,区域生成网络(RPN) Fast RCNN的实现,将候选区域生成、特征提取、分类、位置精修统一到一个深度网络框架,大大提高运行速度。作为经典的目标检测框架,虽然是2015年的论文,但是它至今仍然是许多目标检测算法的基础,这在飞速发展的深度学习领域十分难得。
Faster R-CNN整体网络可以分为4个主要内容:
- 基础卷积层(CNN):作为一种卷积神经网络目标检测方法,Faster R-CNN首先使用一组基础的卷积网络提取图像的特征图。特征图被后续RPN层和全连接层共享。
- 区域生成网络(RPN):RPN网络用于生成候选区域(proposals)。该层通过一组固定的尺寸和比例得到一组锚点(anchors), 通过softmax判断锚点属于前景或者背景,再利用区域回归修正锚点从而获得精确的候选区域。
- RoI Pooling:该层收集输入的特征图和候选区域,将候选区域映射到特征图中并池化为统一大小的区域特征图,送入全连接层判定目标类别,该层可选用RoIPool和RoIAlign两种方式,在config.py中设置roi_func。
- 检测层:利用区域特征图计算候选区域的类别,同时再次通过区域回归获得检测框最终的精确位置。
项目地址:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/rcnn
像素级别检测的MaskR-CNN
FasterR-CNN 在物体检测中已达到非常好的性能,Mask R-CNN在此基础上更进一步:得到像素级别的检测结果。对每一个目标物体,不仅给出其边界框,并且对边界框内的各个像素是否属于该物体进行标记。Mask R-CNN同样为两阶段框架,第一阶段扫描图像生成候选框;第二阶段根据候选框得到分类结果,边界框,同时在原有Faster R-CNN模型基础上添加分割分支,得到掩码结果,实现了掩码和类别预测关系的解藕。MaskR-CNN斩获了ICCV2017年的最佳论文,并且在实例分割、目标检测、人体关键点检测三个任务都取得了很好的效果。
项目地址:
https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleCV/rcnn
速度和精度均衡的YOLO v3
YOLO 创造性的提出one-stage,就是目标定位和目标识别在一个步骤中完成。由于整个检测流水线是单个网络,因此可以直接在检测性能上进行端到端优化,使得基础YOLO模型能以每秒45帧的速度实时处理图像,较小网络的Fast YOLO每秒处理图像可达到惊人的155帧。
YOLO v3保持了YOLO的速度优势,提升了模型精度,尤其加强了小目标、重叠遮挡目标的识别,补齐了YOLO的短板,是目前速度和精度均衡的目标检测网络。基于飞桨(PaddlePaddle)的YOLO v3实现,参考了论文【Bag of Tricks for ImageClassification with Convolutional NeuralNetworks】,增加了mixup,label_smooth等处理,精度(mAP(0.5:0.95))相比于原作者的实现提高了4.7个绝对百分点,在此基础上加入synchronize batchnormalization, 最终精度相比原作者提高5.9个绝对百分点。
表:模型评估结果
表:模型预测速度
项目地址:
https://github.com/PaddlePaddle/models/blob/v1.4/PaddleCV/yolov3/README_cn.md
2018WIDER FACE三料冠军PyramidBox
PyramidBox 是一种基于SSD的单阶段人脸检测器,利用上下文信息解决非受控场景中的小脸、模糊和遮挡的人脸检测的技术难题。PyramidBox在六个尺度的特征图上进行不同层级的预测,主要包括以下模块:LFPN、Pyramid Anchors、CPM、Data-anchor-sampling。WIDER FACE共包括3万多张图片近40万个人脸,是目前国际上规模最大、场景最为复杂、难度和挑战性最高的人脸检测公开数据集。
由于更高的难度、更准确的标注和评测信息,近年来WIDER FACE成为研究机构和公司争相挑战的业界标杆。2018年3月, PyramidBox模型在WIDER FACE的“Easy”、“Medium”和“Hard”三项评测子集中均荣膺榜首。PyramidBox模型在有一千张人脸的示例图片上展示鲁棒的检测性能,检测出其中的880张人脸。
项目地址:
https://github.com/PaddlePaddle/models/blob/v1.4/PaddleCV/face_detection/README_cn.md