前言
目标检测和人脸识别是现在研究的热潮,简单了解其背后的原理有助于学习最新的算法。
目标检测
可以假设现在,给我们一张图片,我们能够把其中的目标都裁剪出来,那么我们直接把这些裁剪后的图片放入之前训练好的分类模型里是不是就可以完成检测的任务了
因此目标检测一个很重要的环节就是定位。
定位
定位方式:
1.检测框
数据的维数:起始点坐标+检测框长宽+分类数量
2.特征点
比如定位一个人可以定位其五官及各种特征点的位置
定位算法:
1.Slide Window detection
用不同大小的窗口在图片上遍历,其实就是相当于裁剪很多个大小不一的图片,分别判别是不是某一种类。
缺点:效率太低
2.卷积神经网络
-
共享权重和局部感受野:
- 在传统的滑动窗口方法中,每个窗口独立地对图像进行扫描和处理,计算开销很大。
- CNN使用卷积核对图像进行卷积操作,卷积核在整个图像中共享权重,极大地减少了参数数量和计算量。
- 卷积核的局部感受野使得CNN能够在局部区域内提取特征,并通过多层卷积逐步获取更大的感受野,捕捉全局信息。
-
多尺度特征提取:
- 滑动窗口方法通常需要手动设置不同大小的窗口来检测不同尺度的目标,复杂且耗时。
- CNN的多层结构天然地适应了不同尺度的特征提取。浅层提取低级特征(如边缘、纹理),深层提取高级特征(如物体的部分或整体形状)。
缺点:没有办法精确定位
3后续改进
-
使用区域提议网络(Region Proposal Networks, RPNs):
- Faster R-CNN:这种方法结合了RPN和Fast R-CNN,RPN生成候选区域,然后Fast R-CNN对这些区域进行分类和边界框回归。RPN的引入极大提高了定位精度和效率。
-
多尺度特征金字塔(Feature Pyramid Networks, FPNs):
- FPNs通过构建多尺度特征金字塔,能够捕捉不同尺度的目标。将来自不同层的特征融合,使得模型在处理小物体和大物体时都表现良好。
-
单阶段检测器(Single-Shot Detectors):
- YOLO (You Only Look Once) 和 SSD (Single Shot MultiBox Detector):这些方法将目标检测作为一个回归问题,通过一个网络直接预测边界框和类别。它们通过多尺度特征图进行预测,具有较高的检测速度和较好的定位精度。
-
边界框回归:
- 对初始预测的边界框进行回归优化,可以进一步提高定位精度。通过多次迭代回归,可以逐步逼近真实的目标位置。
-
非极大值抑制(Non-Maximum Suppression, NMS):
- NMS用于消除重叠的边界框,保留置信度最高的边界框。改进NMS算法,如软NMS,可以更好地处理重叠目标,提升定位效果。
-
聚合上下文信息:
- 上下文建模:通过结合目标周围的上下文信息,可以提高检测的准确性。使用注意力机制或上下文感知模块来聚合周围的信息,有助于更精确地定位目标
-
RPN(Region Proposal Network)
作用:
RPN 是一种用于生成目标区域提议的神经网络模块,通常与后续的目标检测网络(如Fast R-CNN、Faster R-CNN等)结合使用。它能够自动地在输入图像中生成多个候选目标区域(通常是矩形边界框),这些候选区域可能包含感兴趣的目标。 - 锚框:在每个滑动窗口位置,RPN 提出多个预定义的锚框(Anchor Boxes),这些锚框具有不同的尺度和宽高比,用来覆盖不同大小和形状的目标。
1. 多尺度与多比例
为了覆盖不同大小和形状的目标,锚框通常设置为多尺度和多比例:
-
多尺度(Scales):
- 锚框的大小应覆盖从小目标到大目标的范围。例如,可以选择一组不同的尺度(如32、64、128、256、512像素)来生成锚框。
-
多比例(Aspect Ratios):
- 锚框的比例应覆盖各种目标形状。例如,可以选择不同的长宽比(如1:1, 2:1, 1:2, 3:1, 1:3)来生成锚框。常见的选择包括1:1,2:1,1:21:1, 2:1, 1:21:1,2:1,1:2。
2. 覆盖整个图像
锚框应该均匀分布在整个图像上,确保图像中的每个区域都被覆盖到。一般来说,每个卷积特征图的每个位置都会生成多个锚框,确保在各个位置都考虑到了不同尺度和比例的可能性。
3. 与目标尺寸和形状相匹配
锚框的尺寸和比例应尽量与数据集中目标的实际尺寸和形状相匹配。可以通过分析数据集中的目标尺寸分布,选择合适的尺度和比例。
人脸识别
人脸识别相较于目标识别有一个特点,就是它需要只通过用户的一张图片(one-shot learning)来判断,这样的话像之前的训练方式就不太合适了。
原理
总结
越来越有意思了,但感觉学这些越来越往广的方向发展了,还是得深入学一个网络