轨道扣件缺陷检测数据集发布:1900张图·4类全状态·YOLO直训,附工业落地代码 | 铁路数据集 | 轨道数据集| YOLO数据集
铁路上把钢轨“绑”在轨枕上的那几块金属件叫扣件(紧固件)。弹条断裂、螺栓松动、整组缺失,都会让钢轨纵横向约束下降,高速车轮碾过去就是安全隐患。传统人工巡检靠步行+手电+扭矩扳手,效率低、隧道里更难干;现在主流做法是车载/手持相机拍图 → YOLO 类模型自动判状态。本期数据集就是按这个工业视觉闭环做的:专检扣件,4 类全覆盖。
一、数据集本体(第10547期)
- 图像量:1900 张铁路扣件局部影像(近景、轨枕区域为主,非大场景航拍)
- 标注格式:YOLO txt(归一化
class cx cy w h),无 VOC 混杂,开箱喂 Ultralytics - 类别(4 类):
0 扣件(正常安装、位置正)1 无缺陷扣件(外观正常但可能有锈迹/脏污,与“扣件”做细粒度拆分)2 缺陷扣件(弹条变形、裂纹、歪斜、部件破损)3 缺失扣件(整组脱落/被道砟遮住原位空掉)
- 场景覆盖:不同光照、道砟背景、潮湿锈蚀、部分遮挡,覆盖巡检车常见工况
- 用途定位:直接训 YOLOv8/v5/v11 检测头,做“扣件在不在、坏没坏”的二阶段判定基线
⚠️ 类别易混淆点:
扣件与无缺陷扣件在原文标签体系里是并列两类,不是同一件事——前者偏“定位正样本”,后者偏“健康度正样本”。自己训的时候如果觉得冗余,可合并成normal一类,但做缺失召回时建议保留缺失扣件单独标签。
二、知识普及:扣件检测为什么不能只训“缺陷”
- 负样本和正样本一样重要。台铁实务经验里,AI 训缺失构件必须同时给“正常构件影像”做负样本,否则模型会把所有暗色块都当缺失。
- 缺失类本质是“背景回归”。图上没有框,网络得从“这里本该有扣件却空了”学信号,所以缺失类召回率比 mAP 更值得盯。
- 小目标+高相似:扣件占画面 2%~5%,弹条细节靠 640 输入勉强够;真实车载检测常上 1280 或切片(SAHI)。
- 工业验收指标:不只看 mAP@0.5,还要看缺失类 Recall、误报率(次/公里)、夜间/隧道泛化。
三、目录结构与 data.yaml
假设按 YOLOv8 标准排好(1900 张按 8:1:1 切):
rail_fastener/ ├── images/{train,val,test}/ ├── labels/{train,val,test}/ └── data.yamlpath:./rail_fastenertrain:images/trainval:images/valtest:images/testnc:4names:0:扣件1:无缺陷扣件2:缺陷扣件3:缺失扣件注:YOLO 的 class_id 严格按 names 下标走,标注 txt 里写
3 0.52 0.48 0.05 0.07就是指“缺失扣件”。
四、训练代码(YOLOv8,带长尾偏向)
fromultralyticsimportYOLO model=YOLO("yolov8s.pt")# n 快,s 对小扣件更稳model.train(data="rail_fastener/data.yaml",epochs=150,imgsz=640,batch=16,device=0,optimizer="SGD",lr0=0.01,mosaic=0.9,# 小目标增益mixup=0.1,copy_paste=0.3,# 缺陷/缺失样本少,做过采样name="rail_fastener_v8s")评估时单独打印缺失类:
metrics=model.val(split="val")print("mAP50:",metrics.box.map50)# 更细看 confusion 或 per-class recall,用 val 后读取 results.txt / 在 yolo 命令加 save_json=True五、推理扩展:只报警“缺陷/缺失”的轻量脚本
工业端不想每帧弹 4 类,只关心“要不要派人”:
importcv2fromultralyticsimportYOLO model=YOLO("runs/detect/rail_fastener_v8s/weights/best.pt")ALARM={2:"缺陷扣件",3:"缺失扣件"}# 只告警这两类colors={0:(0,255,0),1:(0,200,0),2:(0,165,255),3:(0,0,255)}img=cv2.imread("test_fastener.jpg")res=model.predict(img,conf=0.35,imgsz=640)[0]forbinres.boxes:cls=int(b.cls)x1,y1,x2,y2=map(int,b.xyxy[0])cv2.rectangle(img,(x1,y1),(x2,y2),colors[cls],2)cv2.putText(img,res.names[cls],(x1,y1-6),cv2.FONT_HERSHEY_SIMPLEX,0.5,colors[cls],2)ifclsinALARM:cv2.putText(img,f"[ALARM]{ALARM[cls]}",(x1,y2+18),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,0,255),2)cv2.imwrite("out_fastener.jpg",img)再往前一步可接:轨枕边缘定位 → 算扣件中心偏移像素 → 超 15mm 判“移位”(原文 4 类没单列移位,但工程里常作为后处理规则补上)。
六、能拿来做什么
- 高铁/普铁车载巡检算法基线(替代人工目检)
- 毕业设计“YOLO+扣件缺陷”可直接用 1900 张跑通
- 做缺失召回专项研究(负样本工程、Copy-Paste 增强)
- 接 PyQt5 / RTSP 转成值班端演示系统
一句话收口:1900 张不算大,但“4 类全状态 + 纯 YOLO”对扣件场景刚好够跑通基线;真上线再把缺失类 Recall 拉到 0.9 以上、误报压到 <1 次/公里,比追高 mAP 更有用。
文章标签
#铁路扣件检测 #紧固件缺失识别 #轨道缺陷 #YOLO数据集 #工业视觉检测 #智慧铁路巡检 #目标检测实战 #小目标检测 #长尾类别 #YOLOv8训练 #铁路运维智能化