目标检测,也称目标提取,是计算机视觉四大基础任务之一(分类、定位、检测、分割),是一种基于目标几何和统计特征的图像分割。目的是对图像上的预定目标进行分割和识别,通俗来说就是检测图像中有什么,以及在哪里,通常用矩形框圈定目标。
传统机器学习时代,目标检测经典算法大都基于滑动窗口、人工特征提取等技术手段,代表算法有VJ检测器、HOG行人检测器和DPM检测器等;
深度学习时代大放异彩的卷积神经网络也被引入目标检测任务并大放异彩,实现了真正意义上的工业级使用。在这一时期,诞生了经典的Archor-Based范式,即双阶段目标检测(two-stage)、单阶段目标检测(one-stage)两种类型的算法。

双阶段目标检测算法有:RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> Mask-RCNN -> FPN。
单阶段目标检测算法有:YOLO -> SSD -> RetinaNet。
近几年Archor-free算法也大放异彩,成为新的研究热点, 有:DenseBox -> YoloV1 -> CornerNet -> ExtremeNet -> CenterNet -> FSAF -> FCOS -> ATSS -> YOLOX。
基于Transformer的算法有:DETR -> Swin -> DINO。

RCNN目标检测流程图

RCNN是将卷积神经网络引入目标检测 Object-Detection 任务的开山之作,两阶段目标检测的经典之作。
RCNN流程主要是:1.候选框ROI生成(Selective Search方法, 切割+相似度) -> 2.候选框ROI的CNN特征提取(AlexNet, 预训练+微调) -> 3.候选框ROI的SVM类别分类(少数据下难分样本挖掘) -> 4.BBox回归与候选边框修饰(NMS)。
特点:
SPPNet目标检测流程图

SPPNet网络主要解决RCNN中生成2000+候选框引发的速度过慢问题, 即空间金字塔池化层(SPP, spatial pyramid pooling)。
SPPNet流程主要是:1.候选框ROI生成 -> 2.候选框ROI的CNN特征提取(ZFNet, 一次卷积, 多尺度融合, 只对全连接层微调) -> 3.候选框ROI的SVM类别分类 -> 4.BBox回归与候选边框修饰(NMS)。
特点:
Fast-RCNN目标检测流程图

FastRCNN网络其实还是多阶段的, 对RCNN、SPPNet的进一步改进, 主要是将之前独立的SVM类别分类整合到特征抽取后的FC层, 进行类别的Softmax分类和BBox的回归。
Fast-RCNN流程主要是: 1.候选框ROI生成 -> 2.候选框ROI的CNN特征提取并同时进行Softmax类别分类与BBox回归(VGG) -> 3.候选边框修饰(NMS)。
特点:
Faster-RCNN目标锚图

Faster RCNN是目标检测最经典的算法之一, 后来的模型大都由它改进而来, 他是第一个成功利用卷积神经网络CNN候选框抽取(region proposal)的网络, 提出的Archor-Base思想影响至今, 当前仍在工业界广泛使用。
Faster-RCNN流程主要是: 两阶段端到端训练的网络, 1. 候选区域网络(RPN, region proposal networks, 1x1-conv【区分目标, 即前景与背景】 & 3x3-conv【候选区域】) -> 2.ROI层 + 类别分类与框回归(ROI Pooling + Classification + Regression)
Faster-RCNN目标检测流程图

特点:
FPN块block图

特征金字塔网络(FPN, Feature Pyramid Networks), 它是一种具有横向连接的自上而下的网络架构, 能够从不同尺度的高底网络层抽取高级语义信息, 是CV领域提高模型精度最重要的技术之一。
FPN流程主要是: 1.骨干网络backbone(ResNets) -> 2.颈部网络neck(FPN) ->3.头部网络head(RPN + Fast R-CNN)
FPN目标网络架构图

特点:
YOLOv1网络架构图

YOLO系列目标检测算法是目标检测任务中最受欢迎, 应用最广泛的算法, 尤其是在工业领域, 是十分经典的单阶段模型(one-stage)。
YOLO系列历史:
YOLOv4网络架构图

SSDv1网络架构图

SSD网络诞生于FPN前, 是多尺度目标检测的先驱, 特点一是不同尺度的特征图来做检测, 二是采用了不同尺度和长宽比的先验框(Prior boxes, Default boxes), 但是因为没有哦后续版本的缘故, 不如YOLO系列有名气。
SSD流程主要是: 1.骨干网络backbone(VGG) -> 2.颈部网络neck(Multi-scale feature maps) ->3.头部网络head(3x3conv); PASCAL-VOC-2007数据集上mAP有74.3%, 推理速度 59 FPS, 优于YOLOv1。
RetinaNet网络架构图

RetinaNet网络主要解决一阶段网络训练中存在的类别不平衡问题,提出能根据Loss大小自动调节权重的Focal-loss。
RetinaNet流程主要是: 1.骨干网络backbone(ResNet) -> 2.颈部网络neck(FPN) ->3.头部网络head(class-subnet(top) + box-subnet(bottom) + focal-loss)
RetinaNet在COCO数据集上mAP@.5可达59.1%, mAP@[.5, .95]可达39.1%的情况下, 推理速度有5 FPS(0.198s/image)。
RetinaNet的损失函数Fcoalloss图

CornerNet网络架构图

CornerNet是Anchor free技术路线的开创之作,提出新的对象检测方法,将网络对目标边界框的检测转化为一对关键点的检测(即左上角和右下角),通过将对象检测为成对的关键点,而无需设计Anchor box作为先验框。
CornerNet流程主要是: 1.骨干网络backbone(hourglass, 姿态预测领域, 类似UNet) -> 2.颈部网络neck(Corner-Pooling + 3x3conv-bn) ->3.头部网络head(3x3Conv-ReLU + 1x1Conv);
CornerNet在COCO数据集上mAP@.5可达57.8%, mAP@[.5, .95]可达42.2%的情况下, 推理速度有4 FPS(0.250s/image)。
CenterNet目标示意图

CenterNet直接预测物体bbox的中心点和尺寸, 在预测阶段不需要NMS操作, 真正意义上的Archor-Free。
CenterNet流程主要是: 1.骨干网络backbone(Resnet-18/DLA-34/Hourglass-104) -> 2.颈部网络neck(FC-channel-heatmap) ->3.头部网络head(focal-loss + L1);
CenterNet在COCO数据集上mAP@.5可达63.5%, mAP@[.5, .95]可达45.1%的情况下, 推理速度有1.4 FPS(0.714s/image)。
一般常用的格式有COCO和VOC,即COCO(Common Objects in Context)比赛、VOC(The PASCAL Visual Object Classes)比赛。
COCO数据格式采用json格式存储label标注信息等, VOC数据格式则是采用xml格式存储。