🖼️ 计算机视觉(CV)面试与实战红宝书

一、 图像处理与传统特征(底层功底)

1. 颜色空间与通道

  • RGB:基于三原色叠加,符合显示器原理,但通道间耦合度高,不适合提取特征。
  • HSV:色调(H)、饱和度(S)、亮度(V)。常用场景:通过 H 通道进行颜色分割(如识别绿幕、红色交通标志)。
  • 灰度图:单通道,去除色彩干扰,保留结构和亮度信息,降低计算量。

2. 直方图均衡化

  • 原理:通过累积分布函数(CDF)将分布集中的直方图拉伸,使其在 $[0, 255]$ 范围内均匀分布。
  • 作用:增强图像对比度,尤其是处理过暗或过亮的场景。

3. 滤波:降噪三剑客

  • 高斯滤波:权重符合高斯分布,平滑图像。缺点:会模糊边缘。
  • 中值滤波:取窗口中值。特长:完美去除椒盐噪声,保护边缘能力强。
  • 双边滤波:不仅考虑空间距离,还考虑像素值差异。特长:保边去噪(磨皮美颜的核心算法)。

4. 边缘检测与传统特征

  • Canny 步骤:1.高斯去噪 $\rightarrow$ 2.计算梯度方向 $\rightarrow$ 3.非极大值抑制(变瘦) $\rightarrow$ 4.双阈值检测(滞后阈值连接边缘)。

  • SIFT vs ORB

  • SIFT:具有旋转、尺度、亮度不变性,精度高,但速度慢、有专利

  • ORB:FAST 特征点 + BRIEF 描述子,速度极快(实时),开源,但对尺度缩放稍弱。

  • RANSAC(随机采样一致性):在特征匹配中,通过不断随机抽样排除误匹配点(离群点),计算出最稳健的单应矩阵。


二、 深度学习核心(面试重灾区)

1. CNN 基础与原理

  • 卷积的作用:局部感知、参数共享。它提取的是局部空间特征(由浅入深:边缘 $\rightarrow$ 纹理 $\rightarrow$ 目标)。
  • 1×1 卷积:跨通道特征融合、改变通道数(降维/升维)、增加非线性。
  • BatchNorm (BN):将每一层输入标准化为均值 0 方差 1。作用:防止梯度消失、加快收敛、允许更大的学习率。
  • 激活函数
  • ReLU:解决梯度消失,计算快,但会导致神经元“坏死”(Dead ReLU)。
  • LeakyReLU:给负半轴一点点斜率,防止死区。
  • GELU:引入了随机性思想,Transformer 模型标配。

2. 经典架构进化

  • ResNet:提出残差结构(Residual Connection),解决深层网络训练时的退化问题(Identity Mapping 保证网络至少不比前一层差)。
  • MobileNet 设计:采用深度可分离卷积(Depthwise + Pointwise),将计算量降至常规卷积的约 $1/9$。
  • Inception:通过多尺度卷积核(1x1, 3x3, 5x5)并行,让网络决定哪种感受野更重要。

3. 目标检测

  • One-stage (YOLO/SSD):直接回归。速度快,适合移动端部署。
  • Two-stage (Faster R-CNN):先找候选框(RPN),再分类。精度高,适合医疗、精密分析。
  • NMS (非极大值抑制):按得分排序,抑制与最高分框 IOU 过大的冗余框。缺点:密集物体遮挡时会误删真实目标(改进方案:Soft-NMS)。
  • mAP:所有类别的平均准确率(Average Precision)的平均值。

三、 损失函数与优化(实战调优)

  • Focal Loss:解决样本不平衡。通过降低易分类样本权重,让模型专注于难分类样本(目标检测中的背景通常远多于前景)。
  • Dice Loss:专门用于语义分割,直接优化 IOU,缓解前景像素占比过小的问题。
  • 优化器选择
  • SGD:稳定但慢,容易陷入局部最优。
  • Adam:自适应学习率,收敛极快,通常是新手练手的首选。

四、 工程部署与项目落地(道满特色)

1. 模型加速

  • 量化:将 FP32 转为 INT8。能极大提升推理速度(尤其在你的 6Mbps 服务器环境中),降低内存占用。
  • 蒸馏:教师模型(大模型)指导学生模型(小模型),让小模型学会大模型的输出分布。
  • TensorRT:NVIDIA 闭源推理加速引擎,优化算子融合,是生产环境部署的标配。

2. 精度与速度定位

  • 速度慢:看是 IO 瓶颈(图片预处理慢)、CPU 预处理慢还是 GPU 计算满。检查是否有频繁的 cpu()gpu() 数据搬运。
  • 精度低:检查数据增强是否过火、输入尺寸是否对齐训练尺寸、是否有严重的类别不平衡。

五、 常考计算题(避坑指南)

  • 输出尺寸计算

$$H_{out} = \left\lfloor \frac{H_{in} + 2P - K}{S} \right\rfloor + 1$$

($H$:输入高, $P$:填充, $K$:卷积核大小, $S$:步长)

  • 感受野 (RF):层数越深,感受野越大。大的感受野有利于看清“全局大目标”,小的有利于“局部细节”。
  • 椒盐噪声 vs 高斯噪声
  • 椒盐:随机的黑白点。用中值滤波
  • 高斯:像素值符合正态分布的波动。用高斯滤波

💡 给“道满 Python AI”教程的总结

在你的教程中,可以这样引导学员:

“做 CV 不只是调包跑 YOLO。当你发现模型在 6Mbps 带宽下推理延迟 2 秒时,你需要量化;当你在做验证码识别发现精度不稳时,你需要回头看图像增强损失函数。这套知识体系,就是从学生到架构师的跨越。”

这个总结涵盖了你大纲的所有核心。你想针对其中某一个模块(比如目标检测的计算细节),让我为你写一段可以直接作为课程讲义的代码演示吗?