# SignalDetect **Repository Path**: scholety/signal-detect ## Basic Information - **Project Name**: SignalDetect - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-19 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Yolo for Railway Signal-铁路信号机视频自动识别与仿真系统
🚀我们很高兴迎来了Yolo for Railway Signal的2.0版本,本项目自2022年7月正式开启以来,已经度过了9个月的时间。从最开始的和利时杯科技创新大赛的比赛项目,到后来成为我个人的本科毕业设计,我们从来都没有停止过对铁路信号机视频检测项目的探索和开发,希望我们的研究能够给您带来帮助。 ## Background 本项目是一款基于Yolov5目标检测算法和PyQt5的铁路信号机视频识别仿真系统,旨在利用Yolov5目标检测算法对铁路行车过程中的信号机进行自动识别,并将结果以可视化界面的形式传递给用户,从而缓解司机在行车过程中的压力,并提高行车安全性。 ## Content 本项目的主要工作包含以下三个方面: 1. **改进Yolov5目标检测算法**:为了提高模型对小目标信号机的检测准确度,我们对Yolov5算法提出了三种改进策略,并通过消融实验进行了效果验证,三种策略分别如下: - mosaic9数据增强方法; - 带边缘扩展的copy-paste数据增强方法; - 增加小目标检测层。 2. **指示本列车运行的信号机的筛选分类模块**:该模块旨在实现对指示本列车运行的信号机的筛选分类,它由目标跟踪器DeepSort和多信号机筛选器MultiSignalFilter组成: - 目标跟踪器DeepSort:在Yolov5检测器的基础上使用DeepSort对信号机目标进行实时跟踪,得到信号机的连续变化轨迹; - 多信号机筛选器MultiSignalFilter:基于信号机的连续变化轨迹对多信号机进行筛选判断。 3. **铁路信号机视频自动识别与仿真系统**:基于PyQt5设计,具备图片检测、视频检测和实时检测三大功能,提供丰富的人机交互接口,支持实时调整检测参数,动态显示检测结果、单帧检测用时、信号机实时轨迹变化等。 ## Install 1. 安装CUDA和Cudnn 2. 根据CUDA版本安装对应的Pytorch: [Installing previous versions of pytorch](https://pytorch.org/get-started/previous-versions/) 3. 配置环境依赖 ```python git clone https://github.com/wang-10086/yolov5-5.0 # clone cd yolov5-5.0 pip install -r requirements.txt # install ``` > 本项目使用Python=3.8环境,Pytorch版本为1.12.0 ## Usage
运行 运行mainwindow.py: ```python python mainwindow.py ```
界面介绍 整个界面包括参数设置模块、功能选择模块、结果显示模块、视频播放模块,同时还支持目标轨迹实时显示和检测用时实时显示模块。

界面设计
功能演示 演示视频:[铁路信号机视频自动识别与仿真系统演示视频](http://wang-typora.oss-cn-beijing.aliyuncs.com/img/演示视频23_05_23.mp4 )
## Datasets 本项目在北京市朝阳区环铁试验线完成了铁路行车视频采集,数据集大小为10995张图片,数据集结构如下: | 信号机种类 | 检测类别名称 | 说明 | 图片数量 | |:-----:|:--------:|:----------------:|:----:| | 红色 | red | 停车,禁止越过信号机 | 3100 | | 绿色 | green | 允许越过该信号机 | 2800 | | 单黄色 | s_yellow | 减速,或指示正线停车 | 1200 | | 双黄色 | d_yellow | 指示侧线停车 | 2100 | | 月白色 | white | 引导信号,或允许越过该信号机调车 | 1400 | | 蓝色 | blue | 禁止越过该信号机调车 | 895 | ## Checkpoints | model | datasets | size | mAPoptimal
50-95 | |:------------------:|:---------------:|:----:|:------------------------:| | coco128.pt | coco128 | 640 | 0.7996 | | road_signal.pt | road_signal | 640 | 0.7516 | | train_signal.pt | train_signal | 640 | 0.7805 | | train_signal500.pt | train_signal500 | 640 | 0.8204 | ## DeepSort 考虑到在信号机检测场景中,几乎不会出现短时间或长时间的目标重叠,也就是说无需考虑跟踪过程中的ID切换问题,本项目使用DeepSort作为目标跟踪器来对yolov5检测的结果进行实时跟踪,以获取同一个信号机的连续轨迹,进而根据轨迹变化特征进行信号机筛选。
图片加载失败
deepsort跟踪效果
本项目使用mikel.brostrom的[Yolov5 + Deep Sort with PyTorch](https://github.com/mikel-brostrom/yolov8_tracking/tree/v1.0 )。 ## Maintainers @[Akkkk](https://github.com/wang-10086) @[ykxxx](https://github.com/ykxxxxxx) ## Contact us 非常欢迎您使用我们的项目进行测试,如果您在使用过程中遇到任何问题,可以通过以下方式联系我们: [Alcattiau@outlook.com](Alcattiau@outlook.com)