在 2448×2048 的 PNG 上运行 Image Processing Tool 的默认增强(Factor 5、Random ±5°),每张约需 4.3 秒。这意味着准备数千张训练数据需要好几个小时。
时间耗在了哪里
性能分析显示,瓶颈不是旋转或对齐,而是保存。运行时间的 90% 以上都耗在 PIL 的 PNG 编码器(默认压缩 level 6)上。
做了哪些修改
- PNG 压缩 level 1 — 仍然是无损压缩,编码速度约快 5 倍。代价是文件大约增大 10%。
- 并行保存输出 — 每张输入对应的 6 张输出,通过
ThreadPoolExecutor(最多 8 个线程)同时保存。PIL 编码器会释放 GIL,因此速度可随核心数提升。 - 简化旋转流程 — 将原来
rotate(expand=True)后再裁剪中央的做法,改为只执行一次rotate(expand=False)。结果相同,开销减半。 - 日志节流 — 原来每个文件都输出的日志,改为每 10 条输出一次。
结果
| 项目 | v1.6.1 | v1.6.2 |
|---|---|---|
| 每张处理时间 | 约 4.3 秒 | 约 0.26 秒 |
| 输出文件大小 | 基准 | 约 +10% |
| 配置文件格式 | — | 无变化 |
旋转边界处会产生不到 0.003% 的像素差异,但不影响增强质量。