加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!
同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。点击文末“阅读原文”立刻申请入群~
分享一篇字节跳动CV算法实习生面试经验帖,涉及较多视觉算法知识点分析,很有参考意义,希望对大家工作和求职有所帮助~
原文 | https://zhuanlan.zhihu.com/p/59270912
岗位信息如下:
一面(时间2019.3.14,形式是视频面试) -- 已凉
下午四点面试,晚上七点半收到了凉凉的邮件通知,不慌的,再接再励,查漏补缺,下面我就详细总结一下面试的经过。
注意:回答不一定正确,仅提供了我个人的回答,答案里有些不正确的地方,我之所以给出我的个人回答只是为了更好地还原面试过程,最近如有时间,我会整理出正确的答案。
注:我在下面的这篇文章中汇总了一些好文章,如果有需要的可以参考一下:
致谢:感谢各位朋友和各位大佬给出的宝贵意见
总结:根据各位朋友和各位大佬给出的宝贵意见,我反思总结如下:
python 和 c++基本语法不够扎实,需强化基本语法点,例如对python里面的集合set不太熟悉
回答过于简洁,难免给面试官基础知识不扎实的错觉,需讲得更详细
深度学习的基础知识不扎实,不系统化,需构建知识体系
面试建议:面试官主要是对着简历进行提问的,然后再扩展一下相关的知识点。面试主要考察了项目、比赛以及一些理论知识和编程语言的语法点。建议大家可以看着岗位信息进行简历的制作并且在简历上出现的内容需要好好准备一下。
下面就开始还原面试过程
我说ap,然后面试官问有没有用miou,我说没有
TGS Salt Identification Challenge:https://www.kaggle.com/c/tgs-salt-identification-challenge#evaluation
卷积,下采样,上采样,然后低层特征图和高层特征进行融合,最后进行分类
不太熟悉,目前正在阅读相应的论文和源码,我目前是对FCN,unet,refinenet,mask rcnn比较熟悉
这个比赛是实现拍照即可完成钢筋点根任务,先使用了YOLO,然后用了faster rcnn还有retinanet
智能盘点-钢筋数量AI识别 - DF,CCF大数据竞赛平台:https://www.datafountain.cn/competitions/332
解决类别不平衡问题,对困难样本的损失分配比较大的权重
既能调整正负样本的权重,又能控制难易分类样本的权重
我说应该有
我说yolo是根据iou来进行距离度量的
https://github.com/AlexeyAB/darknet/blob/master/scripts/gen_anchors.py
这个我用的是官方源码
估计面试官想问的是这个原理,K-Means聚类算法原理:https://www.cnblogs.com/pinard/p/6164214.html
直方图,翻转,随机裁剪,高斯模糊,高斯噪声
如果是同个模型,会整合两个模型的检测结果,根据score来排序再做nms操作。
但这里我是用的不同模型,用的yolo和faster rcnn,他们的score没有太大的可比性,所以我没有用score来排序,我是求两个模型的交集,以解决误检的问题
其实这个我是根据提交结果来决定的,事实上,在这里交集的效果比并集好,交集解决误检问题,并集解决漏检问题
x光扫描的RGB图
比较熟悉yolo
每个grid分配9个检测框
yolo会输出3种尺寸的特征图,13*13,26*26,52*52,每种尺寸特征图的每个grid预测3个框
是相对grid的相对值
我说欧式距离
描述了一下函数形式
对每一类进行nms,先根据score进行降序排序,然后计算最高的score和其他框的iou,去掉iou大于阈值的检测框
https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/nms/py_cpu_nms.py
先拿score最大的检测框和其余的检测框进行iou操作,这里用到了numpy数组的广播机制,然后用numpy的筛选操作,把大于一定阈值的检测框的score置0,然后下一次迭代从score不为0的检测框进行上述操作,直到操作完成
熟悉VGG、GoogleNet还有resnet这几个提取特征的,还有FPN这个来融合信息的
不太熟悉,最近没关注,最近在研究代码
估计面试官想问的是这些网络Xception、DenseNet、DetNet,在文章开头的链接里汇总了
sigmoid还有relu
还有tanh等
https://en.wikipedia.org/wiki/Activation_function
梯度消失
我说成leaky relu的了,然后面试官说确定吗,不是relu的变形吗,
我说我说错了,然后我纠正了一下
learky relu
如何理解ReLU activation function?:https://www.zhihu.com/question/59031444/answer/177786603
请问人工神经网络中的activation function的作用具体是什么?为什么ReLu要好过于tanh和sigmoid function?:https://www.zhihu.com/question/29021768/answer/43488153
比较熟悉bn和gn
张俊林:深度学习中的Normalization模型:https://zhuanlan.zhihu.com/p/43200897
bn是解决梯度消失问题的,通过bn能使数据在输入到激活函数之前回到导数较大的位置
#解决问题
解决内部数据分布不稳定问题
#做法
统计mini-batch个样本的期望和方差从而进行归一化,但这样会导致数据表达能力的缺失,所以要引入两个参数从而恢复数据本身的表达能力
#优势
使得网络中每层输入数据的分布相对稳定,加速模型学习速度
允许网络使用饱和性激活函数,缓解梯度消失问题
具有一定的正则化效果
先做了归一化,例如先减去期望再除以方差,然后再乘以一个参数和加上一个参数,这两个参数是可学习的
在mini-batch和通道这两维,描述了一下具体是怎么算的。我举了个例子,四维tensor,分别是[n,c,h,w],然后bn是统计每张特征图的期望和方差,而这个期望和方差是n个样本同一张特征图的期望和方差
gn是解决bn对mini-batch过度依赖,gn是在通道处进行分组统计,不依赖mini-batch
bn和gn我所了解的是在目标检测,当然图像分类也用到bn
是的
一个用的地址,一个是别名,但都能修改值
不能
能不在实例化类的情况下进行调用,而且每个实例化后的对象共享这个值
在类内类外都行
一般是在类外初始化,如需在类内初始化,要求该静态变量为静态字面值常量类型 C++ 静态成员的类内初始化 - WanChouchou - 博客园
能在不实例化类的情况下进行调用
列表、无序字典和有序字典
列表、元组、字典、集合等
了解,但没写过
用多线程
append是添加单个元素,extend是添加一个列表
python append 和 extend的区别:https://zhuanlan.zhihu.com/p/59334738
算法题如下:给个有序数组,然后求元素平方后不重复的元素个数,例如[-10, -10, -5, 0, 1, 5, 8, 10]
我思想描述对了,然后面试官说有更好的方法吗,我想了一下说没有,然后面试官让我选个语言实现一下,选择了python来实现,用到了字典,然后面试官说用集合会不会更好,我说会的
# 这是我的实现,没有用到集合,如果用到集合会更好
data = [-10, -10, -5, 0, 1, 5, 8, 10]
new_list = []
for x in data:
temp = x*x
if temp not in new_list:
new_list.append(temp)
print(len(new_list))
# 这是群友给的代码,实在是太优秀了
print(len(set([x**2 for x in data])))
我说看岗位信息提到会进行技术的理论研究和技术的落地,如果我去了会负责什么,面试官说因为实习时间比较短,一般是做些技术落地的项目
有师傅带,一般做力所能及的项目
参考:
1、U-Net: Convolutional Networks for Biomedical Image Segmentation
2、Focal Loss for Dense Object Detection
3、YOLOv3: An Incremental Improvement
4、Fast R-CNN
5、Faster R-CNN Towards Real-Time Object Detection with Region Proposal Networks
6 、AlexeyAB/darknet:
https://github.com/AlexeyAB/darknet
7 rbgirshick/py-faster-rcnn:
https://github.com/rbgirshick/py-faster-rcnn
8 Rectifier (neural networks):
https://en.wikipedia.org/wiki/Rectifier_(neural_networks)
*延伸阅读
点击左下角“阅读原文”,即可申请加入极市目标跟踪、目标检测、工业检测、人脸方向、视觉竞赛等技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~
觉得有用麻烦给个在看啦~