现在深度学习的工具和资料越来越多,门槛也越来越低,但是经典仍然是经典,在日常学习或者是面试考察中,尤其图像类的算法岗位,回答相关问题的细节和条理性显得尤为重要,甚至之前自己已经整理过的一些内容,不及时复习回顾也是枉然。这也是笔者被面试官按在地上摩擦以后的惨痛教训,痛定思痛,接下来的一系列文章要再拜读并整理一些经典之作的思想和脉络。也希望读到这篇文章的有缘人可以积极留言交流学习,我也可以查漏补缺。
.
Step1: 输入图片,用 Selective search 的方法在图片中提取 region proposal(这里使用 SS 也是为了跟同时期的其他方法方便对比)
Step2: 提取特征,将这些 region proposal 经过一些预处理,送进 CNN 提取特征
Step3: 使用 SVM 对这些特征进行分类学习,并进行边框回归
Step1: 微调 CNN。将 CNN 在 ImageNet 分类数据集下预训练,再将 CNN 最后一层分类层进行替换,然后使用 warp 过的 region proposal 进行微调。
Step2: 训练 SVM。 对每一类创建一个二分类的线性 SVM,然后结合得到的每一类的特征和标签进行训练。
Step3: 训练边框回归模型。bounding-box regressor 模型的训练
这里主要是解决训练一个大的 CNN 网络时,目标检测领域的数据集缺乏的问题,传统方法都是先使用非监督学习预训练,再用监督学习微调。本文是先在 ImageNet 上预训练CNN,然后再在获取的目标候选区域。这里主要需要了解的可能就是文中是如何处理输入的 region proposal 来微调 CNN 的。
.
这里选择 finetune 网络的 region proposal 正样本是与物体的真值框 IoU >=0.5 的,小于0.5的则为负样本。
这里是用 CNN 提取到的不同类别的特征训练多个线性SVM分类器,主要是正负样本的选择问题,这里判断正负样本的阈值为0.3 (不同于 Finetune CNN 时候的 0.5 阈值,文中表示选择 0.5 阈值性能会下降 5 个点),而且使用了 hard negative mining 的。至于为什么不是微调后直接采用 softmax 进行分类而是使用多个 SVM? 文中给出的解释是第一,微调使用的 region proposal 正样本阈值满足大于等于 0.5 就可以了,不强调准确定位,第二,微调时负样本是随机抽样的,SVM 则是经过 hard negative mining 的。
Ps: hard negative mining 是指把分类器错误分类的样本(负样本分类成了正样本),挑选出来,重新加入到训练集继续训练。
为了更加准确的定位,文中还使用了一个简单的边框回归网络,对 SVM 已经分类好的 region proposal ,R-CNN 还会使用边框回归模型预测一个新的边框位置。这里主要的灵感来自于 DPM 的工作,边框回归的输入是一对对的预测坐标和真值坐标。主要是对由预测的坐标和真值坐标之间的映射关系进行参数化,使其能够学习。.
进一步探讨关于映射变换的定义,为什么 tw 和 th 是 log 形式的,在坐标的反变换中,想要缩放的比例因子始终是大于 0 的数,最直观的就是使用 exp 函数,所以转变过来就是 log 形式了。
参考博客: https://blog.csdn.net/zijin0802034/article/details/77685438/