计算机视觉CV-目标检测OB

计算机视觉CV-目标检测OB

一、简介

目标检测,也称目标提取,是计算机视觉四大基础任务之一(分类、定位、检测、分割),是一种基于目标几何和统计特征的图像分割。目的是对图像上的预定目标进行分割和识别,通俗来说就是检测图像中有什么,以及在哪里,通常用矩形框圈定目标。

传统机器学习时代,目标检测经典算法大都基于滑动窗口、人工特征提取等技术手段,代表算法有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。

在这里插入图片描述

二、Archor-Based

2.1 双阶段目标检测算法(two-stage)

2.1.1 RCNN(2013)

RCNN目标检测流程图
在这里插入图片描述

RCNN是将卷积神经网络引入目标检测 Object-Detection 任务的开山之作,两阶段目标检测的经典之作。

扫描二维码关注公众号,回复: 15275106 查看本文章

RCNN流程主要是:1.候选框ROI生成(Selective Search方法, 切割+相似度) -> 2.候选框ROI的CNN特征提取(AlexNet, 预训练+微调) -> 3.候选框ROI的SVM类别分类(少数据下难分样本挖掘) -> 4.BBox回归与候选边框修饰(NMS)。

特点:

  • 1.使用Selective Search方法提取2000个候选框,替代传统的滑动窗口方法,大大提升了速度(但2000区域还是很慢, 模型推理耗时47s(14.7)/image);
  • 2.第一次在目标检测任务中成功地引入CNN进行特征抽取,在VOC-07数据集平均精度由33.7%提升到58.5%;

2.1.2 SPPNet(2014)

SPPNet目标检测流程图
在这里插入图片描述

SPPNet网络主要解决RCNN中生成2000+候选框引发的速度过慢问题, 即空间金字塔池化层(SPP, spatial pyramid pooling)。

SPPNet流程主要是:1.候选框ROI生成 -> 2.候选框ROI的CNN特征提取(ZFNet, 一次卷积, 多尺度融合, 只对全连接层微调) -> 3.候选框ROI的SVM类别分类 -> 4.BBox回归与候选边框修饰(NMS)。

特点:

  • 1.特征生成引入空间金字塔池化层(SPP, spatial pyramid pooling), 只需要一次CNN特征抽取, 解决了候选框尺度不一的问题, 在ILSVRC-2014目标检测中获得了好成绩(目标检测第2/图像分类第3)。
  • 2.与RCNN相比在不损失精度的前提下, 训练耗时比RCNN快3倍, 模型推理耗时4.3s(2.3)/image, 比RCNN快10-100倍。

2.1.3 Fast-RCNN(2015)

Fast-RCNN目标检测流程图
在这里插入图片描述

FastRCNN网络其实还是多阶段的, 对RCNN、SPPNet的进一步改进, 主要是将之前独立的SVM类别分类整合到特征抽取后的FC层, 进行类别的Softmax分类和BBox的回归。

Fast-RCNN流程主要是: 1.候选框ROI生成 -> 2.候选框ROI的CNN特征提取并同时进行Softmax类别分类与BBox回归(VGG) -> 3.候选边框修饰(NMS)。

特点:

  • 1.单阶段训练, 即引入VGG网络/ROI-Pooling层(ROI, regions of interest, 感兴趣区域)/多任务学习(VGG后直接接分类器/回归模型, 二者loss直接相加)等, 摒弃了之前两阶段训练的SVM或者线性回归模型。
  • 2.Fast-RCNN在VOC-07数据集上将检测精度mAP从58.5%提高到70%, 训练耗时比RCNN快9倍, 模型推理耗时2.32s(0.32)/image, 比RCNN快213倍。

2.1.4 Faster-RCNN【FPN】(2015)

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目标检测流程图
在这里插入图片描述

特点:

  • 1.Faster RCNN是第一个真正意义上可以端到端训练、推理,可以近实时性能的深度学习检测算法, 将候选框抽取引入卷积神经网络;
  • 2.提出了区域生成网络(RPN, region proposal networks), 使得传统的基于滑窗的无类别object检测器融入CNN网络;
  • 3.提出了锚点(Archor)概念, 即预设一组不同尺度不同位置的固定参考框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标, anchor技术将问题转换为"这个固定参考框中有没有认识的目标,目标框偏离参考框多远", 不再需要多尺度遍历滑窗, 极大的提升了速度。同时anchor的存在, 也解决不同物体的中心点落到一个grid cell中的问题;
  • 4.RPN+VGG shared模型推理耗时0.198s(0.198)/image, 每张图片使用300 proposals, PASCAL-VOC-2007数据集上实现73.2%mAP, PASCAL-VOC-2012数据集上实现70.4%mAP, 达到了新的stoa;

2.1.5 FPN(2017)

FPN块block图
在这里插入图片描述

特征金字塔网络(FPN, Feature Pyramid Networks), 它是一种具有横向连接的自上而下的网络架构, 能够从不同尺度的高底网络层抽取高级语义信息, 是CV领域提高模型精度最重要的技术之一。

FPN流程主要是: 1.骨干网络backbone(ResNets) -> 2.颈部网络neck(FPN) ->3.头部网络head(RPN + Fast R-CNN)

FPN目标网络架构图
在这里插入图片描述

特点:

  • 1.FPN特征金字塔网络, 初步形成了目标检测最流行的架构(backbone/neck/head), 金字塔结构包括一个自底向上的线路, 一个自顶向下的线路和横向连接, 即特征提取/上采样/特征融合/多尺度特征输出。
  • 2.FPN模型推理耗时 4 FPS(0.25s/image), COCO数据集上[email protected]达到59.1%, mAP@[.5,.95]达到36.2%, 当时新的stoa。

2.2 单阶段目标检测算法(one-stage)

2.2.1 YOLO(2016)

YOLOv1网络架构图
在这里插入图片描述

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

  • YOLOv1: Archor-Free, 1.骨干网络backbone(Darknet框架改写的GoogLeNet) -> 2.颈部网络neck(FC-4096 + FC-30) ->3.头部网络head(Grip网格MSE); 检测速度提升但是精度下降(PASCAL-VOC-2007数据集上mAP有63.4%, 推理速度 45 FPS)。
  • YOLOv2: Archor-Based, 1.骨干网络backbone(Darknet-19, 类似VGG) -> 2.颈部网络neck(FC-4096 + FC-30) ->3.头部网络head(Grip网格MSE); 检测精度与Faster RCNN相当的情况下速度可达 40 FPS。tricks如下:BatchNorm + AVGPool + passthrough-layer + high-pixel + anchor-boxes + dimension-clusters + direct-location-prediction + multi-scale-training + hierarchical-classification。
  • YOLOv3: Archor-Based, 1.骨干网络backbone(DarkNet-53, 类似ResNet) -> 2.颈部网络neck(三条分支检测, 类似FPN) ->3.头部网络head(Logistic替换Softmax); 在COCO数据集上[email protected]可达57.9%, mAP@[.5, .95]可达33.0%的情况下, 推理速度有20 FPS(0.051s/image)
  • YOLOv4: Archor-Based, 1.骨干网络backbone(CSPDarknet53, 类似DenseNet) -> 2.颈部网络neck(SPP + PAN) ->3.头部网络head(YOLOv3); 在COCO数据集上[email protected]可达65.7%, mAP@[.5, .95]可达43.5%的情况下, 推理速度有23 FPS(0.043s/image)。tricks:Mosaic增强、cmBN、SAT对抗、CSPDarknet53、Mish、Dropblock、SAM、SPP(类似FPN+PAN)、CIOU、DIOU_NMS。

YOLOv4网络架构图
在这里插入图片描述

2.2.2 SSD(2016)

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。

2.2.3 RetinaNet

RetinaNet网络架构图
在这里插入图片描述

RetinaNet网络主要解决一阶段网络训练中存在的类别不平衡问题,提出能根据Loss大小自动调节权重的Focal-loss。

RetinaNet流程主要是: 1.骨干网络backbone(ResNet) -> 2.颈部网络neck(FPN) ->3.头部网络head(class-subnet(top) + box-subnet(bottom) + focal-loss)

RetinaNet在COCO数据集上[email protected]可达59.1%, mAP@[.5, .95]可达39.1%的情况下, 推理速度有5 FPS(0.198s/image)。

RetinaNet的损失函数Fcoalloss图
在这里插入图片描述

三、Archor-Free

3.1 基于多关键点

3.1.1 CornerNet(2018)

CornerNet网络架构图
在这里插入图片描述

CornerNet是Anchor free技术路线的开创之作,提出新的对象检测方法,将网络对目标边界框的检测转化为一对关键点的检测(即左上角和右下角),通过将对象检测为成对的关键点,而无需设计Anchor box作为先验框。

CornerNet流程主要是: 1.骨干网络backbone(hourglass, 姿态预测领域, 类似UNet) -> 2.颈部网络neck(Corner-Pooling + 3x3conv-bn) ->3.头部网络head(3x3Conv-ReLU + 1x1Conv);

CornerNet在COCO数据集上[email protected]可达57.8%, mAP@[.5, .95]可达42.2%的情况下, 推理速度有4 FPS(0.250s/image)。

3.2 基于单中心点

3.2.1 CenterNet(2019)

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数据集上[email protected]可达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格式存储。

参考资料 Archor-Based

参考资料 Archor-Free

猜你喜欢

转载自blog.csdn.net/rensihui/article/details/125854872