前言、相关知识
1.闭集和开集
- 开集:识别训练集不存在的样本类别。
- 闭集:识别训练集已知的样本类别。
2.多模态信息融合
文本和图像,文本的语义信息映射成词向量,形成词典,嵌入到n维空间。
图片内容信息提取特征,形成n维向量,嵌入到n维空间。
文本和图像的特征距离要尽量近一点,这样文本信息和图像内容信息特征相似。可以根据一种模态输入获得另一模态类型的输出。
3. 计算机视觉任务
- 分类问题
- 语义分割
- 物体检测
- 示例分割
一、目标检测基础知识
1. 目的:输入彩色RGB图像,输出检测的物体。
2. 过程:分类+定位
3. 最新的目标检测技术:文本 + 图像,制定类别检测
4. 现有方法分类:
1. 一步法(SSD、YOLO):仅使用一个卷积神经网络CNN直接预测不同目标和位置
2. 两步法(R-CNN、Fast R-CNN、Faster R-CNN)
step1:先生成候选框(利用Region Proposal Network(RPN))
step2:根据候选框分类+精调
二、目标检测——R-CNN(regional with cnn feature)
![R-CNN论文](https://img-blog.csdnimg.cn/direct/587d375e082d4b0aa1605822a0031212.png #pic_center=50%x50%)
R-CNN算法步骤
- 用selective search划分出候选区域(1k-2k),区域之间可能会有重合。
- 对每一个候选区域,使用深度网络提取特征
- 每一个特征送入SVM分类器,判断是否属于该类别(ps:非极大值抑制剔除就是将重合区域最大的区域删除)
ps:非最大值抑制剔除IOU
- 使用回归器(最小二乘)精细调整候选框位置
- R-CNN框架:划分区域——ss算法,特征提取——CNN网络,分类器——SVM支持向量机、回归期——最小二乘法。
) - R-CNN缺点:速度慢、空间占用多
三、目标检测—— Fast R-CNN( fast regional with cnn feature)
Fast R-CNN是R-CNN作者在原有基础上的改善,对于推理速度,准确率,训练时间都远远超于R-CNN。
Fast R-CNN算法步骤
- 一张图像生成多个候选区域(1K~2K)使用selective search 方法。
- 通过深度卷积神经网络,将图像输入之后得到相应的图像,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵。
ps:此处和R-CNN的区别,R-CNN将候选框输入到卷积神经网络得到特征,Fast R-CNN直接将整幅图像给卷积神经网络,在根据特征网络进行计算特征,避免了计算重复的区域。 - 将特征矩阵根据ROI pooling 缩放到7*7大小的特征图,然后通过一系列全连接层得到结果。
每一个区域的有很多像素,对于像素上的特征数据进行最大池化或者平均池化就会得到比较规整的图像。 - Fast R- Cnn分类器介绍
假如有n个类别,如果没有满足这n个类别,那么他就是背景,所以一共有n+1个类别的概率,我们根据每个类别的概率,概率最大的类别就是最终预测的类别。
- Fast R- Cnn回归器介绍
Fast R- Cnn分类器是根据缩放来实现的。
%) - Fast R- Cnn损失函数介绍
Fast R- Cnn论文中提出了一种新的损失函数SmoothL1Loss损失函数,改善了欧氏距离L1 loss和L2 loss损失函数。主要改善的地方在于其他两个损失函数对于离群点的梯度变化过于敏感或者是不够精细,SmoothL1Loss损失函数能够: - 当预测值与真实值误差过大时,梯度值不至于过大;
- 当预测值与真实值误差很小时,梯度值足够小。
想详细了解差异可看这篇文章:目标检测三种损失函数
四、目标检测—— Faster R-CNN( faster regional with cnn feature)
Fast R-CNN是R-CNN作者在原有基础上的改善,骨干网络使用VGG16,对于推理速度,准确率,训练时间成倍提高。
Faster R-CNN最好能够自己执行代码运行一下,需要重点掌握。
Faster R-CNN 算法步骤
- 将图像输入网络得到特征图
- 使用RPN结构生成候选框,将生成的候选框投影到特征图上得到对应的特征矩阵。
- 将每一个特征矩阵通过ROI pooling层,缩放到7*7的大小,接着通过特征图展平通过一系列全连接层得到预测结果。
主要特点是:RPN+Fast R-CNN
RPN Faster R-CNN计算总结
- 先网络获得特征图
- 在特征图上使用3x3卷积获得目标得分,调整锚点框位置,确定候选框
- 删除重叠和边缘候选框
- 将最终获得的候选框投影到特征图上
- 通过ROI pooling变成7x7的图像
PS:ROI pooling:感兴趣区域池化(Region of interest pooling)(也称为RoI pooling)是使用卷积神经网络在目标检测任务中广泛使用的操作。例如,在单个图像中检测多个汽车和行人。其目的是对非均匀尺寸的输入执行最大池化以获得固定尺寸的特征图(例如7×7)。 - 最后进行分类(class)和目标优化(loc:定位损失,能够是的预测框更加接近目标框。)
VGG16输入图像至少是600分辨率,如果不够600分辨率,会进行图像预处理
(600/16,800/16,512)的特征输入RPN。
RPN网络
RPN使用3x3卷积的目的:通过3x3的卷积层获得目标得分和边界回归偏移,判断特征映射图中的是不是我们候选框的目标。
根据目标得分判断是不是我们需要的目标,调整我们的锚点框(3x3卷积层反向画在原图片上的框),如果该锚点框里面是目标,那么它就升级为候选框,否则的话就不画。
每个位置(滑动窗口)在原图上都对应33=9anchor。
在候选框筛选过程中,去掉边缘anchor和IOU重叠,就会删除掉很多现有的候选框,以1000x600x3为例,最终剩下2k候选框。
参数回归器和分类器用的是卷积,不是全连接层,原因是:11的就卷积就相当于全连接层。
最后,还是需要提醒大家看原文和源码~深入理解原理。
参考文献:陈万军(西安理工大学)——《目标检测》课件