写在最后话
针对目标检测:我们之前用yolov5,可以先用v8框架,是同一组织发布的,取了v5的优点,用到了yolov7中的c2f模块,框架具有可扩展性(修改模型配置)还开源。
针对目标追踪:
Deepsort至今仍被广泛部署使用
ByteTrack(2022.7):算法较新,结论相对还可以。
一 目标检测算法综述
1 目标检测算法分类
基于深度学习的目标检测算法分类Anchor based(Two stage和One stage) 和 Anchor free
1.1 Anchor based
anchor-based方法则包括一阶段和二阶段检测算法(二阶段目标检测算法一般比一阶段精度要高,但一阶段检测算法速度会更快)。
1.1.1 Tow Stage
【基于区域建议的算法】Anchor-base
先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检物体的预选框),再通过卷积神经网络进行样本分类。
任务流程:特征提取 --> 生成RP --> 分类/定位回归。
常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等。
1.1.2 One Stage
【基于目标回归的检测算法】Anchor-base
不用RP(region proposal简称RP,一个有可能包含待检物体的预选框),直接在网络中提取特征来预测物体分类和位置。
任务流程:特征提取–> 分类/定位回归。
常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等
1.2 Anchor-free
基于Anchor-free的算法,如 CornerNet,CenterNet,FCOS 等。
1.3 基于搜索
基于搜索的目标检测与识别算法, AttentionNet,强化学习。
2 目标检测模型
2.1 Anchor based 之RCNN系列(two stage)
2.1.1 R-CNN(2014)
特点:
(1)实现了“将检测任务转换为分类任务”。
(2)对每个RP都走了一遍特征提取,效率太低。
基础网络:AlexNet
(1)AlexNet 由八层组成:5个卷积层、2个全连接隐藏层、1个全连接输出层。
(2)AlexNet 使用 ReLU 而不是 sigmoid 作为其激活函数。
(3)添加了暂退法Dropout来减少模型的过拟合,降低模型复杂度。[暂退法在前向传播过程中,计算每⼀内部层的同时注⼊噪声, 在整个训练过程的每⼀次迭代中,标准暂退法在计算下⼀层之前将当前层中的⼀些节点置零。]
2.1.2 SPPNet(2014)
提出了空间金字塔池化层(Spatial Pyramid Pooling Layer, SPP):对于一副图像分成若干尺度的图像块(比如一副图像分成1份,4份,8份等),然后对每一块提取的特征融合在一起,从而兼顾多个尺度的特征。
使用SPPNet网络用于目标检测时,整个图像只需计算一次即可生成相应特征图,不管候选框尺寸如何,经过SPP之后,都能生成固定尺寸的特征表示图,这避免了卷积特征图的重复计算。
基础网络:AlexNet
特点:
(1)共享特征抽取提高了效率。
(2)SPP layer:RCNN的一种改进。
(3)pooling后得到的tensor没有按位置关系排列,导致位置信息缺失。
(4)与 R-CNN 类似,SPP-Net 中的特征提取、分类、回归依旧是割裂的。
2.1.3 Fast R-CNN(2015)
特点:
是RCNN和SPPNet的改进版
(1)将特征提取、分类、回归整合到一个CNN中。
(2)RoIPooling,简化和修正了SPP layer的设计,更好的保留了位置信息。
(3)loss回归:L2 -> Smooth L1。
(4)结构:后半段2个共享的fc,然后2个平行的单fc,分别负责分类和回归。
基础网络:VGG-16
顾名思义就是有16层,包括13个卷积层和3个全连接层。
2.1.4 Faster R-CNN(2015)
特点:
(1)Faster RCNN (①RPN ;②Fast RCNN )
(1)RPN+anchor机制:提出了区域选择网络用于生成候选框,提升检测框的生成速度。特征映射上应用Region Proposal Network,返回object proposals和相应分数。应用Rol池化层,将所有proposals修正到同样尺寸。最后,将proposals传递到完全连接层,生成目标物体的边界框。
(2)共有4个loss,RPN占两个,dectector子网络占两个。
(2)第一个端到端,最接近于实时性能的深度学习检测算法。
(3)后续的检测阶段中存在计算冗余;另外,如果IOU阈值设置的低,会引起噪声检测的问题,如果IOU设置的高,则会引起过拟合。
(4)其它:RPN本质是“基于滑窗的二分类检测器”,额外开销只有一个两层的网络。
(5)ROI Pooling层:是使用region proposal的结果和特征图作为输入,得到的每个proposal对应的特征然后pooling,之后再分别用于分类结果和边框回归。
基础网络:ZFNet或VGGNet。
2.1.5 Cascade RCNN
Faster RCNN完成了对目标候选框的两次预测,其中RPN一次,后面的检测器一次,而**Cascade RCNN[9]**则更进一步将后面检测器部分堆叠了几个级联模块,并采用不同的IOU阈值训练,这种级联版的Faster RCNN就是Cascade RCNN。
通过提升IoU阈值训练级联检测器,可以使得检测器的定位精度更高。
Cascade RCNN将二阶段目标检测算法的精度提升到了新的高度。
2.2 Anchor based 之YOLO系列(one stage)
one stage目标检测算法不需要region proposal阶段,直接产生物体的类别概率和位置坐标值。
2.2.1 YOLOv1(2015)
特点:
(1)one stage:YOLO没有显示求取region proposal的过程,而是直接分类回归出结果。
(2)由于输出层为全连接层,因此在检测时,YOLOv1模型只支持与训练图像相同输入分辨率的图像。
(3)YOLO loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(虽然采用求平方根方式,但没有根本解决问题)。因此,对于小物体,小的IOU误差也会对网络优化过程造成很大的影响,从而降低了物体检测的定位准确性。
(4)提高了速度,但是降低了精度。
基础网络:GoogleNet。
1 将待测图像进行归一化处理
2 将处理后的图像输入CNN中进行特征提取以及边界框置信度的预测,
3 采用非极大值抑制(non-maximum suppression,NMS)算法过滤边界框获得最优结果。(通俗来说就是,对输入图像进行缩放,统一大小为448^2,其次进行卷积处理,最后根据置信度对结果进行筛选,去除误差较大的部分)
2.2.2 YOLOv2(2016)
YOLO v2使用DarkNet19作为特征提取网络,该网络比YOLO v2所使用的VGG-16要更快。对网络结构进行了优化,使用卷积层代替YOLO v1中的全连接层。
(1)提出了一种新的训练方法(联合训练算法),同时在检测数据集和分类数据集上训练物体检测器(Object Detectors ),用检测数据集的数据学习物体的准确位置,用分类数据集的数据来增加分类的类别量、提升健壮性。
(2)批归一化(Batch Normalization):有助于解决反向传播过程中的梯度消失和梯度爆炸问题,降低对一些超参数(比如学习率、网络参数的大小范围、激活函数的选择)的敏感性,并且每个batch分别进行归一化的时候,起到了一定的正则化效果(YOLO2不再使用dropout),从而能够获得更好的收敛速度和收敛效果。
BN层进行如下变换:①对该批样本的各特征量(对于中间层来说,就是每一个神经元)分别进行归一化处理,分别使每个特征的数据分布变换为均值0,方差1。②对上一步的输出再做一次线性变换。
(3)YOLO2在采用 224*224 图像进行分类模型预训练后,再采用 448 * 448 的高分辨率样本对分类模型进行微调(10个epoch),使网络特征逐渐适应 448 * 448 的分辨率。然后再使用 448 * 448 的检测样本进行训练,缓解了分辨率突然切换造成的影响。
(4)使用先验框(Convolution with anchor boxes):召回率大幅提升到88%,同时mAP轻微下降了0.2。
(5)聚类提取先验框的尺度信息(Dimension clusters):对训练集中标注的边框进行K-mean聚类分析,以寻找尽可能匹配样本的边框尺寸。
(6)约束预测边框的位置(Direct location prediction):使用了限制让数值变得参数化,也让网络更容易学习、更稳定。
(7) Fine-Grained Features(passthrough层检测细粒度特征):在最后一个pooling之前,特征图的大小是26 * 26 * 512,将其1拆4,直接传递(passthrough)到pooling后(并且又经过一组卷积)的特征图,两者叠加到一起作为输出的特征图。(在最后一个pooling之后,特征图的大小是13 * 13 * 1024)
(8)多尺度图像训练(Multi-ScaleTraining)
(9) YOLO v2算法只有一条检测分支,且该网络缺乏对多尺度上下文信息的捕获,所以对于不同尺寸的目标检测效果依然较差,尤其是对于小目标检测问题。
2.2.3 YOLOv3(2018)
特点:
(1)改善了小目标漏检的现象。
(2)多尺度预测。借鉴了FPN思想采用三条分支(三个不同尺度/不同感受野的特征图)去检测具有不同尺寸的对象。
(3)更好的基础分类网络(darknet-53,类似于ResNet引入残差结构)。
(4)分类器不在使用Softmax,分类损失采用binary cross-entropy loss(二分类交叉损失熵)。【① Softmax使得每个框分配一个类别(score最大的一个),而数据集中目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。② Softmax可被独立的多个logistic分类器替代,且准确率不会下降。】
(5)YOLOv3采用MSE作为边框回归损失函数,这使得YOLO v3对目标的定位并不精准,之后出现的IOU,GIOU,DIOU和CIOU等一系列边框回归损失大大改善了YOLO v3对目标的定位精度。
(6)骨干网络:Darknet-53
2.2.4 YOLOv4(2020.4)
YOLOv4框架:
YOLOv4 = CSPDarknet53+SPP+PAN+YOLOv3
(1)Backbone:CSPDarknet53(CSP结构融入Darknet53中)
(2)Neck:SPP,PAN(FPN+PAN)
(3)Head:YOLOv3
详解:
1 在输入端,引入了Mosaic数据增强、cmBN、SAT自对抗训练。
2 在特征提取网络上,YOLOv4将各种新的方式结合起来,包括CSPDarknet53,Mish激活函数,Dropblock。
3 在检测头中,引入了SPP模块,借鉴了FPN+PAN结构。
4 在预测阶段,采用了CIOU作为网络的边界框损失函数,同时将NMS换成了DIOU_NMS等。
5 引入Mish激活函数。
Mish函数可以解决梯度消失问题,路径聚合网络(Path Aggregation Network,PAN)进行特征融合从而获得更高的性能
YOLOv4用到的技巧:
(1)用于backbone的BoF:CutMix和Mosaic数据增强,DropBlock正则化,Class label smoothing
(2)用于backbone的BoS:Mish激活函数,CSP,MiWRC
(3)用于检测器的BoF:CIoU-loss,CmBN,DropBlock正则化,Mosaic数据增强,Self-Adversarial 训练,消除网格敏感性,对单个ground-truth使用多个anchor,Cosine annealing scheduler,最佳超参数,Random training shapes
(4)用于检测器的Bos:Mish激活函数,SPP,SAM,PAN,DIoU-NMS,anchor-free detection head。
特点:
(1)改进了SOTA的方法,使它们更有效,更适合单GPU训练。
(2)将目前主流的目标检测器框架进行拆分:input、backbone、neck 和 head。
(3)模型大小:244M。【YOLOv5的模型大小仅有27M】
2.2.5 YOLOv5(2020.6)
YOLOv5框架:
(1)在模型的快速部署上也具有极强优势。
(2)注重提升模型的性能,添加了很多新的特征用于支持全景分割和目标跟踪。
(3)将v4版本骨干网络中的csp结构拓展到了NECK结构中。
(4)Focus:增加了FOCUS操作,但是后续6.1版本中又剔除掉了该操作,使用一个6x6的卷积进行了替代。
(5)SPPF:使用SPPF结构代替了SPP。【SPPF:MaxPool由原来的并行调整为了串行,效率更高】
(6)自适应锚框:把锚框的聚类改为了使用程序进行自适应计算。
(7)Backbone:CSPDarknet53
(8)Neck:FPN+PAN
(9)head:YOLOv3
2.2.6 YOLOv6(2022.6美团)
(1)注重将 YOLO 用于工业领域,引入了 RepVGG(2021)、CSP、self-distillation、TAL 等多种模块。
(2)YOLOv6参考RepVGG网络设计了RepBlock来替代CSPDarknet53模块。把backbone中stride=2的卷积层换成了stride=2的RepConv层。
(3)RepVGG结构是在训练时进行多分支拓扑,而在进行推理时等效融合为一个3×3的卷积,这样就可以利用多分支训练时高性能的优势,和单路模型推理时速度快、省内存的优点。
(4)YOLOv6中所有的激活函数都为ReLU,从而提升网络训练的速度,且使用transpose反卷积进行上采样,并将neck中的CSP模块也使用RepBlock进行替代(Rep-PAN),但仍然保留FPN-PAN的结构,这样的修改使得其训练的收敛速度更快,推理的速度也更快。
(5)随着网络模型向着轻量化的方向改进,YOLO系列融合了RetinaNet、FCOS、RepVGG网络中有效的方法,可以实现非常好的检测效果。
(6)YOLOv6使用的tricks看起来都是为了小型网路专门设计。
(7)Backbone:骨干网络由CSPDarknet换为了EfficientRep
(8)Neck:FPN+RepPAN(基于Rep和PAN构建了Rep-PAN)
(9)HEAD:模仿YOLOX,进行了解耦操作。分开了目标检测中的边框回归和类别分类。 由于YOLOX的解耦头中,新增了两个额外的3x3卷积,会在一定程度增加运算的复杂度,YOLOv6基于Hybrid Channels的策略重新设计出了一个更高效的解耦头结构。
2.2.7 YOLOv7(2022.7)
(1)YOLOv7是YOLOv4团队的续作,主要是针对模型结构重参化和动态标签分配问题进行了优化。
(2)为实时目标检测而设计,引入了很多可训练的 BoF 模块,在不带来额外推理消耗的情况下,提升检测效果。
(3)提出了计划的模型结构重参化。
(4)借鉴了YOLOv5、Scale YOLOv4、YOLOX,“拓展”和“复合缩放”方法,以便高效的利用参数和计算量。
(5)提出了一种新的标签分配方法。
(6)E-ELAN 改变了计算模块中的结构,过渡层的结构则完全不变。【利用分组卷积来扩展计算模块的通道和基数,将相同的group parameter和channel multiplier用于计算每一层中的所有模块。然后,将每个模块计算出的特征图根据设置的分组数打乱成G组,最后将它们连接在一起。此时,每一组特征图中的通道数将与原始体系结构中的通道数相同。最后,作者添加了G组特征来merge cardinality。】
(7)模型对depth、width或者module scale进行缩放。
(8)采用没有Identity连接的RepConv结构进行卷积重参数化。
2.2.8 YOLOv8(2023.1)
[1] https://blog.csdn.net/jiaoyangwm/article/details/128675367
YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。
(1)可扩展性。和前面的所有 YOLO 算法框架兼容的,可以通过修改配置参数来修改训练使用的 YOLO 算法。
(2)支持目标检测、实例分割、图像分类。
(3)与YOLOV5的比较:
1 Backbone:C2f(CSPDarkNet)。v8 中仍然使用CSP的思想,参考v7的ELAN思想,使用了C2f(CSPDarkNet)替换了v5中的C3模块,每个stage的blocks个数从 [3, 6, 9, 3] 变成了 [3, 6, 6, 3],同时还使用了 v5 中的 SPPF 模块。
2 Neck:PA-FPN。将 v5 中的 PAN-FPN 中的 top-down 上采样阶段中的卷积删除了。
3 Head:Decoupled-head[reg loss:CIOU+DFL loss; cla loss:BCE loss]。使用了解耦头,有三个 branch,包括 cls、reg、projection conv (DFL 使用)。
4 Label Assign:是 anchor-free 的形式,使用 TAL 动态匹配的方式,且未在前面训练阶段使用 ATSS,TAL 从任务对齐的角度触发,根据设计的指标动态选择高质量的 anchor 作为正样本,并且融入到了 loss 的设计中。
5 Loss:分类使用交叉熵损失(也添加了 varifocal loss,但注释掉了),回归使用的 DFL + CIoU loss。
6 没有使用objectness,故reg预测为4个数值。
7 YOLOv8 中使用了梯度更丰富(源于 YOLOv7 中的 E-ELAN 模块)的 C2f 模块。
8 C2f梯度更丰富,C3只进行了一次梯度分流。
(4)TAL 动态匹配的方式:v8是anchor-free结构,使用TAL方式进行正负样本匹配。
1 指标是怎么计算的:t = s^α × u^β ,其中 s 为分类 score,u 为 IoU 的值,α(alpha)和 β(beta) 用于控制分类和回归这两个任务在anchor对齐度量中的影响,t在这两个任务的联合优化中起着关键作用,以实现任务对齐的目标。
2 如何使用该指标 t 来进行正负样本的分配:对于每个gt,选择m个t值最大的anchor作为正样本,其他的anchor作为负样本。
3 网络从联合优化的角度动态关注高质量的 anchor(即任务对齐程度更高的anchor)。
4 t 嵌入分类损失函数实现动态分配:① 为了增加对齐指标高的 anchor 的分类得分,且降低对齐指标低的 anchor 分类得分,在训练期间,使用归一化后的 t' 来替换 anchor 原本学习的二进制标签。[t' 的最大值是每个 gt 对应的 anchor 的最大 IoU 值 (u)]。② 分类交叉熵损失。③ 使用 Focal loss 的形式来减轻训练时的正负样本不平衡。
5 t 嵌入回归损失函数实现动态分配:高质量(分类和回归都很好)的 anchor 有利于模型性能的优化,低质量的 anchor 可能会对模型训练产生负面的影响,所以更关注较大 t 的 anchor 来提高回归精度。也会根据t'来重新为每个anchor加权计算回归损失。故重新定义了GIOU。
TOOD
1 GFL中,在训练的时候分别训练分类和回归头,在预测的时候,使用分类得分来作为 NMS 的排序依据进行框的消除,没有将分类和定位联合起来。
2 FCOS中,使用 centerness 得分和分类得分相乘来对 NMS 中的框排序,但 centerness 是基于分类特征得到的,而非定位特征来得到的,不是很好的衡量定位准确性的参数。
3 ATSS中,对每个gt,选取和gt的中心点距离最近的前N个框,计算保留下来的框和gt的IoU,将IoU>均值+方差的 anchor分配为正样本。
4 OTA中,将正负样本分配建模成了一个最优传输的问题,gt为需求方,anchor为提供方,以loss为anchor传递到gt上的传输花费,计算所有anchor传输给每个gt的传输花费, 然后使用优化方法去优化传输矩阵,根据dynamic k(即某个gt需要k个anchor)方法来选择花费最低的前k个anchor作为该gt的正样本。
5 SimOTA,将OTA中的优化方法去掉,直接选择每个传输花费最小的前k个anchor作为该gt的正样本,dynamic k是根据各个anchor和gt的IoU来计算的,如果对于一个gt,存在很多高质量(IoU)的anchor,则多分配一些anchor负责该gt,如果某个gt存在很少数量的优质anchor,则少分配一些anchor,避免带入一些有害的信息。
6 同时拥有好的定位和分类得分,即分类头和定位头的一致性更高的anchor对网络更加重要,TOOD设计了T-Head在Head端进行两个任务的对齐,还设计了对一致性的衡量方法。
7 引入了YOLOX中提出的最后10个epoch关闭Mosaic的操作。
2.2.0 RetinaNet(2017)
特点:
(1)RetinaNet是One stage网络,所以不用RoIPooling。
(2)CE(二分类交叉熵) -> FL。【针对One Stage网络训练存在的类别不平衡问题,提出能根据Loss大小自动调节权重的Focal loss,代替了标准的交叉熵损失函数,使得模型的训练更专注于困难样本。】
(3)Focal loss 比较独特的一个点就是正负样本都会来计算分类损失,然后仅对正样本进行回归损失的计算。
(4)基于FPN设计了RetinaNet,在精度和速度上都有不俗的表现。广泛使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nNe4nHKH-1679997235663)(C:\Users\C202109\AppData\Roaming\Typora\typora-user-images\image-20230322151534666.png)]
2.2.0 Mask RCNN(2017)
特点:
(1)RoIPooling -> RoIAlign。【ROIPool是从每个ROI中提取特征图(例如7*7)的标准操作。ROI Align基于双线性插值的方法,利用feature map上距离采样点最近的四个像素得到其像素值。】
(2)加上第三个pip-line用于实例分割。在Faster-RCNN 的基础上添加一个分支网络,在实现目标检测的同时,把目标像素分割出来。
(3)Mask R-CNN采用与Faster RCNN相同的两个阶段。第一阶段即RPN,此步骤提出了候选对象边界框;第二阶段本质上是Fast RCNN,它使用来自候选框架中的RoIPool来提取特征并进行分类和边界框回归;Mask R-CNN还为每个RoI输出二进制掩码。
2.2.0 DCN
特点:
(1)可形变模块(Deformable mpdule)。
(2)在传统卷积,RoIPooling的输出后面加上一层2D offset,使得输出能够自动形变。
(3)设计简单,增加的参数量少。
(4)一般用于最后几层。因为后面的细节信息丢失较多,可以通过形变操作更好的刻画目标。
2.2.0 FPN(+Faster RCNN)(2017)
特点:
(1)在目标检测中融入了FPN【Feature Pyramid Networks,特征金字塔网络】,解决小物体漏检。FPN开销小,又能检测小物体,也因此成了检测算法的标准组件。
1)自底向上连接CNN下采样通道,可以得到不同分辨率的特征图;
2)自顶向下连接,不同分辨率的特征图无法直接进行特征融合,需要进行上采样操作,使需要融合的特征层保持一致的分辨率;
3)侧向连接,将上采样后的深层特征层和浅层特征层进行融合,可提取的语义信息更多,增强浅层特征的表达能力。
(2)特征金字塔的结构主要包括三个部分:bottom-up,top-down和lateral connection(横向链接)。
(3)FPN提出了一种具有横向连接的自上而下的网络架构,用于在所有具有不同尺度的高低层都构筑出高级语义信息。FPN的提出极大促进了检测网络精度的提高。
(4)多尺度特征融合的方式,增强了浅层特征层的特征表达能力。随后,通过对浅层大分辨率特征层进行特征提取和目标检测,大幅提升了算法对小尺寸目标的检测能力。
(5)PAN(FPN -> PAN)(2018)
2.2.0 R-FCN(2016)
特点:
(1)第一个共享头部的子网络。但头部太厚重。全卷积网络(Fully Convolutional Network,FCN)应用于 Faster R-CNN,使算法第二阶段的计算也实现了参数共享,提升了检测速度。
(2)提出了位置敏感得分图,丢弃ROIPooling,检测网络的前半段和后半段连接到一起,形成全卷积网络。
(3)提出了位敏得分图(position-sensitive score maps)和位敏池化层(position-sensitive pooling)对目标检测任务中的平移不变性和平移可变性进行权衡,使 R-FCN 在提升了检测速度的基础上达到和 Faster R-CNN 接近的精度。
2.2.0 SSD(2015)
(1)提出了Multi-reference和Multi-resolution的检测技术。
(2)挖掘和利用了不同scale的feature map。与其它一些检测算法的区别在于:其它一些检测算法只是在网络最深层的分支进行检测,而SSD有多个不同的检测分支,不同的检测分支可以检测多个尺度的目标,所以SSD在多尺度目标检测的精度上有了很大的提高,对小目标检测效果要好。
(3)Anchor虽是Faster RCNN提出,但SSD对其进行了深入研究(包括数量、尺寸、长宽比),yolov2在此基础上更进一步。
(4)没有使用全连接层,而用全卷积网络。同时使用了数据扩增 ( data augmentation)技术。
(3)后人在SSD上加了FPN,进化成DSSD(SSD+FPN)。
基础网络:VGGNet
2.3 Anchor-Free中目标检测算法
基于Anchor的物体检测:建模成对候选区域进行分类和回归的问题。在One Stage Detector中,候选区域是通过滑窗方式产生Anchor box;在Two Stage Detector中,候选区域是RPN生成的Proposal,但是RPN本身仍然是对滑窗方式产生的Anchor进行分类和回归。
基于Anchor的检测算法由于Anchor导致计算复杂,以及大量超参数会影响模型性能。Anchor free技术则摒弃Anchor,通过确定关键点的方式来检测,减少了网络超参数的数量。
2.3.1 CornerNet
(1)提出了一种新的目标检测方法,将网络对目标边界框的检测转化为对关键点的检测(即左上角和右下角),通过将对象检测为成对的关键点,而无需设计Anchor box作为先验框。
(2)CornerNet只关注边缘和角点,缺乏目标内部信息,容易产生FP。
(3)该网络需要较多的后处理,如如何选取分数最高的点,同时用offset来微调目标定位,同时也需要做NMS。
2.3.2 CenterNet
(1)CenterNet的结构相比于CornerNet更加简单,是直接检测目标的中心点,而其它特征(大小,3D位置,方向,甚至姿态)可以使用中心点位置的图像特征进行回归,是真正意义上的Anchor free。
(2)该网络提出了两个模块:级联角池化模块和中心池化模块,进一步丰富了左上角和右下角的信息。
(3)在训练过程中,同一类别的多个(如两个)物体靠的比较近时,那么它们的GT(Ground Truth)中心点在下采样时容易挤到一块,导致两个物体GT中心点重叠,使得网络将这两个物体当成一个物体来训练;而在模型预测阶段,两个同类物体在下采样后的中心点也会重叠,那么网络也只能检测出一个中心点。
2.3.0 FSAF
(1)提出了一种FSAF模块用于训练特征金字塔中的Anchor free分支,让每一个对象都自动选择最合适的特征。该模块中,Anchor box的大小不再决定选择哪些特征进行预测,使得Anchor的尺寸成为了一种无关变量,实现了模型自动化学习选择特征。
()
2.3.0 FCOS
(1)该网络是一种基于FCN的逐像素目标检测算法,实现了无锚点(Anchor free),无提议(Proposal free)的解决方案,并且提出了中心度Center ness的思想。
(2)FCOS可用作Two Stage检测器Faster RCNN中的RPN,且优于RPN。
2.3.0 SAPD
SAPD作者认为Anchor point的方法性能不高主要因为训练的不充分,主要是注意力偏差和特征选择。因而作者提出了两种策略:1) Soft-weighted anchor points对不同位置的样本进行权重分配;2) Soft-selected pyramid levels,把样本分配到多个分辨率,并进行权重加权。而在训练阶段,作者前6个epoch采用FSAF的方式,而后6个epoch把特征选择的预测网络加入进行联合训练。
3 评价指标
交并比,准确率,精度,召回率,FPR,F1-Score,PR曲线-AP值,ROC曲线-AUC值,和mAP值和FPS。
(1)Mean Average Precision(mAP)是平均精度均值,具体指的是不同召回率下的精度均值。[4]
(2)Frame Per Second(FPS)指的是模型一秒钟能检测图片的数量。
ref:
[1] https://blog.csdn.net/weixin_38632246/article/details/90450264
[2] https://blog.csdn.net/JNingWei/article/details/86607160
[3] https://zhuanlan.zhihu.com/p/297965943文章来源:https://www.toymoban.com/news/detail-742272.html
[4] https://zhuanlan.zhihu.com/p/393997909文章来源地址https://www.toymoban.com/news/detail-742272.html
到了这里,关于目标检测算法综述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!