YOLOv8 模型训练轨道交通障碍物检测数据集 通过训练出的轨道交通安全道路障碍物数据集的权重 建立深度学习铁路轨道障碍物检测系统
文章目录
以下文字及代码仅供参考。
铁路障碍物检测数据集 轨道交通数据集

📊 一、数据集概览
属性 | 内容 |
---|---|
数据集名称 | 铁路障碍物检测数据集(Railway Obstacle Detection Dataset) |
图像数量 | 3911 张 |
标注方式 | YOLO txt + VOC XML |
类别数 | 8 类 |
类别及标注数量 |
|
🧱 二、数据准备与组织结构
✅ 1. 数据目录结构
确保你的数据集按如下结构组织:
railway_dataset/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
├── labels/
│ ├── train/
│ ├── val/
│ └── test/
每个图像文件对应一个 .txt
文件(YOLO 格式),内容为:
class_id x_center y_center width height
其中 class_id
范围是 0~7,对应以下类别:
names:
- person
- car
- bus-truck
- other-vehicles
- turnout
- train
- bicycle
- animal
✅ 2. 创建 data.yaml 文件
创建一个名为 data.yaml
的配置文件,用于 YOLOv8 训练:
train: railway_dataset/images/train/
val: railway_dataset/images/val/
test: railway_dataset/images/test/
nc: 8
names: ['person', 'car', 'bus-truck', 'other-vehicles', 'turnout', 'train', 'bicycle', 'animal']
🛠️ 三、环境搭建
安装 Ultralytics YOLOv8 环境:
# 克隆仓库
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
# 安装依赖
pip install -r requirements.txt
🚀 四、模型训练
使用命令行进行训练:
yolo train data=data.yaml model=yolov8s.pt epochs=100 batch=16 imgsz=640
参数说明:
参数 | 含义 |
---|---|
data | 数据集配置文件路径 |
model | 使用的预训练模型权重(如 yolov8n/s/m/l/x) |
epochs | 总训练轮次 |
batch | 批大小(根据显存调整) |
imgsz | 输入图像尺寸(默认640x640) |
🔍 五、推理与结果展示
✅ 单张图像推理:
from ultralytics import YOLO
# 加载最佳模型
model = YOLO('runs/train/exp/weights/best.pt')
# 推理单张图像
results = model('test_images/railway_001.jpg')
# 显示结果
for r in results:
print(r.boxes) # 输出预测框信息
annotated_img = r.plot()
cv2.imshow("Detection", annotated_img)
cv2.waitKey(0)
✅ 视频流实时检测:
def detect_video(source=0):
cap = cv2.VideoCapture(source)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame)
annotated_frame = results[0].plot()
cv2.imshow("Real-time Railway Detection", annotated_frame)
if cv2.waitKey(1) == 27: # ESC键退出
break
cap.release()
cv2.destroyAllWindows()
📈 六、性能评估
使用验证命令评估 mAP、Recall、Precision 等指标:
yolo val data=data.yaml model=runs/train/exp/weights/best.pt imgsz=640
输出包括:
mAP@0.5
mAP@0.5:0.95
- Precision / Recall 曲线
- F1-score
📦 七、模型导出
将模型导出为 ONNX、TensorRT 或 OpenVINO 等格式以便部署:
yolo export model=runs/train/exp/weights/best.pt format=onnx
支持格式:onnx
, engine
, coreml
, tflite
, pb
, pt
等
🧪 八、推荐训练技巧
技巧 | 说明 |
---|---|
数据增强 | 使用 Mosaic、HSV、Flip 提高泛化能力 |
多尺度训练 | --multi-scale 可提升小目标检测效果(如动物) |
类别不平衡处理 | 动物类别仅19个样本,建议使用 focal loss 或重采样策略 |
自定义锚框 | 如果轨道场景中目标分布特殊,可重新聚类生成 anchor |
📌 九、总结
步骤 | 工具/方法 |
---|---|
数据整理 | 统一格式、划分训练集 |
数据配置 | data.yaml |
环境搭建 | Ultralytics YOLOv8 |
模型训练 | yolo train ... |
推理测试 | model.predict() |
性能评估 | yolo val ... |
模型导出 | yolo export ... |