news 2026/5/30 17:23:26

铁路智能巡检、异物入侵告警、无人机自动巡线 构建基于 YOLOv8 的无人机航拍铁道异物检测系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
铁路智能巡检、异物入侵告警、无人机自动巡线 构建基于 YOLOv8 的无人机航拍铁道异物检测系统

无人机航拍铁轨铁铁路道异物检测数据集,

1285张,yolo和voc标注
图像尺寸:1080*1920
4类,训练集图像数量:901; 验证集图像数量:256; 测试集图像数量:128
类别名称: 每一类图像数 ,每一类标注数
poset 塑料袋: 282,341
bitki 植物: 375,1039
cubuk 长棍: 28,31
insan 人: 682,843
image num: 1285


1

1

1

1

无人机航拍图像铁道异物检测数据集


📊 一、数据集详细表格描述

✅ 总体信息

项目内容
总图像数量1,285 张
图像分辨率1080 × 1920(高 × 宽,竖屏航拍)
类别数量4 类
标注格式同时提供YOLO 格式(.txt)PASCAL VOC 格式(.xml)
数据划分- 训练集:901 张
- 验证集:256 张
- 测试集:128 张

🗂️ 类别分布统计表

类别 ID类别名称(土耳其语)类别名称(中文)包含该类的图像数标注框总数(instances)平均每图目标数
0poset塑料袋282341≈1.21
1bitki植物3751,039≈2.77
2cubuk长棍2831≈1.11
3insan682843≈1.24
总计(去重图像)1,2852,254

🔍 注:

  • 单张图像可包含多个类别(如“人+植物”),因此各类图像数之和 > 1,285。
  • “植物”类标注密集(常为灌木、杂草覆盖轨道),“长棍”样本极少(需重点处理类别不平衡)。
  • 图像为竖屏 1080×1920,适合铁路沿线纵向巡检场景。

🛠️ 二、构建基于 YOLOv8 的铁道异物检测系统(完整流程)

📁 1. 推荐项目结构

railway_obstacle_detection/ ├── data/ │ ├── images/ │ │ ├── train/# 901│ │ ├── val/# 256│ │ └── test/# 128│ ├── labels/# YOLO格式 .txt│ │ ├── train/ │ │ ├── val/ │ │ └── test/ │ └── dataset.yaml# YOLOv8 数据配置├── weights/ │ └── yolov8s.pt# 官方预训练模型(自动下载)├── models/# 训练输出├── outputs/# 推理结果├── train.py# 训练脚本├── detect.py# 推理模块├── utils/ │ ├── balance_analysis.py# 分析类别不平衡│ └── visualize_labels.py# 可视化标注└── requirements.txt

📦 2. 环境依赖(requirements.txt

ultralytics==8.2.0 opencv-python==4.8.0 numpy==1.24.3 matplotlib tqdm scikit-learn # 如需分析

安装:

pipinstall-r requirements.txt

📄 3. 数据配置文件dataset.yaml

# data/dataset.yamltrain:../data/images/trainval:../data/images/valtest:../data/images/testnc:4names:['poset','bitki','cubuk','insan']

⚠️ 注意:类别顺序必须与标注.txt中 class_id 严格对应(0~3)


🚀 4. 模型训练(train.py

# train.pyfromultralyticsimportYOLOdeftrain_railway_detector():# 使用 yolov8s(兼顾精度与速度,适合小目标)model=YOLO("yolov8s.pt")results=model.train(data="data/dataset.yaml",imgsz=640,# 自动缩放 1080x1920 → 640(保持比例)epochs=150,# 增加 epoch 应对小样本batch=16,# 根据 GPU 调整device=0,name="railway_yolov8s",project="models",patience=50,save=True,augment=True,# 针对小目标 & 稀有类增强hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=15.0,# 更大旋转(航拍角度多变)translate=0.2,scale=0.5,fliplr=0.5,mosaic=1.0,# Mosaic 增强提升“cubuk”检测mixup=0.2,copy_paste=0.3,# Copy-Paste 增强稀有类(如 cubuk))print(f"✅ 训练完成!最佳模型:{results.save_dir}/weights/best.pt")if__name__=="__main__":train_railway_detector()

💡关键优化点

  • 启用copy_paste增强:解决“长棍”(cubuk)样本极少问题
  • 使用mosaic+mixup:提升小目标(塑料袋、长棍)召回率
  • imgsz=640:YOLOv8 自动保持宽高比,避免形变

🔍 5. 推理检测(detect.py

# detect.pyimportcv2importosfromultralyticsimportYOLOclassRailwayObstacleDetector:def__init__(self,model_path="models/railway_yolov8s/weights/best.pt"):self.model=YOLO(model_path)self.class_names=["Plastic Bag","Vegetation","Long Rod","Person"]defdetect_image(self,image_path,conf=0.25,save_dir="outputs"):results=self.model(image_path,conf=conf)annotated=results[0].plot()os.makedirs(save_dir,exist_ok=True)out_path=os.path.join(save_dir,os.path.basename(image_path))cv2.imwrite(out_path,annotated)print(f"✅ 检测完成 →{out_path}")returnannotateddefdetect_video(self,video_path,conf=0.25):cap=cv2.VideoCapture(video_path)fps=int(cap.get(cv2.CAP_PROP_FPS))w,h=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))out_path="outputs/detected_"+os.path.basename(video_path)out=cv2.VideoWriter(out_path,cv2.VideoWriter_fourcc(*'mp4v'),fps,(w,h))whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresult=self.model(frame,conf=conf)[0]out.write(result.plot())cap.release()out.release()print(f"✅ 视频检测完成 →{out_path}")defdetect_drone_stream(self,rtsp_url):"""支持 RTSP 流(如大疆无人机直播流)"""cap=cv2.VideoCapture(rtsp_url)whileTrue:ret,frame=cap.read()ifnotret:breakannotated=self.model(frame,conf=0.25)[0].plot()cv2.imshow("Railway Inspection",annotated)ifcv2.waitKey(1)==ord('q'):breakcap.release()cv2.destroyAllWindows()

▶️ 6. 使用示例

# 快速测试fromdetectimportRailwayObstacleDetector detector=RailwayObstacleDetector()# 检测单图detector.detect_image("test_images/rail1.jpg")# 检测视频detector.detect_video("railway_drone.mp4")# 实时 RTSP 流(需替换 URL)# detector.detect_drone_stream("rtsp://192.168.1.10:8554/main")

🛠️ 7. 部署与工程建议

场景建议
无人机端侧部署导出为 TensorRT:
yolo export model=best.pt format=engine imgsz=640
铁路巡检车集成到车载工控机,定时抓拍+告警
Web 监控平台用 Flask/FastAPI 提供 REST API,前端展示告警
处理类别不平衡cubuk使用Focal Loss(可通过 Ultralytics 自定义 loss)或过采样

铁路智能巡检、异物入侵告警、无人机自动巡线等关键任务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 10:55:27

如何用AutoHotkey实现输入效率翻倍?

如何用AutoHotkey实现输入效率翻倍? 【免费下载链接】AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/autohotke/AutoHotkey 你是否曾经在写代码时突然发现中英文符号混输导致编译错误?或者在会议中手忙脚乱地寻找语言栏切换输入法&#…

作者头像 李华
网站建设 2026/5/26 5:38:34

Cocos SDK集成终极指南:多平台适配与组件化封装高效方法

Cocos SDK集成终极指南:多平台适配与组件化封装高效方法 【免费下载链接】cocos-engine Cocos simplifies game creation and distribution with Cocos Creator, a free, open-source, cross-platform game engine. Empowering millions of developers to create hi…

作者头像 李华
网站建设 2026/5/29 23:28:10

算法:基础算法做题记录

点击查看代码P4047 [JSOI2010] 部落划分要求距离最远的部落距离最小,依然二分答案。但是判定时需要贪心地选择最近的两个部落合并,需要用到并查集维护集合。时间复杂度 �(�2log⁡��(�))O(n 2log…

作者头像 李华
网站建设 2026/5/30 16:08:10

Wan2.2-T2V-A14B生成结果的可控性与随机性平衡策略

Wan2.2-T2V-A14B生成结果的可控性与随机性平衡策略 在影视预演、广告创意和虚拟内容快速迭代的今天,AI视频生成已不再是“能不能做”的问题,而是“做得多好、多可控、多高效”的较量。传统T2V(文本到视频)模型常陷入两难&#xff…

作者头像 李华
网站建设 2026/5/29 8:03:55

5步掌握无名杀自定义武将开发:从入门到精通的完整教程

5步掌握无名杀自定义武将开发:从入门到精通的完整教程 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 你是否曾经想要在无名杀游戏中创建属于自己的独特武将,却不知道从何入手?想要快速创建第一个…

作者头像 李华
网站建设 2026/5/28 6:18:20

ComfyUI-MultiGPU:单卡双倍模型容量的低成本扩容方案

你是否曾经面对这样的困境:心仪的最新大模型刚刚发布,却因为显存不足而无法在自己的设备上运行?或者想要生成更高分辨率的图像,却被显卡的物理限制所束缚?今天,我们将揭示如何通过智能分布式显存管理技术&a…

作者头像 李华