实习
平安科技 (拿到 offer)
sishijing204@pingan.com.cn
3.14 发送邮件
3.23 一面
面试官是 nlp 方向的,所以确实对图像了解的并不多,整个过程几乎都是让我在介绍我的工作
- 介绍一下这篇 CVPR 工作,细节一点
- 介绍一下和高通的项目
- CLIP 是一个什么样的东西?
- 这个 Language 是怎么和 Image 产生关联的呢?
- 你在 CVPR 这篇论文里做了什么贡献,idea 是谁的
- 代码能力怎样?简单讲讲 CVPR 这篇论文的代码框架,输入输出
整体来讲没问太多东西,但是他对这篇论文挺感兴趣的,总共聊了 40 分钟,结束之后当场就问我啥时入职,非常急迫的感觉,有点不太敢去 hhh,而且离学校也比较远
阿里云
3.15 内推
3.18 一面
主要是根据简历上面写的东西进行询问,要对自己写进简历的细节都了解清楚
- 自我介绍
- 和高通的项目是怎么验收的,部署工作是你做的吗?
- 高通项目有什么具体的性能指标要求吗?为什么选择用 TTFNet?
- CenterNet 为什么会对大目标检测效果不好呢?和最近的DETR相比他们分别有什么优缺点?
- 竞赛算法拿奖,你觉得和别人的代码相比有什么亮点?哪里是最创新的?
- 讲一讲CVPR论文,为什么利用CLIP可以做到消除背景,CLIP不是用来做分类的吗?
- 论文中的initial CAM是怎么生成的?
面试官人很好,整个过程比较愉快,但是竞赛这一块感觉他没怎么太听懂,确实不太好描述,视频面试的话可以准备一些图片会好一点。
3.22 二面
到这里就挖论文以及项目了
- 自我介绍
- 讲一下你的论文
- 介绍一下 CLIP
- 送到 CLIP 之前的 mask 是不是通过 CAM 那种方式也能做到呢?
- 详细介绍一下三个 loss,以及各自的涨点情况,比 sota 高了多少?
- 介绍一下高通项目
- 如何解决多尺度问题?回答:最直接的就是 FPN 了
- 那为啥不尝试 FPN 呢?回答:做过,效果不好,TTFNet 大物体的高斯核会重叠
- 多尺度融合呢?尝试过没?回答:xxx,然后引出了我们的 transformer attention 版本,把握主动权
- 10ms 的速度是在哪里测试的?最终端侧部署工作是谁做的?
做了两个题目,求 最大子数组和,leetcode 原题,一个多星期之前我还做过这题,但是第一次在线答题,很紧张,没想出用动归的方法,做完之后又来了一道求最大子数组的乘积。
过了一天就跟我说二面过了,但是主管面想等我笔试做完再进行。
3.25 笔试
大概率无了,编程题第一题只拿了 83%,另外两道 0 分。(确实 G 了,问了面试官,只拿了 30 多分)
题目:
牛牛今年上幼儿园了,老师叫他学习减法。老师给了他五个数字,他每次操作可以选择其中的四个数字减一,减一之后的数字不能小于零——因为幼儿园的牛牛还没有接触过负数。
现在牛牛想知道,自己最多可以进行多少次这样的操作?
输入:
2
5 4 3 2 1
1 1 1 10000 1
输出
3
1
// 暴力,每次都让最大的四个数减一
vector<int> q(5);
int t;
int main() {
cin >> t;
while (t--) {
for (int j = 0; j < 5; ++j)
cin >> q[j];
sort(q.begin(), q.end());
int res = 0;
while (q[2] > 0 && q[1] > 0) {
q[4] -= 1;
q[3] -= 1;
q[2] -= 1;
q[1] -= 1;
res += 1;
sort(q.begin(), q.end());
}
cout << res << endl;
}
return 0;
}
上海人工智能实验室 Open MMLab
3.15 内推
3.23 一面
本来投的是 razor 方向的算法研究员,后面给我分配到 deploy 部门去面试了,问了一下说是算法没过筛,然后就面吧,虽然部署方向做的不多,但是还是有些兴趣的。
- 介绍高通的项目,主要的 baseline 是什么,有什么提升?
- 做过哪些部署方面的活,有遇到过什么困难?转 onnx 有什么困难?
- 介绍下用 Libtorch 和 TorchMobile 部署的项目
- 主要用的是 C++ 还是 python?回答:训练网络用的是 python,本科用过一段时间 C++,然后引出了比赛
- 介绍一下比赛主要用到的知识点,都是用 C++ 调用 OpenCV 模块的 API 是吗?
- TensorRT 有用过吗?回答:没有用过,但是了解一些
- 编程题:给你一个整数数组 nums,里面的数字互不相同,返回该数组所有可能的子集(幂集),可以以任意顺序返回,但是不能包含重复的子集。(用回溯,leetcode 78 题)
3.28 二面
这次是 Open MMLab 社区 MMDeploy 方向的高级研究员吕晗小姐姐来面我,主要是考察我在高通以及抠图项目中的一些模型部署情况。
- 高通项目具体有哪些改进的点,所说的 work 的方法中,哪些是你做的(她以为我们是一个团队去做的,没想到只有我一个人)
- 部署的时候有遇到什么困难?(OP 不支持)
- 介绍一下 ONNX,你知道神经网络框架训出来的模型转 ONNX 格式底层是怎么实现的吗?(这个我真不了解,她说这个在模型部署领域是个很重要的知识点,我要去补一下 TODO)
- 除了提供 ONNX 格式的 model 给高通,自己有实际在端侧部署过网络吗?回答:在投论文比较速度的时候,将我们的模型和 yolo ssd 之类的全部都部署到了安卓端,用的是 Torch Mobile,然后介绍了一些是怎么部署的(面试官没有太了解 Torch Mobile,这个是能够比较快速部署的)
- 为什么要转成 TorchScript 格式呢?回答:部署在 IOS 应用上(后面面试官解释了 IOS 芯片上确实用 TorchScript,虽然我也不太清楚)
- 转 TorchScript 有哪些方式呢?回答:torch.jit.trace 和 torch.jit.script,知道这两种有什么区别吗?回答:不是很清楚,转模型的时候其中一种会失败,就换另一种。
- 知道模型部署的流程吗?有意愿加入哪一方面呢?我浅谈了一下,然后面试官给我介绍的很详细 mmdeploy 部门做的几个方向,模型转化(要能够支持各种芯片平台),C/C++ 推理框架接口开发,社区日常业务。然后我说我对 C/C++ 接口开发挺感兴趣,她就考了我一些基础知识。
- 深拷贝和浅拷贝的区别
- python 中有哪些内置的数据结构是 sequence (可以用索引取值)?回答:str,list,漏了 tuple 和 array
- 知道栈和队列的区别吗?用 C++ 实现一个 stack,包含 empty, push, pop 操作。然后我用了一个 vector 存数据,用一个 index 指针存放栈顶。然后面试官又让我实现索引取值 (stack[0]),然后我就说操作符重载,但是太久没写了忘了怎么写了,她表示能想到就可以了 hhh (参考 Leetcode 155 题)
- 然后面试官觉得我 C++ 有点手生,需要多练练,看我 python 用的更多就想让我去做模型转换一块,问我的意愿,然后也和我介绍了很多关于这个领域的知识,学到了不少东西。
- 反问阶段问了 mmlab 这种开源性质的工作每天都在干啥,然后就发现和公司做项目不一样,没有一个明确的 deadline,给个每月计划,然后按时交差就行了。
- 最终面试官建议我在工作时从下面这些方向循序渐进
- 从模型转化入手
- 掌握推理流程(推理引擎的特性)
- 自定义算子入手
- 做个端到端的部署过程
原本以为已经稳了,没想到反手进了人才库,想不通为啥,觉得回答的都还行。。
地平线 (拿到 offer)
3.25 一面
地平线的面试官是目前遇到的水平最高的,上来只问了我高通的项目,并且延伸得很广,对底层的考察也非常多。
-
在和高通合作的过程中,对轻量化有没有什么收获,一般会用什么进行模型轻量化?
-
如何加速 Faster RCNN?回答:通用的话,用轻量级的 backbone 以及将 FPN 和 Head 中的卷积换成通道可分离卷积,并且可以 cls 和 reg 两个分支共享一个卷积,然后提了一下 CenterNet v2 用了单阶段的检测器提取高质量的 Proposal,所以可以将 proposal 的数量降低,这样的话运行速度也会加快,因为少了很多低质量的 proposal 送去回归和分类
-
你们对 person 类的检测性能低,是由于什么因素呢?回答:感受野不够,并且人物高斯核重叠
-
数据集的大小是怎么样的?有看过里面三个类 (person,hand,face)的数量吗?以及数据集的场景有没有了解过?
-
如果还是单尺度做检测,如何提升 person 的检测效果?回答:提高感受野,然后说了 Dilated Encoder 以及我们尝试过的 Transformer Encoder 版本
-
物体中心重叠有什么解决办法吗?回答:暂时没什么好的解决方法,然后延伸出 CenterNet 也没有解决这个事,但是 FCOS 解决了这个事(强行让网络回归比较小的物体),然后又说这样不够优雅,Auto Assign 让网络自己去学习回归哪一个物体
-
假设 FCOS 中,两个物体中心重叠在一起,按照策略,这部分区域只回归小的物体,那么大的物体就被放弃了吗?回答:如果尺度相差不大的话可能被分到同一层进行回归,那么大的物体可能被放弃了,如果相差比较大的话应该就是在不同层进行回归,所以不会有影响。
-
如果让你在三类检测中再加一类人头检测,你有哪些做法,会存在哪些问题?(开放性)回答:
- 额外加一个分支检测人脸,问题就是可能会跟人脸撞了,互相影响训练
- 得到人脸之后往外扩充一个范围,将 ROI 区域拿去训练好的人头检测网络检测人头的坐标,问题就是人头检测器不能一起联合训练。(我现在觉得这个就是扯淡,应该不能这样干)
-
交付模型给高通的时候,部署方面有哪些问题呢?回答:op 不支持,需要手动修改或者利用 onnx simplifier 转化 op
-
CenterNet 的高斯核的 sigma 是怎么确定?回答:(我记得的话是跟 CornerNet 一样的生成套路),也就是重叠区域的 box 面积要和 gt box IoU 大于 0.7,不知道对不对,有点忘了(对的,就是中心在高斯核内的矩形与 gt 的 IOU 要大于 0.7)
-
你了解 mAP 指标的计算过程吗?这个凭借着记忆说了一遍,但是面试官说讲错了很多,回去再复习一下吧
-
编程题:用 python 手写卷积
X: (N_x, C, H, W) K: (N_k, C, h, w)
3.28 二面
地平线公司主要都是在做业务,所以会很看重项目,这个面试官也基本在问我的项目情况
- 高通大多数问的和之前的一些面试官差不多,记录几个不同的问题
- 高通用到的两个数据集是怎么样的?回答:都是从公开数据集中取出来的,然后说了一下数据
- 没有用 FPN 自动选择哪一层进行回归吗?回答:试过,但是效果不好,然后说明了高斯核重叠的问题
- 说一下联合数据集是怎么训练的,然后我就说屏蔽不存在的类别的 loss,面试官说他们那边也有很多这种类似的数据集,只有某一些类别,然后会打上 ignore 标签,并且表示我这种做法也没啥问题
- 你们 KD 具体是怎么做的,teacher 和 student 的 AP 相差多少,KD 之后有多少提升呢?回答:相差 5 个百分点,KD 之后提升了 2.8 左右
- MODNet 你们对数据怎么进行清洗的?xxx,然后面试官问,既然 COCO HumanParts 是 COCO 中有人的图片,那么直接用 COCO 和 COCO HumanParts 取一个差值不久得到了 COCO 中没有人的图片了吗?回答:还是会有一些会存在人(比如镜子里的人,比较小的人,很像人的建筑)。
- 讲一下 MODNet 的一个流程。(边缘预测,语义预测,alpha 预测,三个 loss)
- MODNet 最终的指标是在哪个数据集进行测试的?回答:业务上的数据集
- 你们的抠图项目如果图片中出现了多个人会一起抠出来吗?回答:会的,不需要进行特殊调优,本身训练集中就包含了多人的 case(不过这种 case 不是很多,但是我觉得网络有能力将所有人都抠出来,后来面试官问了一句有没有在一张背景上贴多个前景,我猜想他们是这么干的)
- 编程题:反转链表,直接 A
然后就是一些聊天,问业务,面试官就给我很系统地介绍了一下地平线做的智能驾驶相关业务,一个是车内感知,一个是车外感知,还有一个忘了。说我做的高通项目和车内感知很像,然后抠图项目他们也有在做,MODNet 他们也在用,而且改了很多结构,进行了很多减枝操作。最后让面试官给了我一些建议,他让我可以去了解一下智能驾驶大公司(例如 Tesla)公布的一些解决方案以及 case,总之 28 号面的两场都挺愉快的。
腾讯微保 (已放弃)
3.25 一面
本来是不想面的,跟 HR 说了但是没回复我,又已经答应面试了,就上了。整体体验十分差,HR 电话打不通,微信是假的,发信息也不回,浪费我一个小时.
主要就是问项目,大多数时间是我自己在讲,高通和 matting 都问了,估计看不懂论文就没问,然后做了两题,先让我讲思路,然后问我多久能做出来,然后他就走了,到时间过来,全程没有让我开摄像头,感觉面试官十分敷衍。
过了一个星期 hr 发信息给我说一面过了,约二面。。。不想面了
编程题1:
1.实现函数,输入数字(小于一亿的int),输出中文表示
# 输入:50321
# 输出:五万零三百二十一
编程题2:
(有序数组,时间复杂度小于 logn,那么就是二分法)
2.有序数组中的单一元素
# # 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。(要求小于logn时间复杂度)
# # 示例1:
# # 输入:
# [1,1,2,3,3,4,4,8,8]
# # 输出:
# 2
# # 示例2:
# # 输入:
# [3,3,7,7,10,11,11]
# # 输出:
# 10
群核科技 (酷家乐) (拿到 offer)
3.29 一面
原本以为是个装修公司,没想到图形学和计算机视觉都搞,这个公司主要是做产品的,类似 AutoCAD 这种设计工具,听了面试官的介绍之后觉得还挺不错的,面试官的水平也挺牛的,出乎了我的意料。
- 介绍一下高通项目,面试官说从下面一些角度来介绍,我觉得他的思路很清晰,赞
- 动机,想解决什么问题
- 数据集
- 用的方法
- 最终的效果
- 用 MobileNet 是为了轻量化吗,最终模型体积有多大?
- CenterNet 变体工作有没有了解,然后我说怎么变都还是那样,引出了 CenterNet v2 是个加强版的 RPN
- 列举一些 AnchorFree 检测器,FCOS,ATSS,AutoAssign,reppoint(fsaf,FoveaBox)
- KD 的概念,要解决什么问题,让大网络进行剪枝和蒸馏有什么异同之处?
- Swin transformer 看了没有,他和 VIT 那些有什么不同之处?面试官想要的回答:在 window 里面做 self-attention,而不是全图做
- 讲一下弱监督,半监督,全监督,无监督,元学习的概念
- 编程题:字符串中不含重复字符的最长子串的长度 “abcabcbb” -> 3 (直接滑动窗口做)
4.1 二面
这次是未来的 mentor 来面我,水平挺牛的,问的问题都很到点上。面试完后了解到这家公司是独角兽,顿时刮目相看了
- 介绍一下 matting 这篇论文的做法
- 介绍一下 matting 对数据清洗的流程
- matting 的 groundtruch 是 0 或 1 的二值图吗?(这里是我介绍的时候口误,gt 是 0-1 的连续值)
- 这篇 CVPR 论文是二作,你在里面充当什么角色
- 讲一讲这篇 CVPR 论文
- 接下去就是考一些知识点的概念
- 线代中特征值和特征向量是什么意思
- 讲讲无监督的概念,举例一种无监督算法并介绍。回答:k-means
- PCA 的目的是什么,是怎么做的
- Adam 和 SGD 的区别,SGD 怎么改进使它不陷入局部最小值
- 代码题:手写 NMS
4.2 三面
三面 leader 面,群核科技 AI 部门负责人来面我,气场很足,问的问题十分戳到点子,让我感觉这家公司的水平真的挺不错的,很有好感。
- 介绍一下高通这个项目,你觉得最大的创新点是什么(我说了联合数据集训练策略),他开始有点没听明白,后面我说最后是 num_class 个二分类,屏蔽一些二分类的 loss,他就懂了,提出了自己的一些见解,觉得我这个有点像 multitask learning,但是我感觉不太一样吧
- 觉得你有什么优点,有什么短板(这个问题问的我很慌,我就说容易被打扰,他就继续问下去。。。),下次直接说:1. 涉猎太广泛,比较喜欢了解各种计算机知识导致有时候对自己专业不是特别精通。 2. 任务没有正反馈时,比较容易疲倦气馁。3. 英文写作水平还比较低
- 介绍一下 CVPR 文章,在里面扮演的角色,老师给的 idea 吗?
- 这篇论文的第三个 loss,你们是不是得根据先验获得物体对应的背景类呢?这样是不是不太自动化?
- 来我们这里的一个期望是什么,想获得什么?
- 想做偏工程一些还是偏科研一些?我说偏工程,然后他说觉得我的工程经验已经非常丰富了,跟我聊了他关于科研和工程的一些看法。做科研主要是要找对方向,并且要有人讨论帮忙,科研和工程本质上都是一样的,都得不断的思考,工程性的东西可以很快获得成就感,但是科研走对路了的话也是能获得成就感的
- 你未来的规划是什么?
- 反问:做的业务基本已经知道了,面试官又介绍了一遍,然后说工作挺有意思的,如何让网络去学习空间的点线面
- 主要就是以上这些,面试官关于科研和工程的关系跟我聊了很久,作为过来人给了我很多建议,挺感谢的。
腾讯 AI Lab
这边招人主要是做图像生成 research 的,虽然没有相关经验,但是可以去蹭一波面试经验,面试官挺牛的,对 research 有自己独到的见解。
3.30 一面
- 你的科研习惯怎样,拿 matting 这个项目来说,你是怎么去推进这个项目的
- 介绍一下高通的项目(每次我说完一个东西之后会说效果,以及不足,并且分析原因,面试官说我这点非常好,但是在说数据集联合训练的时候给出 hand 精度提高的原因是因为加入了更多 small scale 的样本进去训练,他觉得这个理由不太 convince,应该从 feature 的层面去分析原因,hand 和 face 得出来的 feature 应该是很不一样的,不能单从 scale 的角度去证明 hand 提升的原因)
- 既然 face,hand,person 三个类的 scale 相差很大,为什么不将他们分开检测呢?再多用一层 featuremap 只检测人体(这个其实高通也跟我提过,当时觉得麻烦不想做,不过应该也是一个可行的方法,可以构思一下面试的时候应该怎么回答这个问题)
- CNN 和 Transformer 有什么不同的地方呢?
- 有做过图像生成么,或者 GAN 有做过吗,是用于什么场景呢?(自己玩过 DCGAN)
- 然后面试官介绍他们的 research 主要做的东西,CG 转高清人脸视频,问我做这个的话有什么优势?我只能说我的学习能力很强了,毕竟没有做生成相关的经验。
- 问手里还还有没有项目在做,过去换方向做 GAN 的话导师会不会同意之类的
- 然后就说通过的话后续会安排二面考察工程能力
4.6 二面
这次有两个面试官一起考察,上来直接做了两题,应该凉了
- 给你一个 H*W 的灰度图,以 k 为窗口大小进型不重叠滑窗,可以产生 (H/k * W/k) 个 patch,对每一个 patch 提取特征:算出梯度的方向,然后将对应的角度 (0-360) 划分成 9 个区域,输出梯度方向在每一个区域的概率(也就是输出的 tensor shape 为 [H/k, W/k, 9])
- 给你一个 NCHW 的向量,求每一个像素对其他像素的自相似度,也就是 self-attention 在 softmax 前面进行的操作
- 然后就是另一个面试官了,随便问了我一下平时工程习惯,怎么组织训练代码,测试代码,以及模型保存什么信息,怎么命名之类的,想规范的话就是组织一个 train 脚本,然后通过 argparse 传入不同的参数,保存的时候多保存一些信息,如 epoch,optimizer 之类的。
# 计算 2D 或者 4D tensor 相似度
import torch
def sim(query, key, eps = 1e-8):
input_dim = query.dim()
assert query.dim() == key.dim()
if (input_dim == 4):
B, C, H, W = query.shape
query = query.reshape(B, C, -1) # B,C, H*W
# 用 permute 会出错,因为只是转置一部分
query = F.normalize(query, p=2, dim=1, eps=eps).transpose(1,2) # B, H*W, C
key = key.reshape(B, C, -1) # B, C, H*W
key = F.normalize(key, p=2, dim=1, eps=eps)
similarity = torch.matmul(query, key) # B, H*W, H*W
assert similarity.max() < 1.001 and similarity.min() > -1.001, 'cosine similarity ranges [-1, 1]'
return similarity
elif input_dim == 2:
B, C = query.shape
# 用 permute 会出错,因为只是转置一部分
query = F.normalize(query, p=2, dim=1, eps=eps) # B, C
key = key.permute(1, 0) # C, B
key = F.normalize(key, p=2, dim=0, eps=eps)
similarity = torch.matmul(query, key) # B, B
assert similarity.max() < 1.001 and similarity.min() > -1.001, 'cosine similarity ranges [-1, 1]'
return similarity
input = torch.randn(16, 256, 8, 8)
print(sim(input, input).shape)
input = torch.randn(16, 256)
print(sim(input, input).shape)
腾讯音乐
4.2 一面
估计是招人去做移动端 APP 的,问了一堆移动端模型压缩的问题,几乎是没有研究过的领域。。。
- 首先问了一下导师以及我们组是不是有博后在带,巴拉巴拉
- 直接问高通项目了,问是在高通什么平台进行的测试
- 知不知道 npu 和 gpu 加速的区别
- 移动端模型压缩有哪些方法?我说了通过硬件优化特定算子,指令集加速,模型剪枝,蒸馏,算子融合,转格式用推理框架
- TensorCore 有知道吗?TensorRT 加速的原理是什么,为什么会加快推理速度
- 支持 FP16,INT8,减少计算量又能保持精度
- 算子融合,层融合
- 高通模型前向 10ms 是在什么平台进行的测试?理论计算量是多少?测试 FLOPs 的时候是不是多帧测量?
- 高通的 npu 架构是很强的,不能单看高通的数据,你有没有自己在移动端部署过这个模型?是什么型号的芯片?
- TorchScript 中的 script 和 trace 有什么区别?
- 用过移动端框架 NCNN 吗?TNN,NCNN 会比 TFLite 效率更高的原因是什么
- 你有用到蒸馏,说一下你蒸馏是怎么做的,你有用过剪枝吗
- 抠图的项目有和抖音这些软件进行过速度和效果对比吗?。。。
- 反问环节,面试官说我移动端的知识还需要再学的深入些(我压根没学过。。)
字节跳动 (拿到 offer)
4.2 一面
好家伙,面试官周六晚上八点开始面,直接给我面了两个小时,十点结束,我人都傻了,不过可以看出来这个面试官涉猎很多方向,并且能很好地指出我项目中存在的问题,非常有经验。
- 介绍高通项目,提出了哪些改进
- 模型对大物体检测性能不好,如果是由于感受野的话为什么不直接用一层比较小的特征图来专门检测大物体呢?(高频问题! 想清楚下次怎么回答,这次把锅甩给高通了)
- 高通模型 10 ms 的速度,是在哪里测的呢?分辨率有多少?(512*512),面试官表示很震惊,没见过能跑的这么快的
- 你有用到蒸馏,是怎么用的,有关注最近的蒸馏文章吗,讲一些工作的大概做法。
- CVPR 这篇文章你是在里面负责什么?有没有涉及到代码的编写呢?然后聊了一会儿说大规模预训练结合到下游任务现在是个非常好的方向
- 讲讲 CVPR 这篇论文,你对弱监督了解多少,简单介绍一下(然后就从传统 CAM 到增哥的工作大概讲了一下有什么变化)
- MODNet 主要流程大概是怎么样的呢?如果要对他进行改进的话,你觉得有哪些是可以改的?回答:可以做一些剪枝,去掉一些分支(Low resolution 用于检测简单场景,High resolution 和 Fusion branch 用于检测复杂场景),然后换深度可分离卷积
- MODNet 的 loss_c 是什么意思?(引用之前的文章的 composition loss,就是要让 gt RGB 合成图和 pred 的 RGB 图的每一个像素值都尽可能的一样,保证预测的完整度,这个面试官应该自己部门也做过 MODNet 相关业务,问的挺多的)
- 给个业务场景,比如 matting 这边的话,假设有大量的 noisy label(经过模型标注的伪标签),如何将这些伪标签利用上呢?回答:如果是分割任务的话可以用 CRF 或者 Random Walk 来 refine 一下标签;或者参考文献将 noisy label 和 精细的 label 一起训练提升效果;或者用 noisy label 先训一个模型,作为预训练权重,然后再用精细的 label 进行 finetune;然后问面试官给点提示,他说他也没做过,只是一个开放性问题,然后说如果是他的话,可能会用不确定性来将 noisy 的部分给干掉。
- 移动端部署加速的话你能想到用什么办法吗?回答:剪枝,蒸馏,特定算子优化,算子融合,量化,用推理框架,用指令集加速(NEON 在 ARM 平台可加速),根据场景选择 npu 以及 gpu (然后我就引出我和华为有过合作,用过他们的 npu,在效率上会比 NVIDIA gpu 快很多)
- 编程题:Leetcode 组合总和II,开始用滑动窗口做,发现有点困难,后来直接用回溯就行了。
4.7 二面
这个面试官水平挺高的,但是很多东西问的太细了,有些答不上来,并且最后的题目也挺变态的,太麻了。
- 详细介绍一下高通这个项目
- MobileNet 里面有 BN 层吧,在部署的时候有对 BN 层做什么处理吗?回答:应该将 Conv BN ReLU 三层融合为一个算子了,这样的话可以加快速度
- CenterNet 假设两个极值点靠的很近,就相差几个像素,怎么区分这两个物体呢?
- CenterNet 是怎么获取极值点的?:先对 heatmap 进行 pad,再用 3*3,stride=1 的卷积核进行 maxpooling,得到 hmax,hmax==heatmap 的部分即为保留下来的极值点
- 动态损失权重为什么不直接在 GT 上操作,为什么要重新生成一个 mask 呢?回答:这样也是可以的,但是我们其实只是想要最靠近中心的那部分区域的损失加大,因为这部分才是分类正样本的区域,旁边的区域本身的权重就比较小,再乘上系数的话可能也没有太大影响,如果要让他生成符合我们目的的高斯核的话就得修改 sigma,稍微麻烦一些
- 详细介绍一下抠图这个项目
- 为什么不适用一个大型的模型来对你们的业务数据集进行推理呢?(这样确实是可以的,而且应该效果会更好,但是之前没想)回答:MODNet 的模型比较方便直接使用,其他的可能没有开源或者效果不怎么好,我们这样推理出来的七八百张图片也够用了
- 抠图最终的数据集有多少张?前景图有多少张?
- 你们合成数据时就直接将前景贴到背景上去吗,有没有做什么操作?回答:直接贴,后来他说背景和前景的光照度对比度之类的,我就说我们找的背景都是很亮的,和前景没有太强的对比度,不过可以去看一下有没有论文解决这种合成数据的问题,问到的话可以说一说
- 语义分割领域中,一般有什么方法来处理不太精细的边界问题吗?回答:CRF,RandomWalk,面试官问我知不知道原理是什么?直接跪
- 两个数据集,一个有 3 个类标注,一个有 1 个类标注,bs=16,如何每次都 sample 出一半 A 数据一半 B 数据?回答:重写 sampler,他问具体怎么实现?讲了我的一些思路,但是应该讲错了,再次跪
- 做分割时,假设我们用的是 512 分辨率训练,测试用一张 4k 或者 8k 的图片推理上采样回原图后,边界模糊怎么处理?回答:用类似 canny 的 nms,其实是错的,这种 nms 针对的是边缘区域,但是我们的分割图并不是边缘。好的做法有将图片切 patch 送入网络中进行推理,不过这样子的话推理时间会增加。另一种做法呢,面试官跟我说可以用引导滤波。又跪了
- 一般移动端模型轻量化有哪些方法?这个我刚好复习过,所以讲了很多方法。没想到他接着问,说一下剪枝的具体做法,说一下量化的具体做法,int8 缩放系数是怎么设定的。
- 讲讲 CVPR 论文,你们是怎么获取到与类别相对应的背景类的呢?回答:先验知识
- 编程题:用 SGDm 求
X**2 + 2*x -3 = 0
的解,破防了。
以为凉了,没想到竟然在 6 天之后收到了三面的消息!!!
4.19 三面
- 介绍高通项目,应用场景是怎样的
- 为什么不用 FCOS 等后面出来的 Anchor-free 检测器
- 对 FCOS ATSS 有了解吗,介绍一下
- 高通模型有自己部署在移动端吗?用的是什么框架?其它一些框架有没有了解过
- 介绍一下抠图项目
- 有对抠图做一些部署方面的处理吗
- 视频抠图中一般会出现什么问题?回答:画面光影抖动,导致抠图效果差。怎么解决这种问题?回答:收集几帧的数据,利用不确定性判断改区域历史像素的方差,方差大说明抖动厉害,结果不太可信,需要对历史像素进行加权。
- 开放题:假设会议软件中,背景抠图,但是只想抠主体的人,对非主体的人不想抠,如果还是用 MODNet,可以怎么改进呢?回答:1. 识别关键点进行解算 pnp 得到距离,只扣距离最近的人(但是思路是错的,万一两个人叠在一起就 gg)。2. 实例分割加抠图加距离解算。3. 面完后突然想到可以用 ROI,识别到人之后就把识别范围缩小到主体周围区域。
- 其他 CV 领域了解过吗,实例分割,GAN,看过那些文章或者做过什么项目
- 将 GAN 应用到检测分割当中提升性能你会怎么做?回答:用在蒸馏中,引入 GAN 的判别器,让学生的分布尽可能地与老师的分布相似,这样才能骗过判别器,同时也达到蒸馏的目的
- 讲讲论文,然后说我们的做法是比较 trick 的,已经有好几个面试官这么说了
- 开放题:抖音里面的机器人怎么识别?回答:根据动作,记录点赞关注的次数,然后利用聚类算法,对账号分为 k 类,如果点赞关注很多的话,特征的聚类中心会往机器人那一类靠近,然后再去进行下一步判别
- python:GIL 了解过吗?
- 如果数据集特别大,PyTorch 有什么策略可以加快 IO 的效率吗?回答:num_workers 多线程,preload,pin_memory
- C++:堆和栈的区别,vector 的内存管理模式
4.20 HR 面
HR 面了我 1.5 个小时,我看别人都是半个小时走个过场,怎么我面了这么久,一面我也面了两个小时,从来没见谁面过这么久。。这次是 hr 和另一个面试官一起面的,估计是 leader,但是全程都是 hr 在和我聊
- 学习、生活、家庭自我介绍
- 项目是怎么来的,有自己找过项目做吗
- 怎么平衡项目和生活的,做项目会不会耗费很多时间
- 为什么要从自动化转到计算机,当时怎么不转专业或者双学位
- 以后想留在深圳吗,有女朋友吗,女朋友也想留在深圳吗
- 爸妈的情况,对你留在深圳是什么态度
- 来我们这里有什么规划呢
- 你对自己未来的规划是怎么样的
- 你对实习的 mentor 有什么期望吗,希望从他那里获得一些什么
- 说说你显著的优点和缺点
- 接到一个项目你是怎么安排进度的呢
- 介绍一下你做过的这些项目
- 这么多奖项中,说一个最让你自豪的奖项:RoboMaster
- 你觉得你们机器人队伍能够打败其他队伍的原因是什么呢
- 这么多奖项中,说一个让你觉得最难拿到的奖项:RoboMaster
- 机器人队的规章制度是怎样制定的
- 有想过当管理人员吗
- 以后有机会往上爬的话,更想当偏管理一些还是偏技术一些? 四六开
- 你的抗压能力表现在什么地方,知道字节的上班时间表吗(正常是晚上九点下班)
- 想进来做工程是吗,如果可以发论文的话,你愿意吗
- 你觉得对师弟师妹来说有成为一个榜样师兄吗
- 你觉得自己前三面的表现怎样,觉得三个面试官怎样
- 三面的表现满分十分,打多少分,我说打七分,因为一些开放性的问题没有回答得特别好,面试完了之后想到了更好的解决方案。然后 hr 跟我说对自己自信点,前面的表现都挺好的,我就有些放心了
- 啥时入职,实习多久,说让我可以早点过来,公司就在学校旁边
- 有没有其他 offer,或者在流程中的
还有很多问题都记不得了,反正网上能找到的应该都问了 一遍,一个半小时底裤都被问没了,然后晚上看牛客很多同学都被 hr 挂了,然后我就很慌
vivo (拿到 offer)
一面
不知道啥时一面的了,也没有记录,当时面试官迟到了很久都没有进来,我向 HR 打电话也打了四五个才接,跟我说面试官可能忘记了,然后要去提醒他,我当时想着 MMLab 应该稳了,就直接跟 HR 说要不就不面了吧。然后过了一会儿面试官打电话过来说面试,我想着面就面吧。。
然后过了两天就收到了 MMLab 的感谢信。。。
4.12 二面
直接是 hr 面,hr 还迟到了,聊家常
- 本科成绩怎样,学校保研率怎样,你怎么保研的,团队有多少人,排名第几
- 在比赛中负责什么,强度怎样
- 比赛中跟别人有过分歧吗?怎么解决?
- 你觉得你是个怎样的人?
- 如果别人让你看代码 debug,但是你在做自己的事,怎么办?
- 家里是哪里的,父母做什么,家里生了几个,以后想在哪发展,父母意见怎样?
- 深圳最吸引你的地方是什么?回答:开放包容
- 目前有投递其他公司吗?在什么样的流程了?
- 什么时候到岗?
- 介绍薪资待遇
美的 (拿到 offer)
进行了一次电话面试就直接拿到 offer 了,基本上就是对着我的简历进行提问,记录一些其他公司没有问过的问题
- 为啥用 CenterNet 不用更先进的 YoloV5 呢?回答:没有 nms,并且代码结构更简洁,改模型也更方便
- CVPR 这篇论文中,如果图里有多标签怎么办?回答:一个类一个类进行循环计算四个 loss
腾讯 ieg
4.18 一面
本来投的是 CV 岗,后来安排到 ieg 的游戏前沿部门去了,还是客户端开发,压根不熟的领域,然后面试官跟我说进去不是做开发的,看我有深度学习的背景就要了我的简历,进去为游戏业务做超分应用。面试官人很好,特别好说话,我回答不出来也一直说没关系没关系。主要是对 cpp 和 python 相关知识的考查。
- 简要问了一下项目,问帧率怎样
- 堆和栈的区别
- 链表和数组各有什么好坏之处
- #define 和 const 有什么区别(#define 没有类型,const 会对类型进行检查)
- 引用和指针有什么区别
- 多态是怎么实现的呢?虚表
- cpp 是类型安全的语言吗?不是,可以强制转化类型
- stdcall 有了解过吗,有没有了解过设计模式(这个真不太了解)
- python lambda 函数的应用场景(解耦)
- with open () as,这个是什么原理?上下文管理器
- os 和 sys 两个库有什么区别?一个针对操作系统,一个针对 python 解释器
上海人工智能实验室 Open GVLab (拿到 offer)
上海人工智能实验室-商汤联合实验室
4.20 一面
- 讲一下高通项目
- 为什么不用 Anchor-based 的方法,在工业界其实还是 Anchor-based 的用的多,因为召回率高
- 讲讲 CenterNet 这种用点来检测的方法和 Anchor-based 相比的优点在哪里
- 抠图和分割有什么区别,抠图的前景背景代表什么 (面试官纠结这个问题纠结了十分钟,明明一个很直观的问题搞得很复杂,我都差点喷人了。。)
- MODNet 语义的部分是怎么预测的,人的姿态千变万化,他为什么能够那么好的预测出来?因为 Backbone 使用了 Human Segmentation 的预训练权重,引入了先验知识
- 抠图你用了 MAD,MSE 指标,还了解其他指标吗?不了解,他表示还有结构上的指标,梯度那些
- 更多的就忘了,本来也没打算记的,反正问了一个小时,没做题,他表示商汤更加注重学术,看我做了这么多项目工程能力应该也不错。总体来讲,面试体验中等偏下
4.21 二面
- 从三个方面讲一下高通项目:动机,方法,效果
- 你用到了 Transformer Encoder,你觉得他和 global attention 或者 self-attention 有什么区别呢?为什么选择他?回答:一开始借鉴开源代码,别人是这么做的确实有效果,然后就直接用了,而且 Transformer Encoder 里面本身就含有 self-attention
- CenterNet 能解决两个物体的中心点重叠在一起的问题吗?回答能或者不能,回答:不能,但是 COCO 里这种现象非常少,后续的 FCOS 也用多尺度的方案解决了这个问题
- 你用到了蒸馏,那么你觉得蒸馏和直接用 GT 相比,有什么好处?回答:蒸馏提供了一个更加 soft 的 label,可以使网络更好地去拟合。
- MODNet 是一个 Trimap Free 的还是 Trimap Based 的算法?介绍一下他的大概流程
- 抠图方面,怎么让一个小数据集训练出来的模型更具有泛化性呢?回答:1.贴多种多样的背景,2.在分割预训练模型的基础上进行 finetune,可以提供一些语义上的先验知识,3. 用在大数据集上训练过的大模型来蒸馏这个模型
- 有些问题忘了。。然后介绍部门,表示过去的话应该还是做抠图相关的研究,不仅仅做学术研究,可能还要落地
- 编程题:手撸 IOU 计算公式
秋招
大疆 (专属通道)
大疆走的 RoboMaster 专属通道,快人一步,五月多就开始面试了
5.27 一面
总的来说是在问项目,以及项目的延伸以及自己的一些思考,后来还问我除了 AI 还对啥感兴趣,然后聊了一会儿网络安全以及我在网安这块做过的一些事情,最后就聊了一下在 RoboMaster 竞赛过程中的一些事情,没有手撕算法题,这点很不错。
5.29 二面
这回的面试更像是在考察价值观以及对大疆的认知,项目方面的询问相较于一面少了些,全程的氛围比较轻松,聊到了对产品的观点、对社会事件的看法、对用户的需求怎么获取、对大疆产品功能改进上的建议(如果是你来做的话你会怎么做之类的)
7.25 HR 面
简单介绍了一下岗位的情况,以及问我的意愿,因为这个相当于提前批的,所以部门还没确定,不过都是过去做 CV 的,过了几天就收到意向书了,秋招的第一个 offer!
蔚来 (提前批)
7.15 一面
一直在听我讲论文和项目,用了 40 分钟吧,只问了一道 python 的题目,我还答错了。。
在一个长度为一百万(
1000000
)的列表中搜索某个元素是否存在,用 list, set, dict 哪个数据结构的速度是最快的呢,为什么?
7.29 二面
也是半小时结束战斗,现在记不太得问了些啥了,也没问啥吧,详细介绍了一下在字节做的项目,然后手写堆排,写完之后我 g++ 写成了 gcc,编译没通过,尴尬。。讲了一下思路之后,面试官:代码还得练练
突然记起来了一些:
- 你认为现在目标检测的瓶颈在哪里,以及目标检测未来的发展趋势是怎样的
- 知识蒸馏现在的发展介绍一下
10.10 三面
就问你离不离谱,过了两个多月才约三面。直接对着 PPT 讲我在字节做的东西,时间就差不多结束了,然后就进入反问阶段。
insta360 影石 (提前批)
7.29 一面
这个面试官好顶,一题都没做问两个项目问了 80 分钟。
- 介绍字节做的项目和科研
- 你们的相机是怎么部署的,有什么讲究吗,FOV 有多少,怎么确保每一个机房都能够适配?
- 你前后处理操作是怎么包含进模型里面的?
- ByteTrack 比较 heavy,你们这种场景下需要用到 feature 吗?回答:我们只是用了 IOU 的匹配策略,并没有提取 feature 作为 cost
- 介绍一下 ByteTrack,还好我看过
- 卡尔曼滤波器的状态量和观测量是什么你了解吗?
- 带速度的卡尔曼怎么建模呢?我就说是不是高阶卡尔曼,面试官说是这个意思
- 假设拥挤场景下,利用 NMS 的阈值筛选之后有一些虚框或者漏框,在 tracking 的时候导致 id-swtich,如何解决这种情况?
- NMS 你清楚吧,对他的改进有做了解吗?我介绍了 Soft-NMS 的思路,其实面试官上一个问题应该就是想让我说对 NMS 进行改进
- 介绍高通做个这个项目
- 请教一下为啥不用 CenterNet 原本的沙漏网络呢,或者直接对沙漏网络做一个裁剪?回答:MobileNet 试过以后效果不错,符合预期,就没有去做了,而且自己裁剪的话就没有预训练权重了
- 假设有个场景,需要让你去将手、脸、人体当成一个 instance 的整体,你会怎么做?回答:因为之前没有这种数据集,所以我们可以借助骨架点检测网络,再通过检测出来的框与单一的个体进行匹配
- 高通算法部署在什么平台,测速在哪里测的
- (打开笔试题)你的编程题最后一题没做出来呀?我回复我觉得答案错了,然后跟他讲了思路(动态规划最小路径和),然后面试官觉得没啥问题了
- 笔试是 C++ 写的,考个 C++ 问题,你们的相机 sdk 库出问题了,发现是内存泄漏,你怎么知道是什么情况造成的呢?怎么样不借助第三方工具检测出哪一行或者哪一个变量引发了内存泄漏?答案:一般都是 new 了变量之后忘记 free 造成的泄漏,具体实现检测的话可以定义一个 wrapper 函数,在 new 一个变量的时候就打一个 log,结束之后从 log 里面找哪个变量没有被释放。我想回答的是跟 python 的装饰器那样做,其实理论上是一样的。
- 你给别人提供一个模型,别人业务上需要确定一个 score 阈值,你怎么给别人推荐?回答:根据他的业务需求来,想要高召回的模型的话阈值可以调低些,高准确的话阈值可以调高一些
- 你对今后从事的工作有什么看法或者计划
- 对我们公司有什么了解吗,有什么亲朋好友在这里吗
- 反问阶段,部门是干啥的:做目标追踪的(怪不得问那么多追踪的题目),然后介绍了很多
- 反问阶段,部门作息怎样:96(6.5)5,早来早走
8.4 二面
- 详细介绍抠图项目
- 抠图部分有试过人体部分只用分割模型,头发丝部分才用抠图模型吗?没试过,但是这样的话就有个问题,如果人背着包或者拿着什么东西的话,不能很好地分割出来。
- 你对腾讯视频的虚拟背景有什么看法?回答:我现在的背景比较干净,所以抠得比较好,但是背景复杂或者有人经过的话,其实会将后面的人也抠出来,作为客户的话,其实我只想要抠出来的结果是我自己,不想把其他人抠出来,然后问我怎么做,我说用 pnp 解姿态,通过几何运算得到每个人到相机的距离,保留最大距离的个体,这样的话需要通过关键点来求解 pnp,可以借助一个人脸关键点检测网络。然后面试官问我对显著性检测有没有了解,其实跟抠图任务差不多,但是用显著性检测来做这个功能的话就得收集一批数据了,将人体作为一个显著性的目标。用显著性检测确实也是一个可行的方法,或者可以借助深度估计网络来一起做这个事情。
- 介绍高通项目,这三个类需要进行关联吗?回答:不需要,首先是没有这种标注的数据集,如果要关联的话得借助其他的网络例如骨架点检测网络来辅助检测
- 介绍字节的检测项目,如何解决低召回和误召回问题
- 介绍一下 FP,TP,FN 分别是什么意思
- 为什么选用 ByteTrack,有用到 ReID 特征吗,介绍一下 ByteTrack
- 还知道哪些 tracker,稍微说一下
- C++ 有哪三种继承方式,protect 继承的时候,派生类能访问父类的哪些类型的成员变量?
- 打开 leetcode 做了一题 “数组中只出现一次的数字”
- 反问阶段:部门氛围,公司对部门的重视程度,对同类竞品的调研程度
二面结束之后,过了两个小时就约第二天 HR 面了,希望顺利! 翻了很多帖子,都说 Insta360 的氛围确实很不错。
8.5 HR 面
问一些基本情况,以及意向薪资等
几天后沟通 offer,给了一份挺不错的薪资,但是我手里有大疆的 offer,想着 argue 一下价格,结果 HR 直接给我转成口头 offer 了,说等我秋招结束确定去 insta 再重新谈价格,我吐了。今年形势真的难,这些公司完全不缺简历,建议有 offer 先拿着。。
滴滴 (提前批)
8.10 一二三面
很刺激,几个小时之内面了三轮,现在好多都忘了。。记起来再补
- MobileNet 的通道可分离卷积和普通卷积相比参数量少了多少
地平线 (提前批)
8.11 一面
- 介绍字节项目
- YOLOV5 autoanchor 机制原理是怎样做的
- 从算法层面改进 YOLOV5 减少误检你会怎么做?加注意力机制
- 知道哪些注意力机制?讲一下空间注意力是怎么做的
- 怎么对 box 编码解码,公式是怎样的(因为网络的输出是不确定的,所以要用指数函数来转换到 0 以上)
- 高通项目,展开问了几个问题,以及分辨率等等
- MobileNet 的通道可分离卷积和普通卷积相比参数量少了多少
- BN 层的作用,BN 层有多少参数,beta 和 gamma,都是 C 维的向量,所以是 2C
- FocalLoss 的作用,以及公式,alpha 是用来干啥的
- 手撕 NMS
8.18 二面
- 字节项目为啥选择 YOLOV5:AutoAnchor,部署方便,自带 Mosaic 增强
- 项目中如何解决低召回和误检的情况
- 检测中,框的回归准确度怎么提高? 我说了GFL,问还有吗,想不到其他的,结束后陈导说 IOU 系列的 loss,觉得应该也是可以的
- YOLOV5 如何改进增加精度和召回率,说了个注意力,然后引出了 centerness
- 还知道哪些其他的检测器?
- ATSS 和 AutoAssign 是怎么做的,解决了什么问题?稍微讲了一下,有点忘记了
- 抠图这篇论文,复现花了多久,觉得复现的过程中,最难的是哪一个部分?数据处理是最难的
- 问 RoboMaster 比赛,介绍了一下
- 知道相机的成像原理吗
- 对硬件(电路,控制等)了解吗
- 在计算资源首先的设备上,如何提升模型的性能?
- 对量化的原理了解吗
过了一天发了感谢信,真的无语,感觉基本都回答出来了。。。
超参数
8.16 一面
- 自己挑一个项目讲,讲了高通的项目
- 为啥用 CenterNet 作为 baseline 呢
- 跨数据集训练的话,直接这样合并训练屏蔽 loss 会有问题吗?想了一下,这是单独通道的二分类,是没有影响的
- 检测的置信度什么意思
- 怎么计算 mAP
- 一个检测模型训好之后,mAP 是固定的吗,受什么参数影响?
- 训好模型之后如果想要一个准确度为 90% 的模型改怎么做:调高置信度阈值,在 PR 曲线上找到准确度为 90% 时的置信度,阈值高于这个就行
- 知道哪些 Anchor-based 的方法
- 检测的 loss 一般有哪些?分类回归都说了一下
- IOU,GIOU,CIOU,DIOU 有啥区别
- 题目:手写 IOU,岛屿的数量
- 反问阶段,说上班的时候经常打游戏
9.8 二面
- 问我的 RoboMaster 经历,他比较感兴趣怎么操控机器人的
- 问字节项目,认识我的 leader,直接报出了我 leader 的名字
- 模型并行和数据并行有什么区别
- 问一些模型轻量化的知识,项目中蒸馏是怎么做的
- 用过的最大的网络复杂度多少,参数量多少
- 还有一些忘了。。
- 算法题:利用rand4 生成 rand5(从 0 开始,rand4 就是 0,1,2,3)
9.14 三面
直接是 CEO 亲自面试。。有点顶,不过没有问太多技术性的问题,更像是朋友在聊天
- 介绍了 RoboMaster 比赛,团队规模、解决什么样的事情、最终排名等等
- 介绍字节的机房项目,从他过来人的角度提了一些问题,例如太拥挤以及太遮挡的情况下会怎么样,多少路视频一起处理,然后聊了一下应用前景等等
- 其他问的不太涉及项目细节,我也不太记得了,然后到反问阶段问了一些公司的事就差不多结束了
9.21 HR 面
跟其他 HR 面大差不差吧,不过问了很多我在字节里面的事,以及对公司的看法,学到什么东西之类的。经典问题:投了哪些公司,拿了哪些 offer。
百度
8.15 一面
忘了具体问啥了,不过这面试官要隔好久才问下一个问题,感觉没啥准备,只记得做了一个题目,删除链表中的某一个节点。做了很久,因为要自己创建链表结构体,然后也很久没做链表题目了,反正一直在面试官的提示下继续做,期间也问了很多 C++ 的知识点。
反问阶段,部门是做自动驾驶的,业务压力比较大。
8.17 二面
感觉是 kpi 面,面试官说双方都不用开摄像头。。。怕网络卡
- 问我深圳的字节在哪里,感觉是怀疑我的实习经历???
- 叫我说了一下高通的项目,我就介绍了一下
- 目标检测会有个问题,即使在静止的情况下,每一帧检测到的 bbox 框也会有抖动,如何缓解这种现象?我说可以对历史的框做个统计,用历史的结果对当前帧的结果做一个平滑
- 写题:手撸 FocalLoss,然后又让我手撸 CrossEntropy Loss,然后让我写个示例运行一下
- 深度学习 weight decay 的作用是什么?
总之体验极差,估计本身也没打算招人
过了几天就挂了,真无语
三星
9.6 一面
三星上来就英文自我介绍,然后是有三个面试官一起面试,一个专问算法,一个专问 C++,一个专问 Linux
第一个面试官:算法
- 询问意向(算法优化、模型部署等等)
- 介绍高通的CV项目来证明自己的能力???
- 知识蒸馏怎么做的,介绍一下
- 知识蒸馏为什么有用?因为 soft label
- 加上知识蒸馏之后你觉得学习率需要调大还是调小
- 模型推理速度在 10ms 以内是在什么平台测的,什么架构,最终的复杂度是多少
- 部署在 dsp 上和部署在 x86 cpu 上有什么不同
第二个面试官:C++
- C++ 迭代器遍历一个 vector 时删掉其中一个元素会发生什么
- 类方法加了 static 修饰,但是里面用到了一个非 static 的成员变量就怎样
- 双向链表怎么删除中间的一个元素
- vector 满了之后怎么进行扩容
- 虚函数加 virtual 是为了干啥
第三个面试官:Linux
- 说一下用过什么命令(。。。)
- 给你一个文件名怎么找到他在哪里(find -name)
- 怎么找到一个可执行程序的路径在哪里(which)
10.7 HR 面
问这问那,语气和问的问题让人很不舒服,对这家公司顿时没有好感
通过后两个 AI 部门的 leader 打电话过来让我选择意向部门,之后约了在线恰谈会,刚好 DJI 电话谈薪了,直接把三星给拒了
美团
9.14 一面
介绍字节机房项目,介绍字节的科研项目。他对字节的项目很感兴趣,两个项目问了 50 分钟最后没时间问其他的了,就直接到了反问阶段
- 机房项目整体介绍一下
- 相机的部署方案是怎么确定的
- 有多少路视频同时处理?怎么读取视频流的?处理完怎么返回?
- 追踪这块,ByteTrack 和 sort 以及 deep sort 有什么区别?怎么进行二次匹配的
- 然后问了一下我对 tob 业务的理解,以及这个机房项目卖出去还要考虑的很多东西
- 然后就是问我在字节做的科研项目,一些细节之类的
- 反问阶段,表示美团内部的需求很多,算法做出来都是能够实际应用到落地场景的,这点我觉得很好
9.22 二面
是个女面试官,让我挑一个最近的项目来讲,然后再挑一篇 paper 来讲一下,最后做了一道题。
- PPT 分享字节的机房项目
- 这个项目让你学到了什么之前没有的技术
- PPT 分享 CVPR 论文
- 这篇论文二作扮演了什么角色
- 手撕:格雷码,力扣有原题。。。真不会,太 trick 了。不过感谢还是给我过了
面试官表扬我的 PPT 写的很清楚,所以建议大家可以在面试之前做一个 PPT 去叙述一下
9.27 三面
部门 leader 来面的,从腾讯 AI Lab 跳到美团,让我介绍一些比较满意的项目,就说了字节的项目和高通的项目,然后提问,50分钟就过去了,最后反问环节
- 字节项目中转 TensorRT 之后是 fp 模型还是定点量化过的模型
- 字节项目整个环节是谁负责的,视频流编码解码处理是怎么做的
- 人体检测的方案在极端情况下能解决黑衣服黑头发连成一团的漏检问题吗
- 一个摄像头就是一个视频流,用这个模型服务器最多能够处理几路视频流呢
- 关于这个项目还问了很多其他的,但是不太记得了
- 高通的项目,纯介绍,之后就说对我的技术方面没有问题了
- 问了一下 RoboMaster 比赛的情况
- 反问阶段:你觉得美团相比其他公司的技术领先性体现在哪些方面
过了快一个月,内推人说排序挂了。
云天励飞
9.29 一面
- Conv 和 BN 的融合是怎样的,写出公式以及融合过程
- BN 是针对什么维度进行计算的,LayerNorm 呢
- 为什么大家部署不用 LayerNorm(均值和方差需要在线求,不像 BN 具有 running_mean 和 running_var,所以没有太多加速)
- 高通项目:介绍一下 CenterNet 和你们做的一些改进
- Depthwise Conv 和 Conv 有什么区别,怎么节省参数量的,节省了多少参数量,计算量是多少
- 编程题:二分法求左右边界
- 反问阶段
Intel
10.14 一面
sb 公司,等了半小时面试官还没来,听说大裁员,也不招了,不知道面试官是不是被裁了
面完这一波就不面了