计算机视觉实习面试
-
自我介绍
首先是自我介绍,大致是以前做过什么,现在在做什么,研究方向是什么
-
Transformer对于图片的处理流程、它的变种一般都有什么、如何计算Attention
参考博客:"未来"的经典之作ViT:transformer is all you need! - 知乎 (zhihu.com)
对于图片的处理流程一般是将图片划分为固定大小的patching,之后对patching做一个线性变换得到embdding patching。除此之外还要对变换之后的patching加上一个position encoding,原因是如果不给模型提供patch的位置信息,那么模型就需要通过patchs的语义来学习拼图,这就额外增加了学习成本。不同于卷积中使用pooling来获取最后的image feature,Transformer加入了一个类别编码(cls_token)来输出最后的特征,所以encoder部分的输入一般是encoder的步长+1.
如果都是从一个包含个向量的sequence()通过线性变换得到:那么此时就变成了self-attention,这个时候就有个(key,value)对,那么
变种有Swin Transformer等,没咋了解。
-
ResNet瓶颈结构可以实现一下吗、残差结构怎么实现的,为什么要设置残差结构
参考博客:ResNet之残差结构的理解_小哈蒙德的博客-CSDN博客_残差学习的结构
左图是没有bottleneck模块,右图是使用了bottleneck模块。
使用 1×1的网络结构很方便改变维度。灵活设计网络,并且减小计算量。
残差结构计算过程:输入X,中间层为F(X),融合之后输出H(X) = F(X) + X
为什么要设置残差结构?首先要明白几个概念:过拟合,梯度消失/爆炸,网络退化
过拟合:在训练集上表现很好,在测试集上表现很差
梯度爆炸/消失:我们发现很深的网络层,由于参数初始化一般更靠近0,这样在训练的过程中更新浅层网络的参数时,很容易随着网络的深入而导致梯度消失,浅层的参数无法更新(反向传播公式中连乘太 多)。
网络退化:冗余层过多,导致在训练集上无法很好的训练网络
H(X) = F(X) + X,F(X)为残差项,通过学习残差F(x)=0来让该层网络恒等映射上一层的输入,使得有了这些冗余层的网络效果与没有这些冗余层的网络效果相同,这样很大程度上解决了网络的退化问题,也使得网络可以更深。
-
数据增强的常见方法(这个是因为我说我以前采集过数据,处理过数据)
参考博客:【技术综述】深度学习中的数据增强方法都有哪些? - 知乎 (zhihu.com)
数据增强分为有监督数据增强和无监督数据增强,有监督数据增强分为单样本数据增强和多样本数据增强,无监督的数据增强分为生成新的数据和学习增强策略
-
Python相比于C++的深拷贝、浅拷贝
深拷贝就是把要拷贝的对象整体拷贝出来,开辟一个空间进行存储,而浅拷贝对对象复制一份,而内部的子对象直接进行引用,相当于加了一个链接。.copy()就是实现浅拷贝,
-
Python中的迭代器、生成器、装饰器
参考博客:python迭代器、生成器和装饰器_sunchengquan的博客-CSDN博客_python装饰器和生成器
生成器:例如在生成列表时生成一个包含100万个元素的列表占用很大,而在Python中,有一边循环一边计算的机制,叫做生成器(generator),可以使用.next访问,但一般使用for循环,因为生成器也是 可迭代对象。
yield关键字:生成器在实例化时并不会被执行,而是等待调用__next__()方法时才开始运行,并且当程序运行完yield部分的代码后会保持当前状态并停止运行,等待下一次遍历时才恢复运行。
简而言之就是,函数是顺序执行,遇到return会返回,而generator在每次调用next()时执行,遇到yield语句返回,并且再次执行时从上次返回的yield语句地方继续执行
迭代器:
可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list,tuple,dict,set,str等;一类是generator ,包括生成器和带yeild的generator function
这些可以 直接作用于for循环的对象统称为可迭代对象:Iterable
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
装饰器:本质是函数(装饰其他函数)为其他函数添加附加功能 (略)
-
列表和元组的区别
列表可以修改里面存储的数据,元组一经创造无法修改。元组的优势是占用空间少,
-
SIFT算子
-
什么是光流图像,如何计算
计算机视觉--光流法(optical flow)简介_T-Jhon的博客-CSDN博客_光流法
-
颜色空间都有哪些,HSV空间公式
HSV色彩空间_wudaijun的博客-CSDN博客_hsv颜色空间
-
深度可分离卷积
-
Efficient-Net
-
Mobile-Net
- BN层?为什么使用BN层?BN层的公式是什么?
- pytorch中的交叉熵损失函数的细节实现
- 什么是梯度下降,常见的梯度下降算法有哪些?
- 如何调参?(常见的调参策略)
综合评价:需要扩展一下广度,例如问目标检测、图像分类、分割等东西的时候一问三不知,除此之外自己的工作要很熟悉,一般都是通过聊当前的工作来展开话题的。