计算机视觉(CV)面试与实战红宝书
最近接了不少练手/面试卡壳的私信:要么只会调YOLOv8落地不了,要么被面试官问“ResNet为什么能做深层”“你用的Focal Loss alpha/gamma怎么调”答不上来。
这篇红宝书就是来补这个缺口的——浓缩3年算法岗面试经验+2年落地踩坑,从底层到工程,文字只说“面试/实战要用的”,代码都是“可复现/可修改”的。
一、底层功底:面试敲门砖,调优基本功
1. 颜色空间与通道(🎯面试常考应用场景)
2. 滤波降噪(⚠️实战避坑:选对滤波器)
不用代码演示太干,直接给实战口诀+踩坑场景:
- 椒盐噪声(随机黑白点)→ 中值滤波
cv2.medianBlur,保护边缘 - 高斯噪声(画面模糊颗粒小)→ 高斯滤波
cv2.GaussianBlur - 磨皮美颜/保边去噪→ 双边滤波
cv2.bilateralFilter
3. 经典特征与边缘(🎯传统岗/入门面试必问)
Canny边缘检测(4步要背)
高斯去噪→梯度幅值/方向计算→非极大值抑制(“变瘦”边缘)→双阈值滞后连接(弱边缘依附强边缘)
特征对比(直接记面试答案)
二、深度学习核心:面试重灾区(占比60%+)
1. CNN基础(3个核心点)
局部感知+参数共享
降低参数量,提取由浅入深的特征:边缘→纹理→物体→场景。
1×1卷积的3个作用(🚀ResNet/MobileNet/Inception都用)
- 跨通道特征融合
- 降维/升维(减少计算量)
- 增加非线性(搭配激活函数)
BatchNorm的3个作用(🎯面试必背)
防止梯度消失/爆炸→加快收敛→允许更大学习率
2. 经典架构(只记最常考的ResNet残差块)
其他经典架构一句话记住:
- MobileNet:深度可分离卷积(Depthwise+Pointwise)→ 参数量/计算量约降为1/9
- Inception:多尺度卷积核并行→ 让网络自适应选感受野
- Transformer:ViT是基础,但实际落地常结合CNN(如Swin Transformer)
3. 目标检测(🎯算法岗核心题)
单双阶段对比(一句话总结)
NMS(非极大值抑制)
- 核心:按得分排序→ 抑制与最高分框IOU过大的冗余框
- 改进:Soft-NMS(降低分数而非直接删除,缓解密集遮挡问题)
三、实战调优:从学生到工程师的跨越
1. 损失函数(⚠️类别不平衡/分割必调)
Focal Loss(目标检测背景远多于前景)
降低易分类样本的权重,让模型专注于难分类样本(α=0.25-0.75,γ=2-5,经验值)。
Dice Loss(语义分割小目标)
直接优化IOU,缓解前景像素占比过小的问题。
2. 优化器(新手练手选Adam,调优转SGD)
四、工程部署:算法落地的最后一公里
1. 模型加速(🚀生产环境3件套)
- 量化:FP32转INT8,推理速度提升2-4倍,内存降为1/4(PyTorch有官方API)
- 知识蒸馏:大模型(教师)的软标签指导小模型(学生),精度接近大模型
- TensorRT:NVIDIA闭源推理引擎,优化算子融合,生产环境GPU部署标配
2. 性能调优检查清单(⚠️落地必查)
速度慢排查
- IO瓶颈:用
num_workers加载数据,预加载到内存 - 数据搬运:减少
cpu()/gpu()频繁切换 - 预处理慢:批量处理,用OpenCV代替PIL
精度低排查
- 输入尺寸对齐训练尺寸
- 数据增强强度是否合适(别把目标切没了)
- 类别不平衡问题(Focal Loss、过采样、类别权重)
五、常考计算题(避坑指南,不用背太多)
输出尺寸公式
(H/W:输入高/宽,P:填充,K:卷积核大小,S:步长)
面试示例:输入224×224,3×3卷积,步长1,填充1,输出尺寸?→ 224×224(“same”卷积)
六、总结
计算机视觉不是调包跑YOLO,这套体系是从学生到架构师的跨越:
- 底层功底:调优预处理的基础
- 深度学习:算法岗面试的核心
- 实战调优:落地的关键
- 工程部署:变现的最后一步

