输入分辨率对 CNN 精度和成本有什么影响?
简化版
提高输入分辨率能保留更多小目标和纹理细节,但卷积计算与激活显存大致随像素数增长:边长翻倍通常带来约 4 倍空间计算。最优分辨率应按目标尺寸分布、精度收益和真实延迟共同选择,而不是越大越好。
详细版
-
固定网络下,输入从
224²提到448²,多数卷积层的 H、W 都翻倍,MACs 与激活约增至 4 倍。 -
高分辨率尤其帮助小目标和细粒度类别,目标本来已占大量像素时收益会饱和。
-
训练时更大分辨率会降低可用 batch size,进而影响 BN 统计与吞吐。
-
预训练与微调分辨率不一致时,需要处理裁剪策略、位置编码或尺度分布偏移。
-
选型要绘制 accuracy-latency-memory Pareto 曲线,并在目标硬件测量。
完整版教学
一、分辨率同时改变信息量与系统成本
下采样会不可逆地丢掉高频细节。
一个原本只有 8×8 像素的目标再经过 32 倍下采样,可能连一个稳定特征单元都占不到。
另一方面,CNN 的每层都要处理更大的特征图,激活读写常成为瓶颈。
因此分辨率不是纯模型参数,而是数据、架构和部署预算的联合变量。
二、底层机制与关键公式
卷积 MACs 近似为 Hout×Wout×Cin×Cout×K²/G。
只改变输入边长且网络步幅不变时,各层 H、W 同比例变化,二次项主导计算。
感受野以像素计可能不变,但占整幅图的比例变小;高分辨率模型有时还需调整下采样位置、空洞率或训练 crop,才能真正利用新增细节。
MACs = Hout * Wout * Cin * Cout * K^2 / G
resolution scale r => spatial MACs approximately r^2
224 -> 320: (320/224)^2 ≈ 2.04
三、带数字的推演
某模型在 224 输入时为 4 GFLOPs、激活峰值 1.2 GB。
粗略估算到 448 时空间成本变为 4 倍,即约 16 GFLOPs 和 4.8 GB;实际值会因固定尺寸分类头和内存复用略有偏差。
四、方案对比与选择
| 方案/场景 | 机制或优势 | 主要代价 |
|---|---|---|
| 低分辨率 | 吞吐高、显存小 | 小目标与细纹理易消失 |
| 高分辨率 | 细节和小目标更清楚 | 计算、显存、延迟上升 |
| 多尺度/切片 | 兼顾局部细节 | 流水线和合并逻辑更复杂 |
五、实际执行流程
统计线上目标像素尺寸 -> 选 3~4 个候选分辨率 -> 同配方训练/微调
-> 按大中小目标分桶评估 -> 目标硬件压测 -> 选择 Pareto 点
六、边界条件与工程代价
简单 resize 可能改变长宽比,导致形状失真;letterbox 保持比例但引入填充。
检测框坐标必须按照缩放和 padding 精确反变换。
动态分辨率或大图切片可以节省平均成本,但会引入批处理困难、边界目标截断和结果去重问题,应计入端到端指标。
记忆钩子:抓住“边长 r 倍,空间成本约 r² 倍”,再看目标经过总步幅后还剩多少像素。
七、常见误区与追问
-
误区:分辨率翻倍只让计算翻倍。 高和宽都翻倍,主要卷积的空间计算通常约增至 4 倍。
-
追问:为什么小目标更受益? 更多输入像素让目标在深层下采样后仍保留可辨特征。
-
误区:参数量也会随分辨率增大 4 倍。 纯卷积/GAP 网络的权重数量通常不随 H、W 改变。
-
追问:如何公平比较多个分辨率? 控制模型、训练预算和增强,并在相同硬件报告精度、吞吐与显存。
-
追问:高分辨率收益为何会饱和? 任务所需细节已足够后,新增像素多为冗余或噪声。
八、加强记忆
抓住“边长 r 倍,空间成本约 r² 倍”,再看目标经过总步幅后还剩多少像素。
选型不是报一条总体准确率,而是把小目标收益与延迟、显存、batch 变化放在同一张 Pareto 图上。