4、图像分类基础:图像表示、像素、通道、分类任务定义、常见图像分类模型(MobileNet、EfficientNet等)

在进入 Edge Impulse 图像分类项目之前,必须先建立对图像数据本质的清晰认知。图像在计算机中并非“图片”,而是一组结构化存储的数值张量。无论是部署在 MCU 上的 96×96 灰度图,还是云端服务器上的 224×224 RGB 三通道图,其底层表示逻辑完全一致。本章将系统梳理图像的数值化表示、分类任务的形式化定义,以及两类在边缘端最具代表性的轻量级模型——MobileNet 与 EfficientNet 的设计哲学与选型依据。这些知识将直接决定你在 Edge Impulse 中如何配置预处理参数、选择模型架构以及评估部署可行性。

图像分类知识框架与端侧部署链路 图像数值表示 • 像素:0-255 离散强度 • 通道:灰度1 / RGB 3 / RGBA 4 • 张量形状:H × W × C • 归一化:/255 → [0,1] 分类任务定义 • 输入:图像张量 x ∈ R^H×W×C • 输出:类别概率 P(y|x) • 损失:交叉熵 • 评估:Top-1 / Top-5 准确率 轻量级模型 • MobileNetV1/V2/V3 • EfficientNet-Lite/B0 • 深度可分离卷积 • 神经架构搜索(NAS) Edge Impulse 端侧部署链路 图像采集 预处理 模型推理 后处理 分辨率/帧率 缩放/归一化 MobileNet/EfficientNet Softmax/阈值

上图展示了本章的核心知识框架:左侧是图像的数值化表示,中间是分类任务的形式化定义,右侧是轻量级模型,底部则串联起 Edge Impulse 的端侧部署链路。理解这三者的关系,是后续在 Edge Impulse 平台上完成数据采集、模型训练与部署的前提。

4.1 图像的数值化表示:从像素到张量

图像在计算机视觉系统中不是“视觉对象”,而是由离散数值构成的多维数组。一张灰度图像可视为一个二维矩阵,每个元素称为一个像素(Pixel),其数值表示该点的亮度强度。对于 8 位深度图像,像素值范围是 0(纯黑)到 255(纯白)。彩色图像则通常采用 RGB 颜色模型,由三个通道(Channel)叠加而成——红色(Red)、绿色(Green)、蓝色(Blue),每个通道都是一张独立的灰度图,三者共同决定最终颜色。

在深度学习框架中,图像被表示为张量(Tensor),其形状通常为 高度 H × 宽度 W × 通道数 C。例如一张 96×96 的 RGB 图像,其张量形状为 96×96×3,展开后共有 27,648 个数值。若采用浮点型存储,每个数值占 4 字节,则单张图像需要约 110 KB 内存。这一数字在 MCU 上相当可观——许多 Cortex-M4 内核的开发板仅有 256 KB RAM,因此 Edge Impulse 默认将图像缩放至 96×96 或更低分辨率,并支持将 RGB 转换为灰度(C=1)以进一步压缩数据量。

核心要点:图像预处理的第一步是“归一化”。原始像素值 0-255 的整数范围对神经网络优化不利,通常需要除以 255 映射到 [0,1] 浮点区间。Edge Impulse 的 DSP 模块会自动完成这一操作,但理解其原理有助于排查推理结果异常的问题。

4.1.1 通道与颜色空间的选择

通道数的选择直接影响模型参数量与推理速度。灰度图(C=1)的输入数据量仅为 RGB 的 1/3,对于区分背景与前景差异明显的任务(如零件缺陷检测、黑白文档分类)效果足够。而 RGB 通道保留了颜色信息,适用于需要区分颜色特征的任务(如水果成熟度判断、交通信号灯识别)。RGBA 多出的 Alpha 通道通常用于透明背景处理,在边缘端分类任务中极少使用。

Edge Impulse 在数据采集阶段允许用户选择“RGB”或“灰度”模式。若目标设备是低端 MCU,建议优先尝试灰度模式——这不仅减少内存占用,还能缩短推理时间。但需注意,灰度化会丢失颜色对比信息,若训练集与测试集的光照条件差异较大,灰度模型的鲁棒性可能下降。

4.1.2 图像分辨率与内存预算

分辨率决定了输入张量的尺寸,是端侧部署的首要瓶颈。以 96×96×3 的输入为例,第一层卷积的输入特征图占用 96×96×3×4 字节 ≈ 110 KB。若模型中间层特征图尺寸较大,内存峰值可能达到数 MB。因此,Edge Impulse 的模型配置界面会明确显示“RAM 预估”与“Flash 预估”,帮助开发者判断当前模型是否适配目标硬件。

输入尺寸通道数张量元素数浮点内存 (FP32)典型应用场景
32×3211,0244 KB超低端 MCU,简单二分类
48×4836,91227 KBCortex-M4,简单物体识别
96×96327,648110 KBCortex-M7/A 系列,多分类
160×160376,800300 KB高性能 MCU 或 MPU
224×2243150,528588 KB边缘 Linux 网关,高精度

上表展示了不同输入尺寸对内存的直接影响。在 Edge Impulse 中,若目标设备 RAM 为 512 KB,则 160×160 的 RGB 输入已接近极限,必须配合模型量化(INT8)才能安全部署。

4.2 图像分类任务的形式化定义

图像分类是监督学习中最基础的任务类型。给定一张输入图像 x,模型需要预测其所属类别 y ∈ {1, 2, ..., K},其中 K 为类别总数。从概率视角看,模型学习的是条件概率分布 P(y|x),最终输出一个 K 维向量,每个分量表示该图像属于对应类别的概率。训练过程通过最小化交叉熵损失函数来优化模型参数,使预测分布逼近真实标签的 one-hot 编码。

在 Edge Impulse 中,分类任务的实现流程被封装为三个步骤:数据采集 → 模型训练 → 部署测试。但理解底层数学定义有助于正确设置训练参数。例如,Edge Impulse 的“训练轮数(Epochs)”默认值为 30,学习率默认 0.001,这些超参数直接影响交叉熵损失能否收敛到全局最优。

4.2.1 类别不平衡与数据增强

实际项目中,各类别样本数量往往不均衡。例如工业质检中“合格品”数量远多于“缺陷品”。若不处理,模型会偏向多数类,导致少数类召回率极低。Edge Impulse 提供“数据平衡”选项,可自动对少数类进行过采样或对多数类进行欠采样。此外,数据增强(随机旋转、裁剪、亮度调整)能增加样本多样性,提升模型泛化能力。但需注意,增强操作必须在训练时随机进行,而非在采集阶段固定变换。

风险提示:在 Edge Impulse 中启用数据增强后,模型训练时间会显著增加。对于 MCU 部署场景,过度增强可能导致模型过于鲁棒而忽略关键细节特征,反而降低准确率。建议从轻度增强(水平翻转、±10°旋转)开始,逐步增加强度并观察验证集准确率变化。

4.2.2 评估指标:Top-1 与 Top-5 准确率

分类模型的评估通常采用 Top-1 准确率(预测概率最高的类别是否正确)和 Top-5 准确率(真实类别是否出现在概率前五的预测中)。在边缘端场景,Top-1 更常用,因为最终部署时只取最高概率类别作为输出。Edge Impulse 的模型评估页面会同时显示这两个指标,并给出混淆矩阵(Confusion Matrix),帮助开发者识别易混淆的类别对。

4.3 常见轻量级图像分类模型

传统卷积神经网络(如 VGG、ResNet)在 ImageNet 上表现优异,但参数量动辄数十 MB,无法在 MCU 上运行。为此,研究者设计了专门面向移动端/嵌入式设备的轻量级模型。本章重点介绍 MobileNet 系列与 EfficientNet 系列,它们是 Edge Impulse 内置模型库中最常用的两类。

4.3.1 MobileNet:深度可分离卷积的工程实践

MobileNetV1 的核心创新是深度可分离卷积(Depthwise Separable Convolution),它将标准卷积分解为两个步骤:深度卷积(Depthwise Convolution)逐通道进行空间滤波,然后逐点卷积(Pointwise Convolution)用 1×1 卷积核进行通道融合。这种分解方式将计算量降低为原来的 1/8 至 1/9,而精度损失仅在 1% 左右。

MobileNetV2 在此基础上引入线性瓶颈(Linear Bottleneck)和倒残差结构(Inverted Residual)。倒残差先通过 1×1 卷积升维,再经过深度卷积,最后用 1×1 卷积降维,并在跳跃连接中仅对降维后的特征进行残差相加。这种设计使得梯度在深层网络中传播更顺畅,同时保持了低计算量。MobileNetV3 则结合了神经架构搜索(NAS)与硬件感知调优,进一步提升了效率。

// Edge Impulse 中 MobileNetV2 96x96 模型的典型配置示例
// 输入: 96x96x3 归一化浮点张量
// 主干: MobileNetV2 宽度乘数 0.35
// 分类头: 全局平均池化 + Dense(64) + Dense(N_CLASSES)
// 参数量: ~0.7M (FP32)
// RAM 预估: 约 180 KB (含中间特征图)
// Flash 预估: 约 2.8 MB (FP32) / 约 0.7 MB (INT8 量化)

4.3.2 EfficientNet:复合缩放的精度效率平衡

EfficientNet 通过复合缩放(Compound Scaling)方法,同时调整网络的深度、宽度和输入分辨率,在 ImageNet 上取得了当时最优的精度-效率平衡。其基础版本 EfficientNet-B0 采用 NAS 搜索得到的基线网络,后续版本 B1-B7 通过复合系数 φ 统一缩放三个维度。

对于边缘端部署,EfficientNet-Lite 系列移除了 SE 模块(Squeeze-and-Excitation)中的某些运算,并针对 CPU/MCU 优化了激活函数,使其更适合无 GPU 加速的设备。在 Edge Impulse 中,EfficientNet 模型通常以“EfficientNet-Lite0”或“EfficientNet-B0”形式提供,输入分辨率可配置为 96×96 或 128×128。

模型输入尺寸参数量Top-1 准确率 (ImageNet)MCU 可行性
MobileNetV1 0.2596×960.5M~55%可行 (Cortex-M4)
MobileNetV2 0.3596×960.7M~60%可行 (Cortex-M7)
MobileNetV3-Lite96×960.9M~63%可行 (Cortex-M7)
EfficientNet-Lite0128×1284.7M~75%边缘 MPU 或 Linux
EfficientNet-B0224×2245.3M~77%不推荐 MCU

上表对比了不同模型的参数量与精度。值得注意的是,参数量并非唯一决定因素——MobileNetV2 0.35 虽然参数量小于 EfficientNet-Lite0,但由于其结构特性,实际推理速度可能更慢。在 Edge Impulse 中,建议直接使用平台内置的基准测试功能,在目标硬件上实测推理时间。

4.4 案例拆解:基于 MobileNetV2 的 PCB 缺陷分类

为将上述理论应用于实际,我们设计一个 PCB 板缺陷检测场景。目标是在一块 STM32H743 开发板(Cortex-M7 @ 480 MHz,1 MB RAM)上部署模型,区分“正常”、“短路”、“缺件”三类。

初始约束:开发板 RAM 为 1 MB,Flash 为 2 MB。工业相机采集的图像为 640×480 RGB,但 MCU 无法直接处理,需在 Edge Impulse 中设置裁剪与缩放至 96×96。

操作流程:

  1. 数据采集:使用 Edge Impulse 的“Images”上传功能,每类采集 200 张图像,共 600 张。按 8:2 划分训练集与验证集。
  2. 预处理:在“Create Impulse”页面设置图像宽度 96、高度 96,颜色通道选择 RGB。DSP 模块选择“Image”并启用“Normalize”选项。
  3. 模型选择:在“Model”页面选择“Transfer Learning (MobileNetV2)”作为特征提取器,设置训练轮数为 40,学习率 0.0005。分类头使用 Dense(32) + Dropout(0.2) + Dense(3, softmax)。
  4. 训练与评估:训练完成后,验证集 Top-1 准确率为 94.2%。混淆矩阵显示“短路”与“缺件”存在 5% 的互相误判,原因是两者在 96×96 分辨率下视觉特征相似。
  5. 部署测试:选择“STM32CubeMX”部署目标,启用 INT8 量化。量化后模型 Flash 占用 680 KB,RAM 峰值 210 KB,单次推理耗时 85 ms,满足 10 FPS 的实时性要求。

结果对比:若改用 EfficientNet-Lite0(输入 128×128),准确率提升至 96.8%,但 RAM 峰值增至 480 KB,推理耗时 210 ms,超出实时性预算。最终方案选择 MobileNetV2 0.35 并接受 94.2% 的准确率。

复盘经验:在 MCU 上部署图像分类模型时,准确率与延迟的权衡往往比模型理论精度更重要。建议先以最小可行模型(如 MobileNetV1 0.25)跑通全流程,再逐步升级模型复杂度,同时监控 RAM 峰值与推理时间。此外,INT8 量化通常能带来 3-4 倍的速度提升,但需验证量化后准确率下降是否在可接受范围内(本例下降 1.3%)。

4.5 常见误区与总结

在图像分类的端侧部署实践中,以下误区值得警惕:

  • 误区一:盲目追求高分辨率输入。高分辨率确实能提升精度,但内存与计算量呈平方级增长。对于 MCU,96×96 是兼顾精度与效率的黄金起点。
  • 误区二:忽略通道数的影响。灰度图能减少 2/3 的输入数据量,但若任务依赖颜色特征,灰度化将导致不可逆的信息丢失。建议在 Edge Impulse 中分别训练灰度与 RGB 模型,对比验证集准确率后再做决定。
  • 误区三:将 ImageNet 预训练权重视为万能。预训练模型提取的是通用特征,但若目标域与 ImageNet 差异过大(如红外图像、X 光图像),迁移学习的效果可能不佳。此时应增加训练轮数或使用更小的学习率进行微调。
  • 误区四:忽略模型量化对精度的影响。INT8 量化在 MCU 上几乎是必须的,但量化后的模型可能在某些类别上出现精度骤降。部署前务必在目标硬件上运行完整的测试集,而非仅依赖 PC 端模拟结果。