Skip to content

Commit 58d06fa

Browse files
committed
添加【计算机视觉】面试题
1 parent f13195f commit 58d06fa

File tree

1 file changed

+38
-27
lines changed

1 file changed

+38
-27
lines changed

docs/计算机视觉.md

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,6 +1152,32 @@ NMS_demo.py:<https://github.com/humengdoudou/object_detection_mAP/blob/master/
11521152

11531153
#### Faster R-CNN 为什么用smooth l1 loss,和l2有什么区别?
11541154

1155+
- [ ] TODO
1156+
1157+
### Faster R-CNN的RPN网络
1158+
1159+
RPN结构说明:
1160+
1161+
1) 从基础网络提取的第五卷积层特征进入RPN后分为两个分支,其中一个分支进行针对feature map(上图conv-5-3共有512个feature-map)的每一个位置预测共(9*4=36)个参数,其中9代表的是每一个位置预设的9种形状的anchor-box,4对应的是每一个anchor-box的预测值(该预测值表示的是预设anchor-box到ground-truth-box之间的变换参数),上图中指向rpn-bbox-pred层的箭头上面的数字36即是代表了上述的36个参数,所以rpn-bbox-pred层的feature-map数量是36,而每一张feature-map的形状(大小)实际上跟conv5-3一模一样的;
1162+
1163+
2) 另一分支预测该anchor-box所框定的区域属于前景和背景的概率(网上很对博客说的是,指代该点属于前景背景的概率,那样是不对的,不然怎么会有18个feature-map输出呢?否则2个就足够了),前景背景的真值给定是根据当前像素(anchor-box中心)是否在ground-truth-box内;
1164+
1165+
3) 上图RPN-data(python)运算框内所进行的操作是读取图像信息(原始宽高),groun-truth boxes的信息(bounding-box的位置,形状,类别)等,作好相应的转换,输入到下面的层当中。
1166+
1167+
4) 要注意的是RPN内部有两个loss层,一个是BBox的loss,该loss通过减小ground-truth-box与预测的anchor-box之间的差异来进行参数学习,从而使RPN网络中的权重能够学习到预测box的能力。实现细节是每一个位置的anchor-box与ground-truth里面的box进行比较,选择IOU最大的一个作为该anchor-box的真值,若没有,则将之class设为背景(概率值0,否则1),这样背景的anchor-box的损失函数中每个box乘以其class的概率后就不会对bbox的损失函数造成影响。另一个loss是class-loss,该处的loss是指代的前景背景并不是实际的框中物体类别,它的存在可以使得在最后生成roi时能快速过滤掉预测值是背景的box。也可实现bbox的预测函数不受影响,使得anchor-box能(专注于)正确的学习前景框的预测,正如前所述。所以,综合来讲,整个RPN的作用就是替代了以前的selective-search方法,因为网络内的运算都是可GPU加速的,所以一下子提升了ROI生成的速度。可以将RPN理解为一个预测前景背景,并将前景框定的一个网络,并进行单独的训练,实际上论文里面就有一个分阶段训练的训练策略,实际上就是这个原因。
1168+
1169+
5) 最后经过非极大值抑制,RPN层产生的输出是一系列的ROI-data,它通过ROI的相对映射关系,将conv5-3中的特征已经存入ROI-data中,以供后面的分类网使用。
1170+
1171+
另外两个loss层的说明:
1172+
也许你注意到了,最后还有两个loss层,这里的class-loss指代的不再是前景背景loss,而是真正的类别loss了,这个应该就很好理解了。而bbox-loss则是因为rpn提取的只是前景背景的预测,往往很粗糙,这里其实是通过ROI-pooling后加上两层全连接实现更精细的box修正(这里其实是我猜的)。
1173+
ROI-Pooing的作用是为了将不同大小的Roi映射(重采样)成统一的大小输入到全连接层去。
1174+
1175+
以上。
1176+
1177+
**参考资料**
1178+
1179+
- [Faster-Rcnn中RPN(Region Proposal Network)的理解](https://blog.csdn.net/mllearnertj/article/details/53709766)
1180+
11551181
## SSD 算法
11561182

11571183
- [ ] TODO
@@ -1243,35 +1269,8 @@ Focal Loss 从优化函数的角度上来解决这个问题,实验结果非常
12431269
- [如何评价Kaiming的Focal Loss for Dense Object Detection?](https://www.zhihu.com/question/63581984)
12441270
- [首发 | 何恺明团队提出 Focal Loss,目标检测精度高达39.1AP,打破现有记录](https://zhuanlan.zhihu.com/p/28442066)
12451271

1246-
12471272
## FPN 特征金字塔网络
12481273

1249-
- [ ] TODO
1250-
1251-
## Faster R-CNN的RPN网络
1252-
1253-
RPN结构说明:
1254-
1255-
1) 从基础网络提取的第五卷积层特征进入RPN后分为两个分支,其中一个分支进行针对feature map(上图conv-5-3共有512个feature-map)的每一个位置预测共(9*4=36)个参数,其中9代表的是每一个位置预设的9种形状的anchor-box,4对应的是每一个anchor-box的预测值(该预测值表示的是预设anchor-box到ground-truth-box之间的变换参数),上图中指向rpn-bbox-pred层的箭头上面的数字36即是代表了上述的36个参数,所以rpn-bbox-pred层的feature-map数量是36,而每一张feature-map的形状(大小)实际上跟conv5-3一模一样的;
1256-
1257-
2) 另一分支预测该anchor-box所框定的区域属于前景和背景的概率(网上很对博客说的是,指代该点属于前景背景的概率,那样是不对的,不然怎么会有18个feature-map输出呢?否则2个就足够了),前景背景的真值给定是根据当前像素(anchor-box中心)是否在ground-truth-box内;
1258-
1259-
3) 上图RPN-data(python)运算框内所进行的操作是读取图像信息(原始宽高),groun-truth boxes的信息(bounding-box的位置,形状,类别)等,作好相应的转换,输入到下面的层当中。
1260-
1261-
4) 要注意的是RPN内部有两个loss层,一个是BBox的loss,该loss通过减小ground-truth-box与预测的anchor-box之间的差异来进行参数学习,从而使RPN网络中的权重能够学习到预测box的能力。实现细节是每一个位置的anchor-box与ground-truth里面的box进行比较,选择IOU最大的一个作为该anchor-box的真值,若没有,则将之class设为背景(概率值0,否则1),这样背景的anchor-box的损失函数中每个box乘以其class的概率后就不会对bbox的损失函数造成影响。另一个loss是class-loss,该处的loss是指代的前景背景并不是实际的框中物体类别,它的存在可以使得在最后生成roi时能快速过滤掉预测值是背景的box。也可实现bbox的预测函数不受影响,使得anchor-box能(专注于)正确的学习前景框的预测,正如前所述。所以,综合来讲,整个RPN的作用就是替代了以前的selective-search方法,因为网络内的运算都是可GPU加速的,所以一下子提升了ROI生成的速度。可以将RPN理解为一个预测前景背景,并将前景框定的一个网络,并进行单独的训练,实际上论文里面就有一个分阶段训练的训练策略,实际上就是这个原因。
1262-
1263-
5) 最后经过非极大值抑制,RPN层产生的输出是一系列的ROI-data,它通过ROI的相对映射关系,将conv5-3中的特征已经存入ROI-data中,以供后面的分类网使用。
1264-
1265-
另外两个loss层的说明:
1266-
也许你注意到了,最后还有两个loss层,这里的class-loss指代的不再是前景背景loss,而是真正的类别loss了,这个应该就很好理解了。而bbox-loss则是因为rpn提取的只是前景背景的预测,往往很粗糙,这里其实是通过ROI-pooling后加上两层全连接实现更精细的box修正(这里其实是我猜的)。
1267-
ROI-Pooing的作用是为了将不同大小的Roi映射(重采样)成统一的大小输入到全连接层去。
1268-
1269-
以上。
1270-
1271-
**参考资料**
1272-
1273-
- [Faster-Rcnn中RPN(Region Proposal Network)的理解](https://blog.csdn.net/mllearnertj/article/details/53709766)
1274-
12751274
## ROI Pooling、ROI Align和ROI Warping对比
12761275

12771276
- [ ] TODO
@@ -1280,6 +1279,10 @@ ROI-Pooing的作用是为了将不同大小的Roi映射(重采样)成统一
12801279

12811280
- [Mask-RCNN中的ROIAlign, ROIPooling及ROIWarp对比](https://blog.csdn.net/lanyuxuan100/article/details/71124596)
12821281

1282+
# Anchor-free目标检测系列
1283+
1284+
# DETR系列
1285+
12831286
## DeepLab系列(V1-V3+)
12841287

12851288
- [ ] TODO
@@ -1312,6 +1315,14 @@ CornerNet介绍
13121315
- [transformer面试题的简单回答](https://zhuanlan.zhihu.com/p/363466672)
13131316
- [史上最全Transformer面试题系列(一):灵魂20问帮你彻底搞定Transformer-干货!](https://zhuanlan.zhihu.com/p/148656446)
13141317

1318+
# 视觉Transformer
1319+
1320+
## ViT
1321+
1322+
## Swin
1323+
1324+
## PVT
1325+
13151326
## TODO
13161327

13171328
- [ ] 目标检测方向

0 commit comments

Comments
 (0)