图森未来感知算法实习生面经汇总

网上搜了一下面经,都说是面试题最难的公司。。。

一、面经一

1.模型加速的方法:答:network pruning和dw conv,简单介绍了一下shufflenet和mobilenet的思路
2.recall和Fa的理解,重新改变softmax在0附近和1附近的值,对评价标准有没有影响:答:没有,顺序不变就没影响
3.项目中如果改为多标签分类,label怎么设置。答:设置soft label
项目中的mask图怎么加入的,为什么这么做
4.关键点检测,heatmap中对于极大值和次大值,如何操作:答:偏移1/4
如果直接回归坐标,应该怎么做,装作想了半天,其实不会,给我介绍了soft argmax。并且介绍了HRnet,让我试一下
5.focalloss的本质,为什么这么做,为什么目标检测中提出,对分类真的有用吗,这个类似于开放性问题,交流了一下对于focalloss的理解,因为目标检测中一是类别不均衡,二是负例易分,所以focalloss有用,但是对于分类值得商讨。
对于类别不均衡还有那些常见的操作:答:dataaug,ohem
6.CascadeRCNN的原理,本质解决了什么问题。
7.Reploss的思想
8.yolov2中聚类是怎么做的。
9.介绍一下人脸识别中max-in-out的策略,为什么这么做,本质是什么。
10.介绍一下GN的思想。和BN比的优势。BN归一化的是哪几维。BN在训练时怎么操作的。BN在inference的时候用到的mean和var怎么来的:类似于滑动平均,这个问题想了好久才想起来,论文太久时间没回顾了。BN在inference的时候怎么加速:权重合并。BN跨卡训练怎么保证相同的mean和var:这个不会,问了面试官是SYNC,哎呀,前两天在公司还看到过这个SYNC,还想查一下是干嘛的,没来得及查就被问到了,唉唉唉。
11.网络参数量怎么计算

二、面经二

1.讲项目(包括设计的论文)
有DaSiamRPN,SiamRPN++相比于SiamRPN的改进,如何解决了增加深度的问题
2.如何计算感受野
3.加速BN计算:
将BN和Conv结合
4.你理解多目标跟踪吗
5.BN的前向传播

三、 面经三

(一面)(算法面,主要简历,80分钟)

问了好多都是论文相关的,可能参考价值不大。

1、第一篇论文

a. 为什么第一阶段检测出来的box不利用?

首先box的数量大小是不固定的,不好直接融合;其次,类别概率图可以一次把整张图的关于小物体的信息都表示出来

b . 为什么背景不聚类

背景比较复杂,不容易聚类。为了防止有些背景没有被拉开,使用了排序距离,这样一种相对距离。

2、第二篇论文

提到2个2D数据concat,他们的位置是不一样的,这样直接concat有没有问题;问最后那个模块有没有和se比较

3、bn训练,测试区别,bn如何在inference是加速(这里面试官说是可以融合到卷积里,因为test时,bn是一个线性模型,卷积也是线性的,所有可以融合,具体怎么做,不知道)

4、如何解决前景背景数量不均衡(OHEM,focal loss,前景过采样,2stage模型)

5、一个类似多标签训练的问题,他的loss是怎么算(这里,我主要说了下标签里one-hot的设置,在多个类别的one-hot里不止一个地方可以设置为1)

(二面)(工程面,90分钟)

1、多路归并

2、average pooling操作,输入mn输出mn,kernel大小k*k。

我想到的最优解法:遍历一个kK大小时,记录下当前的sum,kernel滑动时,把kernel最左侧的一列元素减掉,加入新加入的右边的一列。时间复杂度m(kk + (n-1)k),大约为mnk吧,听面试官口气不像是最优解,我觉的重点是实现出来自己的想法。

3、线程,进程区别,python的线程和进程

4、ssh相关,什么如果网络断了,在服务器上跑的程序会怎么样,tmux原理

5、还有一些基础知识,想不起来了

(三面)(终面巨佬王乃岩博士, 100分钟)

根据简历里的内容,向外延伸,问到不会为止,我心里是崩溃的,可能是我太菜了,还好乃岩博士很耐心。

1、简历里用了一个fpn网络做检测,大佬是想问我我的数据有什么样的特点,针对这些特点可以做哪些针对性的方案。这里问了好久,很惭愧,一开始都没理解大佬的意思

2、cascade rcnn论文里一些实验的细节,为什么这样做实验效果不好,你自己的看法是什么;介绍下DetNet。这里我是简历里写了复现了这两篇论文,所以被问到了

3、为什么你的角点回归不使用heatmap,而使用smooth l1坐标回归,为什么通常大家使用heatmap做关键点

4、ohem,到底比focal loss差再哪里了

5、non-local的时间复杂度和你自己提出的这个模块的时间复杂的,介绍下GCNet

6、求了几个感受野

7、还有一些问题,想不起来了

四、面经四

(一面)

(1) 自我介绍:主要介绍研究生阶段的研究方向和主要工作

(2) CPVR2019 workshop的工作的主要工作和贡献(简历内容,全部都问到核心和点子上了)

如何解决少样本训练的难题
为什么使用半监督重采样方法就可以平衡样本,原理是什么,会产生很多伪标签,怎么解决
为什么选用HRNET,为什么使用top-down的方法,有没有使用检测的方法
(3) 对检测器熟不熟

(4) 平衡样本的其他方法

添加样本
resampling,reweight
OHKM
(5) TOP高校创新科技大赛的主要工作(简历内容)
两种解决标注差异如何解决标签差异
mobilenet v1和mobilenet v2
suffinet 网络(不是很熟,没怎么回答)
(6) reversed label怎么实现的,为什么这样有效

(7) 有没有其他方法来改进姿态估计

结构化约束
focal loss
难样本挖掘
(8) focal loss用在其他任务的具体实现

(9) 知识整理在其他任务上的应用,为什么有效

(二面):coding

(1) 可能因为第一个题花的时间久,面试官只给了我一道题

(2) 后面问了一些常用工程工具和语言的使用

(3) 主要还是考察码工和工程能力

(4) 这一轮凉凉还是第一个题花的时间有点久,工程问题还是很简单

求解x**5+x=1
(1) 牛顿法:简单快速

(2) 二值法:实现简单一点,复杂度更好(自己采用的)

def get_value(x):
    return x**5 + x - 1

def Calculate(start=0, end = 1, stand=1e-6):

    middle = (start + end) / 2.0

    v_start = get_value(start)
    v_end = get_value(end)
    v_middle = get_value(middle)

    if end - start < stand :
      return middle

    else:
      if v_middle < 0:
        start = middle
      else:
        end = middle

      return Calculate(start, end, stand)

  print("results is {}".format(Calculate(0, 1, 1e-7)))

工程问题
(1) 动态链接库和静态链接库
(2) 代码管理工具熟不熟:git常用命令

(3) git的忽略文件 .gitignore

(4) 多版本控制:virtual和docker

(5) ssh,tmux

(6) 大任务和耗时任务的处理:多线程(如多尺度测试)和分布式

(7) python的哈希容器

(8) list增删改查时间复杂度

(9) 代码仓库用得多不多:gitlab和github日常用

五、面经五

介绍一下项目主要干了什么,解决了什么问题
介绍一下项目codebase的结构
知识蒸馏用的什么方法
OFD主要是怎么实现的?
用的什么类型的蒸馏 讲一下如何进行蒸馏的
OFD用的什么损失函数 部分均方误差损失函数
介绍一下Retinanet,分类和回归的损失函数是什么,介绍一下focal loss

六、面经六

技术面1、2:

介绍科研经历
针对上述经历进行提问。
远程笔试:

求二叉树上的逆序对数量
c++和Python的区别
如何用Python编译可执行文件

七、面经七

  • 自我介绍

  • 介绍实习项目

  • 是简单的L1loss吗

  • Homography矩阵有几个自由度,为什么

    image.png

单应矩阵表达的是射影变换 其描述的是二维图像点之间的关系 二维图像用齐次坐标来表达 单应矩阵有九个变量 考虑到齐次坐标 所以这九个变量存在一个尺度问题 所以是八个自由度 说白一点 你把这个矩阵乘以一个scale 表达的是一个单应 因为本身其次坐标乘以任意scale. 是表达一个点
训练中要对Homography矩阵数值进行缩放,如何缩放

图像级目标用L1-loss的前提是什么

“亮度恒定”: 图像中目标的像素强度在连续帧之间不会发生变化。

能有其他loss直接或间接的监督吗
车道线检测有什么方法能利用上车道线数据本身的特殊性(长条形)
SCNN

CRF后处理?;DFN中的Smooth Network


image.png
image.png

如何过滤误检

如何保证过滤有效

有没有在训练中考虑到类内一致性,或者怎么克服intra-class inconsistency:类内不一致

模型如何优化加速的

DW卷积在哪种情况下比较慢
1、cudnn支持之前(cudnn 7 才开始支持 depthwise convolution),大部分gpu下的实现都是for循环遍历所有group,所以group很多时极慢 ,例如caffe

文章的Motivation 就是为了解决depthwise 比较慢的问题,原因在文中进行了分析。首先,depthwise 的卷积核复用率比普通卷积要小很多,内存中的置换率比普通卷积要高;同时,depthwise 是per channel 的,每个卷积的操作矩阵都很小,这么小的矩阵不容易得到充分并行,这两点是根本原因。

为什么要拟合直线

弯道如何处理

ransac原理

BN训练测试区别

八、面经八

1.问了RRC,说这么老的论文,你怎么还看?问我是怎么实现的,为什么效果比较好?
我当时忘了这个是什么时候的论文了。他说,17年4月份的,我吓了一跳,这都能记住,吓得我直接切屏去查了查论文的发布时间。我说类似于FPN,但是和FPN不同的是后续的block会对之前block做出贡献,每个block由前面的block形成left,最后进行concat,言辞及其的模糊,不知道怎么形容啊。
2.问了一下CBNet,COCO上提升精度是与什么比较的?
巴拉巴拉
3.为什么anchor-free的方法能够得以实现,主要是因为什么?
我回答主要是heatmap,然后高斯核分布,可以进行key-point检测,对密集型区域的话,主要是缩小的gd的范围,他说我没达到点子上。。。。(这时候头条,百度相继打电话,我没听清他和我解释的内容。。。)
4.ACNet是怎么实现的?
巴拉巴拉
5.SSD进行了什么修改?
巴拉巴拉
6.one-stage与two-stage的区别?主要的划分依据是什么?
类似于RCNN-fastercnn都是two-stage,yolo,ssd都是one-stage。这个问了差不多20多分钟,他提了三种问题,问我是属于哪一种,我后来回答,有RPN得提取ROI并进行Refine都算two-stage,他说这个是个开放性问题。。。。
7.batchnormalization训练和测试有什么区别?
训练是一个batch计算,测试是移动加权平均。
8…batchnormalization在部署的时候有什么技巧,加速?
回答,不知道,我没有用过?(那你让我咋说呢?),后来他说.batchnormalization是线性的,卷积也是现行的,两者可以合二为一进行叠加,可以加速。。。(听得云里雾里)
9.前景背景数量级相差过大用的是什么方法?传统的二阶段是怎么处理的?
就会一个focal-loss,简单介绍了下。二阶段是会先产生ROI区域,这时候背景就少了很多。他说没有回答到点子上。是根据比例,1:3,背景是根据比例获取的。

九、面经九

目标检测
做一下总结(one stage以及two stage)。
说一下RCNN流派以及yolo、SSD流派。
分析一下他们的区别与联系;为什么ssd、yolo等对小物体的检测没有two stage的方法好。
语义分割
主要的两种思路与做法(空洞卷积,skip-connection等)。
讲解一下deeplab及其V2、V3、V3plus,说一下和UNet等这些的区别。
计算空洞卷积的感受野。
实例分割
说一下maskRCNN的主要思路和流程
为什么在加入roialign之后,对于原来的fasterRCNN结构能提升3个点左右,而对于基于FPN的fasterRCNN只能提升2个点。
多目标跟踪
说一下具体的思路(基于检测的跟踪),怎样处理误检、漏检、误匹配的这些问题

你可能感兴趣的:(图森未来感知算法实习生面经汇总)