1. 数据集背景与应用价值
集装箱号码检测是物流行业和港口自动化中的基础性技术需求。在每天数以万计的集装箱流转过程中,快速准确地识别箱体表面的编号信息,直接关系到货物追踪、库存管理和运输调度的效率。传统人工抄录方式不仅速度慢(平均每个集装箱需要30-60秒),而且存在约5%的误读率。采用计算机视觉技术后,识别速度可提升至毫秒级,准确率能达到98%以上。
这个数据集特别采用YOLO标注格式,主要考虑到:
- 实际工业部署中需要平衡检测精度和推理速度
- YOLO系列算法在边缘设备上的优异表现(如NVIDIA Jetson系列)
- 标注文件与图像一一对应的简洁结构,便于工程化 pipeline 搭建
2. 数据集核心特征解析
2.1 数据构成与分布
数据集包含12,847张高质量集装箱图像,采集自真实港口作业场景。按典型场景划分:
- 日间光照条件:8,192张(63.8%)
- 夜间/低光照:3,055张(23.8%)
- 雨雾天气:1,600张(12.4%)
图像分辨率统一为1920×1080,采用JPEG格式压缩存储(质量因子85)。标注文件采用YOLOv5标准格式,每个.txt文件包含:
code复制<object-class> <x_center> <y_center> <width> <height>
其中集装箱号码的class_id统一为0。
2.2 标注质量保障措施
为确保标注准确性,我们采用三级质检流程:
- 初级标注员完成初始标注(使用LabelImg工具)
- 高级质检员使用CVAT复核标注框位置
- 最终通过自定义校验脚本检查:
- 标注框是否超出图像边界
- 宽高比是否符合集装箱号码特征(1:3至1:5之间)
- 是否存在漏标或多标
3. 典型应用场景与技术实现
3.1 基于YOLOv5的检测方案
推荐使用YOLOv5s模型进行初始训练,其优势在于:
- 输入分辨率640×640下仅7.2M参数量
- 在RTX 3060上推理速度可达120FPS
- 适合部署到移动端设备
关键训练参数配置:
yaml复制# data.yaml
train: ../train/images
val: ../valid/images
nc: 1 # 仅集装箱号码一个类别
names: ['container_num']
# hyp.scratch-low.yaml
lr0: 0.01 # 初始学习率
lrf: 0.1 # 最终学习率
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3.0
3.2 实际部署优化技巧
在港口闸口场景中,我们总结出以下优化经验:
- 多尺度训练:添加512×512和896×896两种分辨率提升小目标检测能力
- 后处理优化:采用加权NMS(weighted-NMS)替代传统NMS,改善密集排列号码的检测效果
- 硬件加速:使用TensorRT将模型转换为FP16格式,推理速度可再提升40%
4. 数据增强策略建议
针对集装箱号码的特殊性,推荐以下增强组合:
python复制# Albumentations 增强管道
transform = A.Compose([
A.RandomBrightnessContrast(p=0.5),
A.CLAHE(p=0.3),
A.RandomRain(p=0.1), # 模拟雨滴干扰
A.RandomFog(p=0.1), # 模拟雾天效果
A.GridDistortion(p=0.2) # 模拟箱体变形
], bbox_params=A.BboxParams(format='yolo'))
特别注意:
- 避免使用过度旋转增强(集装箱号码通常保持水平)
- 谨慎使用颜色抖动(保持ISO6346标准中的颜色特征)
- 添加随机污渍模拟(使用OpenCV的噪声添加函数)
5. 常见问题与解决方案
5.1 反光表面处理
集装箱金属表面易产生强烈反光,建议:
- 训练阶段:添加模拟反光的合成数据(使用Blender生成)
- 推理阶段:采用自适应直方图均衡化(CLAHE)预处理
5.2 模糊图像增强
对于运动模糊的图片,可采用以下处理流程:
python复制def deblur(image):
kernel = np.array([[0, -1, 0],
[-1, 5,-1],
[0, -1, 0]])
return cv2.filter2D(image, -1, kernel)
5.3 多号码关联
当检测到多个号码区域时,需要建立关联规则:
- 根据ISO6346标准校验号码校验位
- 基于空间位置关系建立号码组(主箱号 vs 额外标签)
- 使用OCR上下文校验(如"CN"开头通常为中国港口)
6. 评估指标与基线性能
在保留测试集(2,568张)上的基准表现:
| 模型 | mAP@0.5 | 推理时延(ms) | 参数量(M) |
|---|---|---|---|
| YOLOv5n | 0.872 | 8.2 | 1.9 |
| YOLOv5s | 0.916 | 12.5 | 7.2 |
| YOLOv5m | 0.928 | 22.1 | 21.2 |
| YOLOv7-tiny | 0.901 | 9.8 | 6.0 |
关键发现:
- 当部署资源受限时,YOLOv5n是性价比最优选择
- 需要更高精度时,建议使用YOLOv5s+蒸馏训练方案
- 输入分辨率提升到896×896可使mAP提升3-5%,但时延增加约60%
7. 数据获取与使用建议
数据集采用CC-BY-NC 4.0协议共享,包含:
- 原始图像(JPEG格式)
- YOLO格式标注文件
- 预处理脚本(Python)
- 基准模型配置文件
使用前建议:
- 先运行
python check_labels.py验证标注完整性 - 使用
split_dataset.py按9:1划分训练/验证集 - 对于小样本实验,可从
balanced_subset/选取代表性样本
实际项目中我们发现,当训练数据超过8,000张时,模型性能提升趋于平缓。因此建议:
- 初始实验使用2,000-3,000张核心样本
- 逐步添加困难样本(夜间、雨雾等场景)
- 最后用全量数据微调2-3个epoch