cvnotes
目标检测
检测框生成
- SS(Selective Search): 经典检测中用于生成检测框 较早RCNN中会用
- 优势
- 捕捉不同尺度
- 多样化
- 快速计算
即SS 是用于目标检测的区域提议算法 计算速度快 具有很高的召回率 基于颜色、纹理、大小和形状兼容计算相似区域的分层分组
- 优势
- RPN: Faster Rcnn 使用的检测框生成算法 效率更高
RPN最终就是在原图尺度上,设置了密密麻麻的候选Anchor。然后用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,仅仅是个二分类而已- RPN包括以下部分:
- 生成anchor boxes
- 判断每个anchor box为foregoroud(包含物体)或者background(背景) 二分类
- 边界框回归对anchor box进行微调 使得 positive anchor 和真实框(Ground Truth Box)更加接近
- anchor:
- 感受野: 感受野也就是特征上的一个元素,对于输入图像的感受范围。 卷积层⬆ -> 特征感受野↑
- 在最后一层中 特征的感受野一般都比较大 而且感受野一般都是正方形 -> 网络收敛困难
- 在原始的输入图像上设置很多预设框 假定预设框是存在目标 然后一个一个的去对每一个预设框进行判断 是否存在目标 预设框是否和目标符合 ->
- 不存在目标 就在分类分支打低分 存在就打高分
- 如果预设框和目标相比偏了 那就需要调整预设框的偏移量 调整一下预设框的大小和中心位置 -> 即回归分支计算损失
-> 那个预设框即为 anchor
-> 这一阶段输出的框即为 Anchor + 偏移量的结果
- RPN包括以下部分:
ROI pooling
在Fast-Rcnn中
RoI Pooling层则负责收集proposal,并计算出proposal feature maps,送入后续网络
- Rol pooling层有2个输入:
- 原始的feature maps
- RPN输出的proposal boxes(大小各不相同)
特征融合
特征融合的目的 是把从图像中提取的特征 合并成一个比输入特征更具有判别能力的特征 因此如何正确进行融合特征就成了一个重要问题
- 早融合(early fusion) 和 晚融合(late fusion)
在很多工作中,融合不同尺度的特征是提高分割性能的一个重要手段。低层特征分辨率更高,包含更多位置、细节信息,但是由于经过的卷积更少,其语义性更低,噪声更多。高层特征具有更强的语义信息,但是分辨率很低,对细节的感知能力较差。如何将两者高效融合,取其长处,弃之糟泊,是改善分割模型的关键。
很多工作通过融合多层来提升检测和分割的性能,按照融合与预测的先后顺序,分类为早融合(Early fusion)和晚融合(Late fusion)。- early fusion: 用经典的特征融合方法,在现有的网络中 用concat或add融合其中的某几层
- lately fusion:
- 采用类似**特征金字塔(FPN)**的思想 对特征融合后进行预测
- feature不融合,多尺度的feture分别进行预测,然后对预测结果进行综合,如Single Shot MultiBox Detector (SSD) , Multi-scale CNN(MS-CNN)
- 用一个具有高低特征融合能力的网络替代普通的网络,如Densenet;
- 不进行高低层特征融合,而是在高层特征预测的基础上,再用底层特征进行预测结果的调整
- concat 和 add
- concat: concat是通道数的增加
- add: add是特征图相加,通道数不变
- 两者有如下区别
- add是描述图像的特征下信息量增多了 但是描述图像的维度本身并没有增加 只是每一维下的信息量在增加 -> 因此对与最终的图像分类是有益的
- concat是通道数的合并 也就是说描述图像本身的特征数(通道数)增加了 而每一特征下的信息没有增加
- concat每个通道对应着对应的卷积核 而add形式则将对应的特征图相加 再进行下一步卷积操作 再进行下一步卷积操作 -> 相当于加了一个先验 (add等价于concat之后对应通道共享同一个卷积核)
- add可以认为是特殊的concat形式 但是add的计算量要比concat的计算量小得多
图像采样(上下采样)
- 缩小图像 即 下采样==降采样 主要目的如下
- 使得图像符合显示区域的大小
- 生成对应图像的缩略图
- 放大图像 即 上采样==图像插值 主要目的下
- 放大原图像 从而可以显示在更高分辨率的显示设备
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 niiish32x 's blog!