一、RCNN系列
1、RCNN
RCNN是用于目标检测的经典方法,其核心思想是将目标检测任务分解为两个主要步骤:候选区域生成和目标分类。
- 候选区域生成:RCNN的第一步是生成可能包含目标的候选区域,RCNN使用传统的计算机视觉技术,特别是选择性搜索(Selective Search)算法,这是一种Region Proposal区域提议方法,它根据图像中的纹理、颜色和形状等信息来生成潜在的候选区域。选择性搜索生成的候选区域通常数千个,因此需要对这些区域进行裁剪和调整,以使它们具有相同的大小和纵横比。
- 特征提取:对于每个候选区域,RCNN使用深度卷积神经网络(通常是在ImageNet数据集上预训练的AlexNet)来提取特征。这些特征用于表示每个候选区域的内容。RCNN通过将每个候选区域的图像块调整为固定大小,然后通过卷积神经网络进行前向传播,得到一个固定维度的特征向量。
- 目标分类:对于每个候选区域,RCNN将提取的特征向量输入到一个支持向量机(SVM)分类器中共,以确定该区域是否包含感兴趣的目标物体。RCNN还对每个目标物体的类别进行分类,使用不同的SVM分类器来表示不同的类别。每个分类器被训练为将包含目标物体的候选区域与不包含目标物体的区域进行区分。
- 边界框回归:为了提高目标的位置精度,RCNN还使用了一个回归器来微调每个候选区域的边界框,这个回归器被训练为预测候选区域与实际目标边界框之间的差异。
- 训练:RCNN的训练分为两个阶段,预训练和微调。①预训练阶段,卷积神经网络(Alexnet)在大规模图像分类任务上进行与训练,以获得有用的特征提取器。②微调阶段,使用标注的目标检测数据对整个RCNN模型进行微调,包括SVM分类器和边界框回归器。
- 优点和缺点:①优点:RCNN在目标检测上取得了很好的性能,特别是在大规模目标检测数据集上。它能够处理不同大小和形状的目标,并且可以适应多类别目标检测。②缺点:RCNN是一个复杂的多阶段模型,难以实现端到端的训练,后续版本(如Fast R-CNN和Faster R-CNN)针对这些缺点进行了改进,提高了速度和性能。
2、Fast R-CNN(Fast Region-based Convolutional Neural Network)
Fast R-CNN是在RCNN和Selective Search基础上提出的改进方法,主要创新是将整个目标检测流程集成到一个卷积神经网络(CNN)种,从而显著提高了速度和性能。
- 候选区域生成:不同于RCNN中使用选择性搜索,FastRCNN使用卷积网络直接从输入图像中生成候选区域。使用一个称为Region Proposal Network(RPN)的子网络,RPN可以高效地生成多尺度和多形状地候选区域,这些区域被称为锚框(Anchor Boxes)。
- 特征提取:FastRCNN使用卷积神经网络来提取每个候选区域的特征。这些区域特征被送入网络中以进行目标分类和边界框回归。使用卷积层和ROI(Region of Interest)池化层来提取固定维度的特征向量
- 目标分类和边界框回归:对于每个候选区域,Fast R-CNN使用两个并行的全连接层,一个用于目标分类(哪个类别?)和用于边界框回归(目标位置)。分类层使用softmax来预测目标的类别概率,而回归层用于微调候选区域的边界框。
- 训练:Fast R-CNN进行端到端的训练,可以同时优化RPN、目标分类和边界框回归的损失函数。训练数据包括正样本(包含目标的锚框)、负样本(不包含目标的锚框)以及他们的标签。
3、Faster R-CNN(Faster Region-based Convolutional Neural Network)
Faster R-CNN 进一步改进了 Fast R-CNN,将目标检测模型的速度提高到了一个新的水平,同时保持了很高的准确性。
- 候选区域生成:Faster R-CNN引入了一个完全卷积网络,作为RPN,用来生成候选区域。RPN是一个端到端可训练的网络,可以生成候选区域。
- 特征提取:与Fast-RCNN类似,Faster R-CNN 使用卷积神经网络来提取候选区域的特征。
- 目标分类和边界框回归:Faster R-CNN 与 Fast R-CNN 具有相似的目标分类和边界框回归步骤。
- 训练:Faster R-CNN 通过联合训练 RPN 和检测网络(包括目标分类和边界框回归)来优化整个系统。整个模型可以一次性生成候选区域并执行目标检测,从而提高了速度。
二、yolo系列
计算机视觉领域,目标检测是一个十分重要的研究主题, 广泛应用在人脸识别、车牌识别、安防、智慧交通、自动驾驶等领域。主要经典算法有:YOLO
1、YOLOv1
以往的二阶段检测算法,如Faster-RCNN,在检测时需要经过两步:边框回归和softmax分类。由于大量预选框的生成,该方法检测精度较高,但实时性较差。YOLO之父Joseph Redmon提出了通过直接回归的方式获取目标检测的具体位置信息和类别分类信息。极大的降低了计算量,显著提升了检测的速度。达到了45FPS(Fast YOLO版本达到了155FPS)。
- 思路:①将输入图片缩放至448x448x3大小;②经过卷积网络backbone提取特征图;③把提取到的特征图送入两层全连接层,最终输出7x7x30大小的特征图。更进一步讲,就是将输入的图片整体划分为SxS的网格(例如7x7),物体中心落在哪一个格子中,那么该各自就负责该物体的检测,每一个格子预测B个边框,输出SxS(B*5+C)。对于YOLOv1而言,常用的是7x7的网格划分,预测2个边框,输出7x7x30,30个通道包含每个类别的概率+边框置信度+边框位置信息。
- 网络结构:骨干网络是GoogleNet网络,24个卷积层+2个全连接层。使用7x7卷积。
- 优势与不足:①优点:与二阶段检测算法相比,利用直接回归的方式,大大缩小了计算量,提升了运行速度。②不足:每一个网格仅有两个预测框,当存在多物体密集挨着或者小目标的时候,检测效果不好。
2、YOLOv2
与YOLOv1相比,v2做了三点改变①更换骨干网络;②引入PassThrough;③借鉴了二阶段检测的思想,添加了预选框。
- 思路:将图片输入到darknet19网络中提取特征图,然后输出目标框类别信息和位置信息。
- 网络结构:骨干网络为darknet19,如下图所示针对1000类别的分类任务,只不过对于检测任务而言,需要使用3x3卷积(输出通道1024)取代上表中最后的卷积层,再添加Passthrough操作后,进行输出。已不再使用7x7这样的大卷积核:
- 技巧1: PassThrough操作(明天继续....今天累了