铁轨作为铁路运输系统的核心基础设施,其健康状况直接影响列车运行安全。传统的人工巡检方式效率低下且容易遗漏细微缺陷,而基于计算机视觉的自动化检测技术正逐渐成为行业主流解决方案。我们团队收集整理的这套铁轨缺陷检测数据集,正是为了满足这一领域的研究和应用需求。
数据集最初包含399张高分辨率铁轨图像,涵盖不同光照条件、天气状况和轨道区段。通过经典的图像增强技术(包括旋转、翻转、亮度调节和添加噪声等),我们将数据量扩充至1596张,有效提升了模型的泛化能力。每张图像都经过专业标注团队精细标注,确保缺陷定位和分类的准确性。
特别提示:数据集中的"unknown"类别用于标记难以明确归类的异常情况,这类数据在实际应用中往往能帮助模型识别新型缺陷。
数据集包含8个经过精心设计的类别标签,覆盖了铁轨最常见的缺陷形态:
原始数据集中各类别样本数量经过平衡处理,避免出现严重的数据倾斜问题。经过扩充后,每个类别都保持相近的样本量,确保模型训练时各类缺陷都能得到充分学习。特别值得注意的是,"unknown"类别虽然占比不高,但对于开发鲁棒性强的检测系统至关重要。
数据集采用清晰的目录结构组织:
code复制rail_defect_dataset/
├── images/ # 存放所有图像文件
├── labels_txt/ # TXT格式标注文件
├── labels_xml/ # XML格式标注文件
├── train.txt # 训练集文件列表
├── val.txt # 验证集文件列表
└── weights/ # 预训练权重文件
采用YOLO标准格式,每个图像对应一个同名的txt文件,每行表示一个标注对象:
code复制<class_id> <x_center> <y_center> <width> <height>
其中坐标值均为相对于图像宽高的归一化值(0-1之间)。
遵循PASCAL VOC标准,包含完整的图像元数据和目标检测框信息。每个XML文件包含:
我们使用YOLOv5s作为基准模型,主要考虑其在精度和速度间的平衡。关键训练参数如下:
yaml复制# yolov5s_rail_defect.yaml
train: ../rail_defect_dataset/train.txt
val: ../rail_defect_dataset/val.txt
nc: 8 # 类别数量
names: ['damage', 'dirt', 'unknown', 'gap', 'd_dent', 'd_crush', 'd_scratch', 'd_slant']
训练命令示例:
bash复制python train.py --img 640 --batch 16 --epochs 100 --data yolov5s_rail_defect.yaml --weights yolov5s.pt
在验证集上的表现:
| 指标 | 数值 |
|---|---|
| mAP@0.5 | 0.872 |
| mAP@0.5:0.95 | 0.643 |
| Precision | 0.891 |
| Recall | 0.834 |
实测发现d_dent和d_scratch两类容易混淆,建议在实际应用中增加这两类的样本量。
推荐使用Python 3.8+和PyTorch 1.7+环境:
bash复制git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt
加载预训练权重进行检测:
python复制import torch
model = torch.hub.load('ultralytics/yolov5', 'custom',
path='rail_defect_weights.pt')
results = model('test_image.jpg')
results.print() # 打印检测结果
results.save() # 保存带标注的图像
为提高模型鲁棒性,建议在训练时启用以下增强:
yaml复制# data/hyps/hyp.scratch-low.yaml
hsv_h: 0.015 # 色调增强
hsv_s: 0.7 # 饱和度增强
hsv_v: 0.4 # 明度增强
degrees: 5.0 # 旋转角度
translate: 0.1 # 平移比例
scale: 0.5 # 缩放比例
损失震荡严重:
某些类别AP值偏低:
模型量化:
python复制model = torch.quantization.quantize_dynamic(
model, {torch.nn.Linear}, dtype=torch.qint8)
可将模型大小压缩至原来的1/4,推理速度提升2-3倍。
TensorRT加速:
bash复制python export.py --weights rail_defect_weights.pt --include engine --device 0
需要提前安装TensorRT环境。
除了基础的缺陷检测外,本数据集还可用于:
我在实际铁路巡检项目中发现,将检测系统与GPS定位结合,可以建立精确的缺陷位置地图,大幅提升后续维护工作的效率。另外,建议在清晨或阴天采集数据,避免强烈阳光造成的反光干扰。