This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
目标检测 [2021/07/02 22:42] jordan [目标检测相关资料] |
目标检测 [2023/03/08 16:09] (current) xujianglong ↷ Page moved from 内部资料:目标检测 to 目标检测 |
||
---|---|---|---|
Line 13: | Line 13: | ||
* One-Stage methods | * One-Stage methods | ||
- | * [[YOLO]] | + | * [[:yolo]] |
- | * [[SSD]] | + | * [[:ssd]] |
- | * [[RetinaNet]] | + | * [[:retinanet]] |
* Two-Stage methods | * Two-Stage methods | ||
* [[Faster R-CNN]] | * [[Faster R-CNN]] | ||
- | * [[Mask R-CNN]] | + | * [[:mask_r-cnn]] |
* [[Cascade R-CNN]] | * [[Cascade R-CNN]] | ||
- | ===== 目标检测相关资料 | + | ===== 目标检测快速入门 ===== |
+ | |||
+ | [[https:// | ||
+ | |||
+ | ==== 目标检测网络模型 ==== | ||
+ | |||
+ | === R-CNN === | ||
+ | |||
+ | **基于深度学习的目标检测的开山之作**。**两大贡献**:1)CNN可用于基于区域的定位和分割物体;2)监督训练样本数紧缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果。R-CNN将检测抽象为**两个过程**,一是基于图片提出若干可能包含物体的区域(即图片的局部裁剪,被称为Region Proposal),文中使用的是Selective Search算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),得到每个区域内物体的类别。**模型本身存在的问题**也很多,如需要训练三个不同的模型(proposal, | ||
+ | |||
+ | === Fast R-CNN === | ||
+ | |||
+ | **共享卷积运算**。文章指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算,故有Fast之名。文章将Proposal, | ||
+ | |||
+ | === Faster R-CNN === | ||
+ | |||
+ | 提出的**RPN网络取代Selective Search算法使得检测任务可以由神经网络端到端地完成**。Faster R-CNN = RPN + Fast R-CNN。使用滑动窗口生成anchor box的思想也在后来的工作中越来越多地被采用(YOLO v2等)。**这项工作奠定了" | ||
+ | |||
+ | === YOLO=== | ||
+ | |||
+ | **YOLO是单阶段方法的开山之作**。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图片同时得到位置和分类而得名。其卷积网络:由GoogLeNet更改而来,每个网格对每个类别预测一个条件概率值,并在网格基础上生成B个box,每个box预测五个回归值,四个表征位置,第五个表征这个box含有物体(注意不是某一类物体)的概率和位置的准确程度(由IoU表示)。**损失函数被分为三部分:坐标误差、物体误差、类别误差**。为了平衡类别不均衡和大小物体等带来的影响,损失函数中添加了权重并将长宽取根号。相比两阶段方法,其速度优势明显,实时的特性令人印象深刻。但YOLO本身也存在一些问题,如划分网格较为粗糙,每个网格生成的box个数等**限制了对小尺度物体和相近物体的检测**。 | ||
+ | |||
+ | === SSD === | ||
+ | |||
+ | Single Shot Multibox Detector。相对于YOLO,**多尺度的feature map**:基于VGG的不同卷积段,输出feature map到回归器中。这一点试图提升小物体的检测精度。**更多的anchor box**,每个网格点生成不同大小和长宽比例的box,并将类别预测概率基于box预测(YOLO是在网格上),得到的输出值个数为(C+4)×k×m×n,其中C为类别数,k为box个数,m×n为feature map的大小。 | ||
+ | |||
+ | ==== 模型度量 | ||
- | * [[https:// | ||
- | * **R-CNN**:**基于深度学习的目标检测的开山之作**。**两大贡献**:1)CNN可用于基于区域的定位和分割物体;2)监督训练样本数紧缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果。R-CNN将检测抽象为**两个过程**,一是基于图片提出若干可能包含物体的区域(即图片的局部裁剪,被称为Region Proposal),文中使用的是Selective Search算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),得到每个区域内物体的类别。**模型本身存在的问题**也很多,如需要训练三个不同的模型(proposal, | ||
- | * **Fast R-CNN**: **共享卷积运算**。文章指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算,故有Fast之名。文章将Proposal, | ||
- | * **Faster R-CNN**: 提出的**RPN网络取代Selective Search算法使得检测任务可以由神经网络端到端地完成**。Faster R-CNN = RPN + Fast R-CNN。使用滑动窗口生成anchor box的思想也在后来的工作中越来越多地被采用(YOLO v2等)。**这项工作奠定了" | ||
- | * **YOLO**: **YOLO是单阶段方法的开山之作**。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图片同时得到位置和分类而得名。其卷积网络:由GoogLeNet更改而来,每个网格对每个类别预测一个条件概率值,并在网格基础上生成B个box,每个box预测五个回归值,四个表征位置,第五个表征这个box含有物体(注意不是某一类物体)的概率和位置的准确程度(由IoU表示)。**损失函数被分为三部分:坐标误差、物体误差、类别误差**。为了平衡类别不均衡和大小物体等带来的影响,损失函数中添加了权重并将长宽取根号。相比两阶段方法,其速度优势明显,实时的特性令人印象深刻。但YOLO本身也存在一些问题,如划分网格较为粗糙,每个网格生成的box个数等**限制了对小尺度物体和相近物体的检测**。 | ||
- | * **SSD**: Single Shot Multibox Detector。相对于YOLO,**多尺度的feature map**:基于VGG的不同卷积段,输出feature map到回归器中。这一点试图提升小物体的检测精度。**更多的anchor box**,每个网格点生成不同大小和长宽比例的box,并将类别预测概率基于box预测(YOLO是在网格上),得到的输出值个数为(C+4)×k×m×n,其中C为类别数,k为box个数,m×n为feature map的大小。 | ||
* 目标检测模型本源上可以用统计推断的框架描述,我们关注其犯第一类错误和第二类错误的概率,通常用准确率和召回率来描述。**准确率描述了模型有多准,即在预测为正例的结果中,有多少是真正例;召回率则描述了模型有多全,即在为真的样本中,有多少被我们的模型预测为正例**。 | * 目标检测模型本源上可以用统计推断的框架描述,我们关注其犯第一类错误和第二类错误的概率,通常用准确率和召回率来描述。**准确率描述了模型有多准,即在预测为正例的结果中,有多少是真正例;召回率则描述了模型有多全,即在为真的样本中,有多少被我们的模型预测为正例**。 | ||
* 在检测中,mAP(mean Average Precision)作为一个统一的指标将这两种错误兼顾考虑。具体地,对于每张图片,检测模型输出多个预测框(常常远超真实框的个数),我们使用IoU(Intersection Over Union,交并比)来标记预测框是否为预测正确。标记完成后,**随着预测框的增多,召回率总会提升,在不同的召回率水平下对准确率做平均,即得到AP,最后再对所有类别按其所占比例做平均,即得到mAP**。 | * 在检测中,mAP(mean Average Precision)作为一个统一的指标将这两种错误兼顾考虑。具体地,对于每张图片,检测模型输出多个预测框(常常远超真实框的个数),我们使用IoU(Intersection Over Union,交并比)来标记预测框是否为预测正确。标记完成后,**随着预测框的增多,召回率总会提升,在不同的召回率水平下对准确率做平均,即得到AP,最后再对所有类别按其所占比例做平均,即得到mAP**。 | ||
* 常常用FPS(Frame Per Second,每秒帧率)来表示检测模型能够在指定硬件上每秒处理图片的张数。通常来讲,在单块GPU上,两阶段方法的FPS一般在个位数,而单阶段方法可以达到数十。 | * 常常用FPS(Frame Per Second,每秒帧率)来表示检测模型能够在指定硬件上每秒处理图片的张数。通常来讲,在单块GPU上,两阶段方法的FPS一般在个位数,而单阶段方法可以达到数十。 | ||
- | * 标准数据集:Pascal VOC(Pascal VOC对早期检测工作起到了重要的推动作用),MS COCO(COCO提供的评测标准更为精细化,提供的API不仅包含了可视化、评测数据的功能,还有对模型的错误来源分析脚本,能够更清晰地展现算法的不足之处。COCO所建立的这些标准也逐渐被学术界认可,成为通用的评测标准。),Cityscapes(专注于现代城市道路场景的理解,提供了30个类的像素级标注,是自动驾驶方向较为权威的评测集)。 | ||
- | * 提升检测模型性能的技巧:**数据增强**(数据增强是增加深度模型鲁棒性和泛化性能的常用手段,随机翻转、随机裁剪、添加噪声等也被引入到检测任务的训练中来,其信念是通过数据的一般性来迫使模型学习到诸如对称不变性、旋转不变性等更一般的表示)、**多尺度训练/ | ||
- | * **卷积网络设计范式:Repeat**. 由AlexNet和VGG等开拓,被之后几乎所有的网络采用。即堆叠相同的拓扑结构,整个网络成为模块化的结构。**Multi-path**. 由Inception系列发扬,将前一层的输入分割到不同的路径上进行变换,最后拼接结果。**Skip-connection**. 最初出现于Highway Network,由ResNet发扬并成为标配。即建立浅层信息与深层信息的传递通道,改变原有的单一线性结构。 | ||
- | * 典型的Backbone network:ResNet、Xception、ResNeXt、SENet、NASNet | ||
- | * 分类与定位问题的权衡:分类网络中的Pooling层操作常常会引入平移不变性等使得整体语义的理解更加鲁棒,而在检测任务中我们则需要位置敏感的模型来保证预测位置的精确性,这就产生了分类和定位两个任务间的矛盾。相关的解决方案包括R-FCN和Deformable Convolution Networks | ||
+ | ==== 标准数据集 ==== | ||
+ | |||
+ | Pascal VOC(Pascal VOC对早期检测工作起到了重要的推动作用),MS COCO(COCO提供的评测标准更为精细化,提供的API不仅包含了可视化、评测数据的功能,还有对模型的错误来源分析脚本,能够更清晰地展现算法的不足之处。COCO所建立的这些标准也逐渐被学术界认可,成为通用的评测标准。),Cityscapes(专注于现代城市道路场景的理解,提供了30个类的像素级标注,是自动驾驶方向较为权威的评测集)。 | ||
+ | | ||
+ | ==== 提升检测模型性能的技巧 ==== | ||
+ | |||
+ | **数据增强**(数据增强是增加深度模型鲁棒性和泛化性能的常用手段,随机翻转、随机裁剪、添加噪声等也被引入到检测任务的训练中来,其信念是通过数据的一般性来迫使模型学习到诸如对称不变性、旋转不变性等更一般的表示)、**多尺度训练/ | ||
+ | |||
+ | ==== 卷积网络设计范式 ==== | ||
+ | |||
+ | **Repeat**. 由AlexNet和VGG等开拓,被之后几乎所有的网络采用。即堆叠相同的拓扑结构,整个网络成为模块化的结构。**Multi-path**. 由Inception系列发扬,将前一层的输入分割到不同的路径上进行变换,最后拼接结果。**Skip-connection**. 最初出现于Highway Network,由ResNet发扬并成为标配。即建立浅层信息与深层信息的传递通道,改变原有的单一线性结构。 | ||
+ | |||
+ | ==== 典型Backbone network ==== | ||
+ | |||
+ | ResNet、Xception、ResNeXt、SENet、NASNet | ||
+ | |||
+ | ==== 分类与定位问题的权衡 ==== | ||
+ | |||
+ | 分类网络中的Pooling层操作常常会引入平移不变性等使得整体语义的理解更加鲁棒,而在检测任务中我们则需要位置敏感的模型来保证预测位置的精确性,这就产生了分类和定位两个任务间的矛盾。相关的解决方案包括R-FCN和Deformable Convolution Networks | ||
+ | |||
+ | ==== 特征复用与整合 ==== | ||
+ | |||
+ | **FPN**(Feature Pyramid Networks,特征金字塔本是很自然的想法,但如何构建金字塔同时平衡检测任务的定位和分类双目标,又能保证显存的有效利用,是本文做的比较好的地方。如今,FPN也几乎成为特征提取网络的标配,更说明了这种组合方式的有效性。)、**TDM**(Top-Down Modulation,TDM结构对小物体检测精度的提升帮助明显。而且,TDM是对检测头部的改进,也有推广到单阶段模型的潜力)、**DSSD**(Deconvolutional Single Shot Multibox Detector,利用反卷积操作对SSD的改进)、**RON**: | ||
+ | |||
+ | ==== 目标检测的实时处理 ==== | ||
+ | |||
+ | **Light Head R-CNN**:**两阶段检测器通常在生成Proposal后进行分类的" | ||
+ | |||
+ | ==== 目标检测发展的一些新趋势 ==== | ||
+ | YOLO9000,Mask R-CNN,Focal Loss,Mimic,CGBN,A-Fast-RCNN,Relation Module | ||
===== 相关术语 ===== | ===== 相关术语 ===== |