总结faster r-cnn可能会问到的面试问题

最近准备春招实习,由于之前做过faster r-cnn的项目,所以总结一下提前准备一下可能会被问到的问题。

  1. faster rcnn家族史
    r-cnn:用selective search选择候选框(约为2k个),然后缩放到统一大小,之后分别输入CNN得到特征,将输出特征再经过bbox和SVM进行分类和回归。多阶段检测。
    缺点:模型复杂,多阶段检测,卷积未共享,速度慢。svm和回归在神经网络外,cnn提取出的特征需要大量空间存储。
    selective search :首先通过简单的区域划分算法,将图片划分成很多小区域,再通过相似度和区域大小(小的区域先聚合,这样是防止大的区域不断的聚合小区域,导致层次关系不完全)不断的聚合相邻小区域,类似于聚类的思路。
    SPP-Net 空间金字塔池化
    在r-cnn中为了得到的输出特征大小一致,需要对输入的框进行缩放,这样导致图像变形,由此提出SPP-Net.
    首先对图片做一次卷积,得到特征图,将不同尺寸的候选框映射到特征图上,然后输入pooling层,通过三个尺度(44,22,1*1)的池化层分别池化,再连接起来最终得到相同长度的特征向量,再送到FC层进行分类。
    优化1:引入roi pooling层,可以输入不同尺寸的候选框
    优化2:只对图片做一次卷积,而r-cnn中对每个候选框都分别卷积,大大提升速度。
    Fast r-cnn
    将SPP-Net应用到r-cnn中,添加roi pooling层,同时将整张图送入cnn中。另外,把r-cnn中的分类回归任务放到神经网络中,使用softmax和bbox进行分类和回归。省去了特征图的存储消耗。
    但selective search仍然消耗了大量的时间选择候选区域,且没在神经网络中,只能用cpu,不能用gpu加速。
    faster r-cnn
    使用RPN网络代替selective search,把所有操作都放入神经网络中,真正实现了端到端训练。同时共享卷积。

  2. RPN网络是什么
    是一个全卷积网络,因此任意尺寸图像都能输进来。
    (1)将feature map输入rpn网络后,首先经过一个3*3的卷积,融合周边特征,增强鲁棒性,得到特征图。
    (2)特征图上的每个点都代表原始图像上的一个区域,对每个点产生9个anchor boxes(3种比例和3种大小)映射到原图上。
    (3)标记正负样本。首先去除掉超过边界的anchor。然后计算anchor boxes和ground truth的IoU,对于每个gt,和其重叠最高的设为正样本(IoU最大),IoU>0.7的anchor作为正样本,IoU<0.3的anchor作为负样本。其余样本不参与训练。
    (4)然后逐像素通过1 * 1的卷积核(代替全连接层)进行分类和回归。分类的卷积核个数为9 * 2个,回归的卷积核个数为9 * 4个。
    (5)对预测框进行边界剔除和nms非极大值抑制,生成最终的候选框,region proposal,大约为2000个。然后再取前n个概率高的boxes,进入下一步。
    (6)rpn在训练时,mini-batch中每个图像选256个proposal,正负1:1.

  3. 1 * 1卷积核的作用
    作为全连接层使用。相当于把特征图在每个通道上的信息进行融合,且保留了特征图原有的平面结构,同时调整了深度(通道数),可以升降维。
    1 * 1卷积核相比于全连接层的好处:不改变特征的平面结构,输入形状可以任意。

  4. rpn的loss
    分类的loss为交叉熵cross_entroy,回归的loss为smooth L1 loss.
    Smooth L1完美地避开了 L1 和 L2 损失的缺陷,在 损失 较小时,对 其梯度也会变小,使得能够更好的进行收敛; 而在损失很大时,对 x 的梯度的绝对值达到上限1,不会因预测值的梯度十分大导致训练不稳定。L2对离群点,异常值更敏感,容易发生梯度爆炸。

  5. NMS非极大值抑制
    (1)将候选框按分类概率排序,保留概率最高的框A。
    (2)然后按顺序判断其他的每个框跟A的IoU,如果超过某个设定的阈值,则认为重叠率过高,该框没用,将其删除。
    (3)从未被删除的框中选出概率最高的框B,重复步骤(2)。
    (4)重复(3),直到没有可删除的框。则全部框都筛选完成。

  6. ROI Pooling
    输入为region proposals 和 特征提取的 feature map。将region proposal 映射到feature map上,然后对每个region proposal分成7 * 7的方格,做max pooling,从而输出为大小相等的7*7的proposal feature maps。roi pooling的作用是不固定输入的尺寸,输出相同尺寸,从而能够进入全连接层。

  7. ROI Align
    解决ROI Pooling中的两次量化,第一次是将原图的候选框映射到特征图上时,会除以32,得到一个浮点数,此时会进行取整操作。第二次是在pooling时,将特征图映射为7*7的大小,此时也是除不尽的,要进行取整操作。就会对边框位置产生影响。
    ROI Align通过对浮点数的位置进行双线性插值,得到这个点的值。对于pooling中的每个格子,取固定的4个点进行双线性插值,然后取max,作为这个格子的输出。

  8. 遇到的问题
    遥感图像是从卫星上拍摄的,非常大,相应图像上的目标就很小。如何来对小目标进行检测。首先是把遥感图像切割成小一些的图像,使得目标相对于图像来说大一些,然后统计目标的实际尺寸,对anchor的尺寸进行更改,使得模型更适用于我的数据集。然后由于我是要通过模型来统计船只的数量,所以在测试时就要对输入的测试数据进行批量的计数。

你可能感兴趣的:(机器学习)