计算机视觉CV目标检测综述

计算机视觉CV目标领域经典算法综述

零、什么是目标检测

目标检测:是物体识别和物体定位的综合,不仅仅要识别出物体属于哪个分类,更重要的是得到物体在图片中的具体位置。
在这里插入图片描述
(1)分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
(2)定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。
(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。

一、目标检测发展历程

基于深度学习的目标检测算法根据训练方式分为2类:Two stage和One stage。
目标检测发展历程

1.Two-stage?

顾名思义Two-stage标明模型的训练分2步走:
1.对输入图片首先进行区域的proposal,选取可能有物体的区域,方法包括Selective search和RPN等。
2.然后对认为是可能是前景的候选图片进行边界框的回归(在第一步的感兴趣的区域基础上进行微调,提供更为优质的回归框)和类别分类。
其中代表算法包括:RCNN、faster-RCNN、fastest-RCNN系列算法以及R-FCN、RPN等。
在这里插入图片描述

2.One-stage

One-stage算法直接对图片进行特征提取后,输出类别和位置信息,没有Two-stage中的区域提取过程,比如RPN网络:
其中代表算法:YOLO1~3系列,SSD系列等
在这里插入图片描述

二、Two-stage VS One-stage

在这里插入图片描述

1.训练难点

One-stage使用均匀的密集采用,这种方法的一个短板是训练比较困难,主要是由正样本(目标)和负样本(背景)极其不均衡导致。
对于Two-stage而言,采用RPN等方法生成候选框后,在进行分类回归之前会先过滤掉一大部分负样本,使得正负样本较为均衡。
对于One-stage而言,大多数采用稀疏采用的原来,检测器在每种图中生成大量的候选框,而只有少部分能框住目标。

换而言之:One-stage 等于 Two-stage就是将一个复杂的任务或者困难的任务,分为两个阶段进行处理。先去掉大量负样本,其次在剩下样本中进行更为容易的样本进行训练。

2.推断速度

one stage比two stage速度快。这是因为:
(1)one stage detection没有区域建议网络,也就是说区域建议网络与分类定位完全集成。这样就可以一定限度地减少冗余计算,提高速度;
(2)one stage detection对图像中任何数量的对象都是鲁棒的,其计算负载仅取决于anchor 的数量。然而,每个区域重复执行的Faster RCNN,其计算负荷随着RPN提出的区域数目的增加而增加。这个数字受到一个超参数的限制,为了得到更好的结果,这个参数被设置得足够大,从而导致大量的开销。另外,detect head也是拖累速度的一个重要因素,采用 light head 可以缩小 two-stage 和 one-stage 在速度上的差距。

3.检测性能

和1保存一致,由于One-stage存在大量样本不均衡的问题,很大程度上影响了整个网络的学习,拉低了整体的准确率;而two-stage网络最终学习的ancor虽然不多,但是背景ancor也就是对网络学习不利的ancor也不会特别多,它虽然也能影响整体的准确率,但是肯定没有one-stage影响得那么严重,所以它的准确率比one-stage肯定要高。
One-stage中,常常采用Focal-loss来辅助模型去学习更为难的样本,抑制模型过拟合到大批量的负样本上。

参考:
[1]:https://blog.csdn.net/yegeli/article/details/109861867
[2]:https://zhuanlan.zhihu.com/p/30621997

版权声明:本文为CSDN博主「CVer_nieshiwu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/nie1014/article/details/122218208

CVer_nieshiwu

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐