面试问题记录
懂细节 - 手撕代码
手撕NMS代码
import numpy as np
def nms(dets,score):
x1 = dets[:,0]
y1 = dets[:,1]
x2 = dets[:,2]
y2 = dets[:,3]
area = (x2-x1+1)*(y2-y1+1)
scores = dets[:,4]
idx = scores.argsort()[::-1]
keep = []
while idx.size > 0:
i = idx[0]
keep.append(i)
xx1 = np.maximum(x1[i],x1[idx[1:]])
xx2 = np.minimum(x2[i],x2[idx[1:]])
yy1 = np.maximum(y1[i],y1[idx[1:]])
yy2 = np.minimum(y2[i],y2[idx[1:]])
w = np.maximum(xx2-xx1,0)
h = np.maximum(yy2-yy1,0)
overlap = w*h
iou = overlap/(area[i]+area[idx[1:]]-overlap)
idx_i = np.where(iou<=score_thr)[0]
idx = idx[idx_i+1]
return keep
一、机器学习
有哪些聚类算法?
二、深度学习
2.1 介绍卷积的底层实现方法
2.2 介绍VAE原理
【深度学习】VAE(Variational Auto-Encoder)原理
2.3 BN层在训练和推理过程中有什么不一样?
2.4 常用激活函数特点
怎么理解残差结构?为什么有效?
三、语义分割
语义分割有哪些损失函数?
U-Net为什么在扩散模型中有效?
四、目标检测
Anchor-free标签匹配方式
五、Transformer
5.1 Transformer在图像中是怎么训练的?
5.2 Transformer的计算复杂度,并如何降低?
5.3 Transformer的一些前沿改进
5.4 CNN和Transformer蒸馏的区别
六、注意力机制
6.1 多头注意力机制中的多头是指什么?
Multi-headed Self-attention(多头自注意力)机制介绍
七、多模态
7.1 介绍CLIP和BLIP
【论文&模型讲解】CLIP(Learning Transferable Visual Models From Natural Language Supervision)
7.2 多模态融合后,怎样知道最终结果受哪种模态影响更大?
八、生成对抗网络
8.1 VAE和GAN的比较
VAE 模型基本原理简单介绍(常用于异常检测)
GAN(生成对抗网络)的系统全面介绍
九、BEV
十、点云
其他
(自然语言处理)LSTM和RNN有什么区别?
当代八股:GPT4、InstructGPT、RLHF
十、【计算机基础知识和编程题】
- 无序数组的第K大个数
- 无重复字符的最长子串
- 指针和引用有什么区别
- 如何实现一个双向链表?
- 二维数组的顺时针遍历
- weak_ptr作用
- C++多线程编程
- 讲讲const关键字
- 手撕代码 二叉树路径
- emplace_back()和push_back()区别