一、引言:当“海量小图片”成为目标检测训练的绊脚石你是否曾遇到这种情况:辛辛苦苦标注了数万张用于目标检测的小尺寸图片,满怀期待地启动训练脚本,结果发现GPU 利用率时高时低,甚至长时间在 0% 与 100% 之间“坐过山车”?这不是模型出了问题,而是Dataloader(数据加载器)跟不上了。在现代目标检测深度学习的训练流程中,算力瓶颈常常并不在 GPU 本身,而在于是否能稳定、高效地将数据从存储“投喂”给 GPU。许多工程师在优化 CNN 训练时,往往会忽视这一个隐形的瓶颈。事实上,Google 曾在其大规模训练实践中发现,输入管道(Input Pipeline)耗费的时间可能占据整个训练周期时长的三分之一以上,导致昂贵的 GPU 处于“饥饿”等待状态。“海量小图片”正是诱发这一瓶颈的元凶之一:当训练集由成千上万张几 KB 到几十 KB 的小文件构成时,传统的文件系统在随机读取时会产生巨量的元数据操作和磁盘寻道开销,严重拖慢数据供给速度。正如 PyTorch 在 Linux 上的效率提升指南中指出的,将海量小图打包为二进制容器(如 LMDB、WebDataset、TFRecord/RecordIO),可显著降低目录遍历与打开关闭文件的开销,并便于顺序流式读取与分布式训练。为解决这一痛点,业界主流方案是将零散的小图统一打包为专门的二进制格式——最典型的代表是 TensorFlow 生态的TFRecord和跨框架通用的LMDB(Lightning Memory