3、图像分类基础:图像分类任务定义、常见模型(MobileNet、EfficientNet)简介、分类标签与置信度概念
在 Raspberry Pi 上部署 TensorFlow Lite 模型之前,我们首先需要理解图像分类任务的核心本质。图像分类是计算机视觉中最基础、应用最广泛的任务之一,它解决的是"这张图片里有什么"的问题。本章将系统梳理图像分类的任务定义、主流轻量级模型的设计思想,以及分类结果中标签与置信度的数学含义与工程解读。这些知识将直接决定你在后续章节中如何选择合适的模型、如何解读推理输出,以及如何优化部署策略。
上图展示了图像分类任务的完整链路:从输入图像到预处理、特征提取、分类头,最终输出标签与置信度。在 Raspberry Pi 这类资源受限的嵌入式设备上,模型的选择和优化尤为关键。下面我们将深入拆解每个环节的核心原理。
3.1 图像分类任务定义与数学本质
图像分类(Image Classification)的目标是给定一张输入图像,从预定义的类别集合中预测其所属的类别。形式化地,假设我们有 C 个类别,输入图像为 x,分类模型 f 输出一个 C 维向量 y = f(x),其中 y_i 表示图像属于第 i 类的概率估计。模型最终预测的类别为 argmax(y)。
在深度学习中,这个任务通常通过卷积神经网络(CNN)实现。CNN 通过多层卷积、池化、激活函数等操作,自动学习从原始像素到高层语义特征的映射。与传统的图像处理算法(如 HOG、SIFT 特征 + SVM 分类器)相比,深度 CNN 能够端到端地学习特征表示,在复杂场景下具有显著优势。
对于 Raspberry Pi 部署而言,图像分类任务有两个关键约束:计算资源有限(CPU 而非 GPU)和内存受限(通常 1-8GB RAM)。因此,我们不能直接使用 VGG16、ResNet152 这类参数量巨大的模型,而需要选择专为移动端设计的轻量级架构。
3.2 常见轻量级模型:MobileNet 与 EfficientNet
MobileNet 系列是 Google 专为移动端和嵌入式设备设计的轻量级 CNN 架构。其核心创新是深度可分离卷积(Depthwise Separable Convolution),将标准卷积分解为深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)两步,从而将计算量降低约 8-9 倍。
| 模型版本 | 核心创新 | Top-1 准确率 (ImageNet) | 参数量 | 树莓派4 推理延迟 |
|---|---|---|---|---|
| MobileNetV1 | 深度可分离卷积 | 70.6% | 4.2M | ~80ms |
| MobileNetV2 | 倒残差结构 + 线性瓶颈 | 72.0% | 3.4M | ~65ms |
| MobileNetV3 | NAS 搜索 + 硬件感知 | 75.2% | 2.5M | ~55ms |
| EfficientNet-Lite | 复合缩放 + 深度可分离 | 76.8% | 5.3M | ~95ms |
MobileNetV2 引入了倒残差结构(Inverted Residual Block),先通过 1×1 卷积升维,再进行深度卷积,最后用 1×1 卷积降维。这种设计在保持信息流的同时,大幅减少了计算量。其线性瓶颈(Linear Bottleneck)层去除了最后的 ReLU 激活,避免低维空间中的信息丢失。
MobileNetV3 结合了神经架构搜索(NAS)和硬件感知设计,在保持精度的同时进一步压缩了模型大小。它引入了 SE(Squeeze-and-Excitation)注意力模块和 h-swish 激活函数,在树莓派上表现尤为出色。
EfficientNet 系列的核心思想是复合缩放(Compound Scaling),即同时调整网络的深度、宽度和输入分辨率。EfficientNet-Lite 是专为 CPU 推理优化的版本,去除了对 GPU 友好的 SE 模块,更适合树莓派这类设备。
3.3 分类标签与置信度:从概率到决策
当模型完成前向推理后,输出的是一个 C 维向量,通常经过 Softmax 函数归一化,使得所有元素之和为 1,每个元素值在 [0,1] 区间内。这个向量中的每个值即为对应类别的置信度(Confidence),表示模型认为输入图像属于该类别的概率。
例如,对于一个三分类任务(猫、狗、鸟),模型输出可能为:
类别: 猫 狗 鸟
概率: 0.02 0.91 0.07
此时,模型预测类别为"狗",置信度为 0.91。但置信度并不等同于真实概率,它只是模型内部对自身预测的"信心程度"。在实际应用中,我们需要关注以下几点:
- 置信度阈值:当最高置信度低于某个阈值(如 0.5)时,模型可能对输入图像不确定,此时应输出"未知类别"或请求人工确认。
- Top-K 输出:有时前几个类别的置信度非常接近,此时仅取 Top-1 可能不够可靠,可以输出 Top-3 或 Top-5 作为候选。
- 温度缩放(Temperature Scaling):在部署时,可以通过调整 Softmax 的温度参数来改变置信度的分布。温度 >1 会使分布更平滑(降低置信度),温度 <1 会使分布更尖锐(提高置信度)。
3.4 实战场景:树莓派上的垃圾分类模型选型
假设我们要在树莓派 4B 上部署一个垃圾分类系统,需要识别 6 类垃圾(塑料、纸张、玻璃、金属、有机物、其他)。我们面临以下约束:
- 树莓派 4B 的 CPU 为 ARM Cortex-A72(4 核 1.5GHz),无 GPU 加速。
- 摄像头采集帧率为 30fps,但推理不需要实时,允许 200ms 以内的延迟。
- 内存 4GB,但 TensorFlow Lite 推理时峰值内存占用需控制在 500MB 以内。
- 训练数据约 5000 张图片,每类约 800 张。
我们对比了三种候选模型:MobileNetV2、MobileNetV3-Small、EfficientNet-Lite0。在树莓派上实际测试结果如下:
| 模型 | 量化方式 | 推理延迟 | 峰值内存 | 验证集准确率 |
|---|---|---|---|---|
| MobileNetV2 | 动态范围量化 | 68ms | 210MB | 92.3% |
| MobileNetV3-Small | 动态范围量化 | 52ms | 180MB | 91.8% |
| EfficientNet-Lite0 | 动态范围量化 | 88ms | 260MB | 93.1% |
从结果来看,MobileNetV3-Small 在延迟和内存方面最优,但准确率略低;EfficientNet-Lite0 准确率最高,但延迟接近 90ms。考虑到垃圾分类场景中,用户手持物品等待识别,90ms 的延迟完全可接受,因此我们最终选择 EfficientNet-Lite0 作为部署模型。
在部署过程中,我们还发现了一个关键问题:模型对"其他"类别的置信度普遍偏低(平均 0.65),而对"塑料"类别的置信度较高(平均 0.88)。分析原因是"其他"类别的训练样本多样性过高,导致特征空间过于分散。解决方案是增加"其他"类别的训练样本数量,并引入数据增强(如随机裁剪、颜色抖动)来提升模型的泛化能力。
3.5 常见误区与总结
在图像分类模型的部署实践中,以下误区值得特别注意:
- 忽视输入尺寸:MobileNet 系列默认输入为 224×224,但实际部署时可能需要调整。输入尺寸越大,计算量越大,但精度不一定线性提升。建议在 128×128 到 224×224 之间做实验。
- 忽略归一化参数:TensorFlow Hub 上的模型通常要求输入像素值在 [0,1] 或 [-1,1] 范围内,且可能需要特定的均值/方差归一化。直接使用原始像素值会导致推理结果异常。
- 混淆置信度与准确率:置信度是模型对单个样本预测的"信心",准确率是模型在整体数据集上的表现。两者不能直接等同。
- 未做量化感知训练:如果使用后训练量化(Post-training Quantization),模型精度可能会有 1-3% 的下降。对于精度敏感的场景,应使用量化感知训练(Quantization-aware Training)来缓解。