面试官爱问的Faster-RCNN面试题总结

Faster-RCNN面试题

前言

本文总结面试中针对Faster-RCNN系列文章的常问问题。通过这些面试题也能对网络结构的细节有进一步的了解和加深。

一、基于Faster-RCNN家族的问题

1.从RCNN到Fast-RCNN到Faster-RCNN,各网络是如何改进的?优缺点是什么?

(我习惯分别从候选框的生成方式,卷积生成特征是否重复,尺寸归一化方式,用什么分类来阐述)

1.1 RCNN到Fast-RCNN:

(1)候选框的生成方式:

RCNN的候选框是通过selective
search生成的,这种方法是基于图片的纹理或者颜色周围的像素值,把相近的区域用同一个颜色表示,如何把同颜色的区域再表示成框,大概能生成2K个候选框吧,数量上较少,但是速度也是很慢的。在这一点上Fast-RCNN没有进行改进

(2)卷积生成特征是否重复:

RCNN先提取候选框,然后对候选框做卷积,包含重复的特征提取过程,在这一点上Fast-RCNN进行了改进:使用特征映射的方式,对原图进行卷积生成整张图片的特征图,然后再生成候选框,候选框到对应的位置找对应的特征图。怎么找?因为卷积会对尺寸有一个缩放,那把候选框的坐标也相应的缩放一样的尺寸对应找到特征图上的坐标就是对应的候选框特征的坐标了。但是这个缩放尺寸的过程通常不是一个能整除的,但是结果保留的整除的结果,就会有一定的信息损失。

(3)尺寸归一化方式:

RCNN对候选区域的特征图送入网络训练之前是直接resize操作,Fast-RCNN对其进行了改进:使用ROI-Pooling,什么是ROI-Pooling?假设要resize成7×7的尺寸,首先将FM分成7×7块,如果长宽除不尽的情况下,通常最后一行最后一列是包含余数的,块比较大,然后对每一块的像素值中做maxpooling,选每一块的最大值代表这个区域,最终得到一个7×7尺寸的特征图。但是这个方法会损失信息,大目标也许没什么,但是对于小目标来说损失的信息是特别多的。

(4)用什么分类:

RCNN的分类采用SVM,Fast-RCNN对其的改进是:用两个FC层进行分类和回归

1.2 Fast-RCNN到Faster-RCNN:

(1)候选框的生成方式:

这是Faster-RCNN的改进之处。在Faster-RCNN中使用RPN生成候选框,假设特征图的尺寸是H×W,每个特征图的像素点对应到原图的某一区域上会生成9个尺寸的Bbox,能得到H×W×9数量级的候选区域,不仅速度上提升,数量上也提升了

(2)卷积生成特征是否重复:

沿用Fast-RCNN,没有改进。

(3)尺寸归一化方式:

沿用Fast-RCNN,没有改进。

(4)用什么分类:

沿用Fast-RCNN,没有改进。

二、Faster-RCNN中的RPN

1.前/背景分类为什么用sigmoid,而不是softmax?

其实我刚开始接触的时候用的softmax,因为sigmoid和softmax都可以用于二分类问题,所以就说一下两者的区别和联系吧,首先softmaxm各个类别的概率和加起来是1,sigmoid概率总和不一定是1,它的结果是相互独立的。sigmoid把value映射到(0,1),softmax是把向量压缩(工作过程是先求指数,然后再求和,每个原来的数变成它的指数除以所有元素指数形式和)

2.Rpn哪里能提升小目标检测精度? anchor的设计

先说一下anchor的设计,RPN的anchor主要经历两步:
第一步是设置baseanchor,通常是3种长宽比(1:2,1:1,2:1),三种面积(322,642,1282),这三种两两组合就对应9种baseanchor。至于这个设计是怎么来的,我认为是通过统计标签中的GT,然后选择了这三种并且也基于实验选的。
第二步是生成anchor,generatedanchor,通过两个1×1卷积的分支,计算分类得分和回归的偏移量,然后调整生成了更精准的anchor。

至于RPN哪里能提升小目标的检测精度,应该就是FPN的思想吧,因为卷积操作低层的是像素级信息,像尺寸啊形状啊这种信息;但是高层得到的是语义信息,就是猫啊狗啊这种,然后通过对高层的特征下采样,把上采样的特征图和下采样的特征图横向连接起来就能更好的检测小目标。

3.rpn中anchor:

——为什么是九种anchor?九种anchor都什么尺寸?

九种尺寸是实验结果得出的,同时也统计了GT中的尺寸,选择了这个结果。
长宽比有1比1,1比2,2比1,面积有322,642,1282

——为什么是这些尺寸?

物体大小不同,anchor尺寸就不同。

——Loss怎么设计?

(tx,ty,tw,th)分类用log loss,box坐标loss用smooth L1 loss

4.Rpn保留候选框的原则?怎么控制生成正负样本候选框的数量?

RPN能生成特征图尺寸×9数量的候选框,显然这些候选框不可能都参与训练,所以要通过与GT计算iou,大于阈值的视为正样本,小于阈值的视为负样本,还把阈值在0.1还是0.01?(这里忘了)设为hard
negative,一般是丢弃不训练的,但是如果想增加模型能力,可以用这些样本。然后正负样本按照1:3的比例送入模型训练。

其次,RPN过程中是有一个分类score的,通过分值排序,然后极大值抑制筛除冗余的候选框。极大值抑制?把某个类得分最高的框直接保留,然后计算其余的框和这个框的iou,大于设定的阈值就删除这些框,筛选完一轮后,如果还有剩余的框,说明可能是这个类的第二个目标,依然选最高得分的保留,然后计算其余的框和他的iou,筛除重复的框,大概就是重复这个过程。

5.Anchor框正类和负类怎么分?

与GT计算IOU,设置一个阈值,大于这个阈值的是正类,小于这个阈值的是负类

6.rpn能不能多分类

我觉得不能,首先是RPN网络中回归分支和分类分支的通道设计是固定好的,一个是36,一个是18,可以拆解成4×9和2×9,9就是anchor,4是回归信息,2是分类信息,这两个通道好像是不能改的吧?

7.介绍下Faster Rcnn,详细介绍下RPN的两个分支怎么训练的?

Faster-RCNN前面题说了我就不赘述了。
RPN的两个分支一个是分类,一个是回归,首先经过3×3的卷积,然后经过1×1的卷积进入回归/分类,回归的预测结果和原始数据的GT计算smoothL1 loss,分类的结果和原始数据的GT计算softmax loss。
在这里插入图片描述

8.正负样本不平衡怎么解决,如rpn网络中anchor proposal,可以讲讲maskrcnn中的也可以讲自己想到的想法

用负样本填充

9. rpn过程中正类和负类的筛选阈值是什么,阈值中间的anchor怎么处理的

对于每一个真实框,选取与其的IOU最大的候选框,标记为1;候选框与真实框IOU大于0.7,标记为1;候选框与真实框IOU小于0.3为0;其余舍去

10. faster RCNN的RPN的过程,正负样本的选取

跟前面的问题一致了,不赘述

11.说一下Faster R-CNN,要详细画出图

框架图:其实主要包括三个部分,一个是提取特征的backbone部分,比如VGG16,然后用的是IMAGENet上的预训练模型;一个是RPN部分,生成候选框;再就是把候选框送入分类网络进行分类和回归,其实就是Fast-RCNN的那一部分(两个FC)
在这里插入图片描述

12. 基于FPN的RPN是怎么训练的?

这个我没了解……应该跟RPN的训练过程是一致的,只是RPN是一个上采样的过程,FPN它做了一个下采样的过程。

13. RPN损失中的回归损失部分输入变量是怎么计算的?

smooth L1,smooth L1说的是光滑之后的L1,L1损失的缺点就是有折点,不光滑,导致不稳定。L1是把标签值和预测值的绝对值差的总和最小化(补充L2,把标签值和预测值的差的平方和的总和最小化)。回到smoothL1,其对离群点、异常值不敏感,可控制梯度的量级使训练时不容易跑飞。也是为什么选择SmoothL1的原因,如果预测值和真值差很大,可能就不收敛了,防止这种情况发生。
在这里插入图片描述

14.介绍rpn的结构?anchor选了什么尺寸?为什么用这几种尺寸/比例的anchor?rpn回归出包围框坐标后的操作?

结构:3×3的卷积,进入分支1×1卷积18通道,reshape,计算loss,再reshape回去;进入分支1×1卷积36通道,计算Bbox
loss。anchor尺寸,以及为什么参考前面的题。 RPN回归出后需要过滤Bbox:
在这里插入图片描述
然后经过ROI-Pooling送入fast-RCNN训练,经过两个FC得到分类和回归的predict

15. Faster R-CNN是如何解决正负样本不平衡的问题?

利用负样本填充正样本,而且训练前按照1:3的比例筛选正负样本

16.详细说下rpn的工作过程

不赘述

17.faster的rpn网络,fast比rcnn有何优点

不赘述

18. faster rcnn中RPN怎么做的。

不赘述

19.Faster-RCNN相比于RCNN和Fast-RCNN的改进,正负样本的boxs怎么处理

不赘述

20. 画具体的faster rcnn网络结构,然后让具体介绍rpn,fpn网络

不赘述

三、Fast-RCNN中的FPN

1. region proposal是怎么知道ROI是属于哪一类feature map的?

有分类分支,计算类别概率

2.max pooling怎么反向传播的?

不会……

3.小目标在fpn什么位置检测?

不会

4.有两个特征相同但是大小不同的物体要怎么检测

不会

5.fpn为什么要在多个尺度做bounding box回归,而不是只在P2这一个尺度上

我真的不太了解FPN……

6.Fatser rcnn不能检测小目标的原因?

用特征金字塔进行上采样,高层卷积包含语义信息但很少像素级信息,对小目标来说丢失像素信息就会丢失很多信息

7.Fatser rcnn中,如何处理背景候选框和含有目标的候选框不平衡问题?

正样本不足用负样本补充
在这里插入图片描述

8.讲一下FPN为什么能提升小目标的准确率

进行了一个下采样,有个横向连接,扩充了像素信息

四、Fast-RCNN中的pooling

1. faster-rcnn中roi-pooling的原理是什么?缺陷是什么?

什么是ROI-Pooling?假设要resize成7×7的尺寸,首先将FM分成7×7块,如果长宽除不尽的情况下,通常最后一行最后一列是包含余数的,块比较大,然后对每一块的像素值中做maxpooling,选每一块的最大值代表这个区域,最终得到一个7×7尺寸的特征图。但是这个方法会损失信息,大目标也许没什么,但是对于小目标来说损失的信息是特别多的。

2.Pooling层的作用?

pooling层主要用来对卷积的结果进行降维,其实也就相当于对图像进行下采样,pooling分两种,max,average
1.invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
2.保留主要特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型的泛化能力

3.pooling如何反向传播

pooling没有需要的参数,但是不代表不需要反向传播,否则反向传播过程遇到pooling就中断了。这个我还在学习,传送门

4.什么是CNN的pooling(池化)

同题2

5.卷积层和池化层有什么区别

卷积层是提取特征的,池化层是压缩特征图提取主要特征的。
卷积层改变通道数,池化层不改变通道数

6.bbox目标大小尺寸差异巨大怎么解决,损失函数上怎么设计

SmoothL1

7.说一下Faster R-CNN,要详细画出图,说一下ROI polling

同题1

8.Faster rcnn用的roi pooling 还是roi align

ROI pooling .roi align是对ROI pooling的一个改进,因为ROI pooling损失信息,roi align通过线性插值得到区域像素值。

五、Fast-RCNN中的loss

1. 分类和回归都用什么loss?

分类是softmax,回归是smoothL1

2.回归坐标是怎么定义的?

[x,y,w,h,]anchor的偏移量

3.为什么用smooth L1?

为了平滑,当差别极大的时候模型会不收敛,这样可以容忍异常值和离群点,保持一定的稳定性

4.Faster-RCNN的回归目标是如何定义的

同题2

5.Faster-RCNN用的什么loss?bounding box regression时用的什么Loss?

同题1

6.Fast RCNN中位置损失为何使用Smooth L1?

同题3

  • 2
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值