💡💡💡本文摘要:基于YOLO11的遥感斑马线检测,阐述了整个数据制作和训练可视化过程
博主简介
AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8、v9、v10、11优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富;
1.YOLO11介绍
Ultralytics YOLO11是一款尖端的、最先进的模型,它在之前YOLO版本成功的基础上进行了构建,并引入了新功能和改进,以进一步提升性能和灵活性。YOLO11设计快速、准确且易于使用,使其成为各种物体检测和跟踪、实例分割、图像分类以及姿态估计任务的绝佳选择。
结构图如下:
1.1 C3k2
C3k2,结构图如下
C3k2,继承自类C2f,其中通过c3k设置False或者Ture来决定选择使用C3k还是
Bottleneck
实现代码ultralytics/nn/modules/block.py
1.2 C2PSA介绍
借鉴V10 PSA结构,实现了C2PSA和C2fPSA,最终选择了基于C2的C2PSA(可能涨点更好?)
实现代码ultralytics/nn/modules/block.py
1.3 11 Detect介绍
分类检测头引入了DWConv(更加轻量级,为后续二次创新提供了改进点),结构图如下(和V8的区别):
实现代码ultralytics/nn/modules/head.py
2.遥感斑马线检测系统
遥感斑马线检测具有多方面的重要意义,主要体现在以下几点:
交通安全
-
事故预防 :通过准确检测斑马线,智能交通系统可以及时提醒驾驶员注意行人在斑马线上的通行情况,提前减速或停车让行,从而减少交通事故的发生,保障行人的生命安全。
-
弱势群体保护 :对视障人士等弱势道路使用者来说,基于遥感技术的导盲辅助设备能够准确识别斑马线,为其提供准确的导航信息,帮助他们安全地穿越马路,提高出行的便利性和安全性。
智能交通系统建设
-
自动驾驶支持 :自动驾驶车辆需要精确的环境感知能力,斑马线检测是其中的关键任务之一。遥感斑马线检测为自动驾驶系统提供了准确的斑马线位置和状态信息,使车辆能够自主决策在斑马线前的行驶行为,如减速、停车或避让等,提高自动驾驶的可靠性和安全性。
-
交通流量优化 :准确的斑马线检测信息可以与交通信号控制系统相结合,实现对交通流量的动态监测和优化调整。例如,根据不同时间段斑马线上的行人流量和车辆流量,智能调节信号灯的时长,提高交通效率,缓解拥堵。
-
交通标志识别与更新 :斑马线作为交通标志的重要组成部分,其检测结果有助于完善和更新交通地理信息数据库,为智能交通系统提供更准确、完整的道路信息,保障交通标志识别系统对其他交通标志的准确识别和有效管理。
城市规划与管理
-
设施布局优化 :城市规划部门可以根据遥感检测到的斑马线分布情况,结合行人流量、周边土地利用等因素,评估现有斑马线的布局是否合理,进而优化斑马线的设置位置和数量,提高城市道路的行人过街便利性和安全性。
-
道路施工监测 :在道路施工期间,利用遥感技术对斑马线等交通设施进行实时监测,确保施工过程中斑马线的完整性和清晰度,及时发现并修复被破坏的斑马线,保障施工期间的交通安全。
灾害应急与救援
-
灾后评估与重建 :在台风、地震等自然灾害发生后,遥感斑马线检测可以帮助快速评估受灾区域的道路设施受损情况,确定斑马线等交通标志的损坏程度和位置,为灾后重建工作提供精准的数据支持,指导道路设施的修复和重建,尽快恢复交通秩序。
-
应急救援导航 :为救援人员提供准确的道路信息,包括斑马线的位置,有助于他们快速、准确地到达受灾地点,提高救援效率,减少人员伤亡和财产损失
2.1遥感斑马线检测数据集介绍
数据集大小:
700 images for training
200 Images for validation
100 Images for testing
类别1类:
# Names of the classes
names: ['zebra'] # Replace with your class names
细节图:
标签可视化分析
2.2 配置zebra.yaml
ps:建议填写绝对路径
# Path to the training and validation datasets. Test is for evaluation.
path: D:/YOLOv11/data/zebra
train: images/train
val: images/val
test: images/test/
# Number of classes in the dataset
nc: 1 # Replace with the number of classes in your dataset
# Names of the classes
names: ['zebra'] # Replace with your class names
2.3 如何训练
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('ultralytics/cfg/models/11/yolo11.yaml')
model.train(data='data/zebra.yaml',
cache=False,
imgsz=640,
epochs=200,
batch=8,
close_mosaic=10,
device='0',
optimizer='SGD', # using SGD
project='runs/train',
name='exp',
)
2.4 训练结果可视化结果
YOLO11 summary (fused): 238 layers, 2,582,347 parameters, 0 gradients, 6.3 GFLOPs
Class Images Instances Box(P R mAP50 mAP50-95): 100%|██████████| 7/7 [00:07<00:00, 1.04s/it]
all 200 572 0.923 0.893 0.947 0.631
预测结果:
3. 遥感斑马线检测系统设计
3.1 PySide6介绍
受益于人工智能的崛起,Python语言几乎以压倒性优势在众多编程语言中异军突起,成为AI时代的首选语言。在很多情况下,我们想要以图形化方式将我们的人工智能算法打包提供给用户使用,这时候选择以python为主的GUI框架就非常合适了。
PySide是Qt公司的产品,PyQt是第三方公司的产品,二者用法基本相同,不过在使用协议上却有很大差别。PySide可以在LGPL协议下使用,PyQt则在GPL协议下使用。
PySide目前常见的有两个版本:PySide2和PySide6。PySide2由C++版的Qt5开发而来.,而PySide6对应的则是C++版的Qt6。从PySide6开始,PySide的命名也会与Qt的大版本号保持一致,不会再出现类似PySide2对应Qt5这种容易混淆的情况。
3.2 安装PySide6
pip install --upgrade pip
pip install pyside6 -i https://mirror.baidu.com/pypi/simple
基于PySide6开发GUI程序包含下面三个基本步骤:
- 设计GUI,图形化拖拽或手撸;
- 响应UI的操作(如点击按钮、输入数据、服务器更新),使用信号与Slot连接界面和业务;
- 打包发布;