整理不易,手有余香请点个赞吧!
本文主要介绍计算机视觉/深度学习领域多个方向的知识点,包括目标检测、目标跟踪、ReID、关键点估计、GAN等,如有不当之处,敬请指正,感谢各位大佬!有些问题不免解释不全面或者暂时未回答,欢迎各位读者踊跃解答哈!
图像分类
1. Mobilenet为什么快
2. 介绍残差网络Residual Network
3. ResNet为什么不用Dropout?ResNet用BN;BN在训练过程对每个单个样本的forward均引入多个样本(Batch个)的统计信息,相当于自带一定噪音,起到正则效果;所以也就基本消除了Dropout的必要。
4. SENet介绍,Squeeze-Excitation结构是怎么实现的?
5. 图像标准化用mean=[0.485, 0.456, 0.406] and std=[0.229, 0.224, 0.225]
6. 图像分类算法优化技巧
7. 是否做过移动端,介绍移动端网络
8. 移动端模型的部署和优化模型压缩:tf bazel
tensorflow模型压缩
pytorch模型压缩
模型剪枝:Identifying optimal techniques to compress models by reducing the number of parameters in them is important.
模型量化:Quantization involves converting the weights and activations of your model from float to int, which can result in smaller model size and faster inference with only a small hit to accuracy.
模型转换:ONNX
模型部署
9. 部署环境下的推理优化
目标检测https://zhuanlan.zhihu.com/p/268714239
1. 介绍Faster RCNN, Cascade R-CNN
2. 介绍YOLO
YOLOv1YOLOv1的基础网络比较浅,Grid为7*7,Anchors为2,所以精度不太高。因其只预测两个Anchors,所以对一个小格出现多个物体的情况预测不好。
损失函数=坐标预测误差+含object的box置信度预测误差+不含object的box置信度预测误差+每个格子的类别预测误差
YOLOv2YOLOv2以Darknet19为基础网络,Grid变为13*13,并用k-means选取5个Anchors,不使用FC层,在不损失精度的前提下提高了Recall。并用BN层代替了Dropout防止过拟合。
YOLOv3
YOLOv4
Scaled-YOLOv4
PP-YOLO
YOLOv5Group Norm
Modulated Deformable Convolution
Focus
Spatial Pyramid Pooling
FPN-PAN
coord conv
drop block
SAM
3. 介绍SSD
4. 目标检测的其他方法
Dense detectorOne-stageMobileNet-SSD
MobileNet-YOLOv3
DPM,YOLO,RetinaNet
Anchor-free
Dense-to-sparse detectorTwo-stageR-CNN家族
Sparse detector
5. SSD和YOLO多尺度特征在训练和推理时,怎么分配anchors浅层特征:感受野较小,使用较小anchors,负责小目标;
中层特征:感受野中等大小,分配中等大小的anchors,负责中等目标检测;
深层特征:感受野较大,使用较大anchors,负责大目标的检测。
训练和推理时的区别:
6. 目标检测中的正负样本不平衡问题
7. 类别不均衡如何解决(长尾数据,类不平衡)
8. 小目标检测方法,GAN怎么用于小目标检测
8. 如何提高小目标检测?数据增强
Oversampling
小目标Augmentation
特征融合、多尺度
利用上下文信息,或者目标之间建立联系
两阶段检测小技巧:ROI pooling被ROI align替换
GAN
超分辨率:提升图像分辨率
9. 介绍并写NMS,计算IOU代码
NMS
NMS, Soft-NMS及其变体
10. 介绍目标检测训练过程Training ProceduresThe template of training a neural network with minibatch stochastic gradient descent is shown in Algorithm 1. In each iteration, we randomly sample b images to compute the gradients and then update the network parameters. It stops after K passes through the dataset. All functions and hyper-parameters in Algorithm 1 can be implemented in many different ways.
11. Cascade RCNN相比于RCNN做了哪些改进,为了干什么
12. SSD相比于YOLO做了哪些改进
13. 目标检测单阶段和双阶段优缺点,双阶段的为什么比单阶段的效果要好
14. 介绍RCNN系列
15. 物体类别识别错误1. 多类别目标检测 + 正则化约束/人脸识别约束方法
2. 二分类目标检测 + 物体识别/细粒度识别
15. res50和res101都适合目标检测吗
15. 目标检测算法优化技巧
图像分割
1. 介绍BCE dice loss
2. 图像分割新方法
多目标跟踪
1. 介绍多目标跟踪算法deep_sort流程,级联匹配
2. 介绍匈牙利算法输入:仅包含非负元素的n×n方阵。
步骤1:减去行最小值对于每一行,找到最低的元素,然后从该行的每个元素中减去它。
步骤2:减去列最小值同样,对于每一列,找到最低的元素,然后从该列的每个元素中减去它。
步骤3:用最少的行数覆盖所有零使用最少数量的水平和垂直线覆盖结果矩阵中的所有零。如果需要n行,则零之间存在最佳分配。算法停止。
如果少于n行,请继续执行步骤4。
步骤4:生成额外的零在步骤3中找到一条线未覆盖的最小元素(称为k)。从所有未发现的元素中减去k,然后将k添加到所有覆盖两次的元素中。
3. 介绍卡尔曼滤波
4. 多目标跟踪中最大的问题是什么,怎么解决问题:ID跳变;
解决方法:优化ReID网络;使用新方法TubeTK;
5. 多目标跟踪新方法
6. 多目标跟踪如何提高准确率
ReID
1. ReID介绍,介绍ReID网络结构及损失函数
网络模型,损失函数(triplet loss, id loss),训练方法;网络结构:input -> features模块+logits模块 -> loss函数
Features block:backbone(Resnet50) + flatten + dropout + fc + l2_normalize -> features[128 dims]
Logits block:Learnable params: weights[feature_dim, num_classes], scale[1]
logits = scale * matmul(features, l2_normalize(weights))
Loss function:cosine-softmax(sparse_softmax_cross_entropy): need logits
softmargin_triplet_loss: need features to calc dist, then sample pos and neg
magnet_loss: need features to calc dist
2. 介绍triplet loss,如何取正负样本常规:每个batch中有id*N个图像,取正正、正负样本;
ours: 一个batch中,正正(取距离最大的,可能取到自己),正负(取距离最小的);
3. 还知道ReID的哪些内容介绍ReID优化点;
4. ReID中如何解决遮挡问题
5. ReID中还了解别的损失函数吗
6. ReID有什么优化点
优化点数据Input Size and Batch Size:测试不同组合哪个最优;
数据增强随机擦除增广Random Erasing Augmentation
网络结构Last Stride: 最后一个conv的stride改为1;
BNNeck: 主干网输出的欧式约束的特征
送入triplet loss;
+BN+FC后送入ID loss(Softmax loss);
Label Smoothing: 对ID loss(Softmax loss)进行;
损失函数Softmax
Triplet hard
Softmax + Triplet hard
Center Loss
训练策略Warmup Learning
Standard Baseline
Modified Baseline
关键点估计
1. 介绍姿态估计的处理流程自顶向下方法:先检测人的bounding box,再用single的方法检测每个人所有点。算法 RMPE、Mask-RCNN、Alphapose
自底向上方法:先catch所有关节,再关联人。算法 PAF(OpenPose)
总体来说,1和2的对比
系统负载:抓取实时流,自顶向下方法多人时会有卡顿;可采用从队列取最新帧方法解决卡顿。
2. SPPEstackedhousglass,使用全卷积网络,以残差连接作为基础模块来构建网络模型,残差模块不改变特征的空间大小,只改变特征通道数量。
使用四阶hourglass来做预测。
3. 介绍全卷积网络
4. 关键点检测用的什么方法做的全连接回归值
热图方法
全连接回归+热图
5. 分析全连接回归和高斯热图两种方式优劣
(1)全连接回归优点:训练和推理速度快;是端到端全微分模型;
缺点:空间泛化能力丢失,被reshape成一维向量,严重依赖于训练数据的分布,容易过拟合。
(2)高斯热图优点:输出特征图大,空间泛化能力强,精度高;
缺点:训练和推理慢;不是端到端全微分模型;结果输出是整数(全连接输出是浮点数),会丢失精度,存在理论误差下界;MSE loss可能会导致学习出来的结果出现偏移。
6. FC怎么把特征的空间信息弄丢了特征和输出被reshape成一维向量,空间泛化能力丢失。
7. 热图的缺点,优化方法优化方法:使用矩阵转换,将模型转换为全可微模型。
8. 用PixelShuffle后,关键点如何对应
9. Inference推理时做数据增强为什么有用?如果训练时不做数据增强,推理时做,会有用吗?
行人属性识别
1. 两个不同的属性数据集分别有不同的属性,如何在一起训练(一个有10个属性,一个有6个)
2. 说一下CBN
GAN
1. 介绍GAN原理,损失函数
判别模型由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测模型,生成模型由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型,即P(Y|X)= P(X,Y)/ P(X)。
GANs 简单的想法就是用两个模型,一个生成模型,一个判别模型。判别模型用于判断一个给定的图片是不是真实的图片(从数据集里获取的图片),生成模型的任务是去创造一个看起来像真的图片一样的图片。
而在开始的时候这两个模型都是没有经过训练的,这两个模型一起对抗训练,生成模型产生一张图片去欺骗判别模型,然后判别模型去判断这张图片是真是假,最终在这两个模型训练的过程中,两个模型的能力越来越强,最终达到稳态。
损失函数∶
优化D∶
优化G∶
判别模型的损失函数:
生成模型的损失函数∶
即生成模型最终的损失函数为∶
2. 介绍StyleGAN,损失函数Mapping Network:StyleGAN在ProGAN的基础上添加了Mapping Network(由8层全连接层组成),将随机噪声向量映射到中间向量。中间向量不必遵循训练数据分布,可以减少特征之间的相关性,缓解了特征纠缠现象。
Synthesis Network:在合成网络中,对每个分辨率级别的卷积层进行标准化,同时把中间向量通过一个新的全连接层转换为该卷积层输出特征的比例和偏差,从而定义卷积中每个卷积核的重要性。这个调优操作成为样式模块(AdaIN)将信息从w'转换为可视的表达方式。
删除传统输入:
加入随机噪声:
样式混合:
在w中的截断技巧:
Loss函数:WGAN, WGAN-GP
3. 介绍人脸编码网络网络结构:backbone+head -> [None, 18, 512]
样本:StyleGAN人脸生成图像;
标签:StyleGAN人脸生成图像对应的dlatents编码;
损失函数:
4. 介绍人脸属性编辑方法方向向量样本:为生成人脸的dlatents[18, 512],将其reshape为[18*512]的向量;
标签:对生成人脸图像进行属性检测,得到属性识别结果,如性别(男、女),年龄(数值型或离散型),表情等;根据实际语义,对属性进行二值化,得到二值标签[0/1];
训练:用LR进行二分类训练,得到单个属性的方向向量
[18*512],将其reshape为方向矩阵
[18, 512];
对于真实图像用编码网络得到真实图像在StyleGAN空间中的dlatents编码
;
用方向矩阵
和调整幅度
,对真实图像进行人脸属性编辑,即
人脸检测/识别
1. 人脸检测算法
2. 介绍人脸识别损失函数Softmax loss标准Softmax损失函数SphereFace(Angular Softmax, A-Softmax) Loss权重归一化,偏置置为0(||W_i||=1, b_i=0);
θ乘以决策余量m;CosFace Loss(Large Margin Cosine Loss, LMCL)权重归一化,偏置置为0(||W_i||=1,b_i=0);
特征向量归一化到固定值s;
cos(θ)加上m(加在了余弦上);ArcFace LossL2归一化来修正单个权重||W_j||=1,固定嵌入特征||x_i|,并将其重新缩放成s;
在xi和Wji之间的θ上加上角度间隔m(加在了角θ上);决策边界SphereFace:Multiplicative Angular Margin,乘法角度间隔
CosFace:Additive Cosine margin,加法余弦间隔
ArcFace:Additive Angular Margin,加法角度间隔
3. 介绍FaceNet,ArcFaceArcFace: 加法角度间隔Softmax loss预处理(人脸对齐):人脸关键点MTCNN检测,再通过相似变换得到被裁剪的对齐人脸;
训练(人脸分类器):ResNet50 + ArcFace loss
测试:从人脸分类器FC1层的输出中提取512维的嵌入特征,对输入的两个特征计算余弦距离,再来进行人脸验证和人脸识别;
实际代码中训练时分为Resnet model + Arc head + Softmax lossResnet model输出特征;
Arc head将特征与权重间加上角度间隔后输出预测标签,求Acc是就用这个输出标签;
Softmax loss求预测标签和实际的误差。
4. 介绍人脸识别方法分类
5. 人脸识别中跨年龄数据如何优化
6. 人脸识别优化方法
活体检测
1. 介绍活体检测,相关方法分类问题,可看成二分类(真 or 假);也可看成多分类(真人,纸张攻击,屏幕攻击,面具攻击)
OCR
文本检测
1. 介绍文本检测方法
2. 长的或宽的目标如何检测,如场景文本检测根据目标的尺度设置合适的anchors
根据感受野设置不同尺度的特征
卷积核可以用deform conv
3. 语义分割是否可用于文本检测可以,可用于行文本检测等
文本识别
1. 介绍CRNN
布局分析
细粒度图像识别
动作识别
1. 介绍动作识别算法,是否上线C3D
光流
CNN+LSTM
框架
TensorFlow
1. tf.variable_scope和tf.name_scope前者多用于共享变量,可作用于tf.get_variable()和tf.Varialbe()及ops;
后者多用于使graph层次清晰,可作用于tf.Varialbe()和ops。
2. TensorFlow和PyTorch的区别实现方式:符号式编程 vs 命令式编程
图的定义:动态定义 vs 静态定义
可视化:tensorboard vs nothing
NLP
1. 文本分类
PyTorch
1. 使用PyTorch常见的4个错误
2. Dataloader的Sampler
3. 介绍torch.nn
4. PyTorch Hook