当前位置: 首页 > article >正文

基于深度学习的城市道路分割识别 图像识别+图像分割的多任务模型之道路分割 深度徐恶习路沿分割和车辆检测

基于Ultralytics/YOLOv5/v8的多任务模型概述本项目基于Ultralytics/YOLOv5通过增加少量计算和显存开销实现了同时进行目标检测和语义分割的多任务模型。在1024×512的输入分辨率下显存增加约350MB而同分辨率下增加一个BiSeNet则需要约1.3GB。此外两个单任务模型独立输入还会带来额外的延迟。模型在Cityscapes语义分割数据集和由Cityscapes实例分割标签转换而来的目标检测数据集上同时训练。实验结果表明检测结果略优于原版单任务的YOLOv5仅限于此实验数据集。分割指标如下s模型验证集mIoU 0.73测试集mIoU 0.715m模型验证集mIoU 0.75测试集mIoU 0.735由于个人将继续考研仓库在tag 2.0发布后近期不会频繁更新issue大概率不会回复问题请参考以下文档震荡爆炸请尝试降低学习率。若后续考上研可能会在本仓库跟进YOLOv5的更新并尝试新的分割结构、增加更多任务、多卡训练和部署的支持。未来版本可能由其他人整理/重构并发布在MANA AI。环境配置和数据集准备环境配置建议直接使用主分支BS2021近期不会再更新功能和结构但如果issue提出BUG空闲时会尽力在主分支修复。$ python-mpipinstall-rrequirements.txt $ python-mpip uninstall wandb注意当前代码未做多卡训练和wandb支持不卸载wandb训练时大概率会有bug。数据集准备本模型的检测和分割数据集独立加载不要求类别相同。当前支持Cityscapes语义分割数据集和实例分割标签生成的目标检测数据集新增BDD100k混合Cityscapes训练支持将BDD100k当作Cityscapes的一个城市组织数据集格式。扩展语义分割数据集需要增改代码继承BaseDataset类。目标检测数据集可以同原版YOLOv5自行替换参考原版YOLOv5文档和./data/cityscapes_det.yaml文件。下载数据自行到官网下载Cityscapes数据集将leftImg8bit和gtFine放入./data/citys文件夹中也可使用citys中的bash脚本下载需要先将脚本中的帐号密码改成你自己的。数据预处理进入citys文件夹下运行citys文件夹的2yolo_filter.py生成目标检测标签。在citys文件夹中新建一个detdata文件夹将生成的images和labels文件夹剪切到detdata中。$cd./data/citys $ python 2yolo_filter.py $mkdirdetdata $mv./images ./detdata $mv./labels ./detdata注比较费空间只做Cityscapes实验的话可以考虑删除复制的图像将leftImg8bit的图软链接到detdata中但不要移动leftImg8bit和gtFine文件夹分割要用。预训练模型2.0版本准备了4种分割Head的预训练模型。从可视化上更推荐PSP和Lab感受野更大速度上没有太大差别Base最快PSP第二Lab和BiSe接近。Base.pt基础版本的分割Head。16层PAN1/8输入配置文件通道512。C3通道略拓宽版本的C3SPPDropout(0.1)1×1卷积到类别。速度精度综合效果不错但SPP配1/8图感受野不够大s模型效果较好但m模型加深加宽后提升不明显。BiSe.pt模仿BiSeNetV1的分割头精度略高速度与Base相似。16,19,22PAN的1/8,1/16,1/32输入配置文件通道无效。ARM改成RFB2增强非线性BiSeNet每个Upsample后有一个3×3卷积refine这里省计算放在Upsample前。Lab.pt模仿DeepLabV3的分割头验证集精度与PSP和BiSe接近速度略慢于PSP和Base与BiSe相仿。4或3,19浅层1/8,PAN的1/16输入配置文件通道256。1/8图1×1卷积到48通道1/16图过RFB1ASPP类似的替代。PSP.pt模仿PSPNet的分割头目前精度最高速度仅次于Base。16,19,22三层融合输入未找到合适的地方放辅助损失放弃辅助损失。预训练模型百度网盘提取码cjxg推理普通图片推理$ python detect.py--weights./pspv5s.pt或其他模型--sourcedata/images--conf0.25--img-size1024data/images里的几张图片来自Cityscapes测试集、BDD100k、Apollo Scape和YOLO。此外data/test_imgs放了一些Apollo的图可以看看Cityscapes训练后在Apollo上的效果使用了BDD100k训练的效果会再好一点。结果图片在runs/detect文件夹中也可以推理同时显示。$ python detect.py--weights./pspv5s.pt或其他模型--sourcedata/images--conf0.25--img-size1024--view-img同尺寸连续帧图片制作视频$ python detect.py--weights./pspv5s.pt或其他模型--source图片文件夹--conf0.25--img-size1024--save-as-video只支持同尺寸图片制作视频例如Cityscapes提供的三段连续帧测试图片Bilibili的demo视频就是这些图。将图片放入同一文件夹内注意若存在不同尺寸图片则结果视频会保存失败。向Cityscapes提交测试集结果$ python detect.py--weights./pspv5s.pt或其他模型--source图片文件夹--conf0.25--img-size1024--submit--no-save开启--no-save不保存结果会快很多并省空间。将测试集6个文件夹的图片合并在一个文件夹进行推理结束后会在此次的runs/detect/此次exp里找到一个results文件夹里面是将trainid转换为id的结果压缩上传官网即可。测速测速使用提交的参数在同尺寸图片上测或推理视频测。图片推理没有开启cudnn.benchmark推理视频文件时或开启--submit或--save-as-video时会开启cudnn.benchmark此时是真正的运行速度。注cudnn.benchmark开启后第一帧图片会测试各种cudnn算子并记录之后同尺寸的每帧图像都会使用最快的算子。cudnn.benchmark仅在同尺寸图像推理时开启否则每输入新尺寸图就会测一遍。训练后测试模型$ python test.py--datacityscapes_det.yaml--segdata./data/citys--weights./pspv5s.pt --img-size1024--base-size1024对比原版多两个参数--segdata后写Cityscapes数据集的文件夹地址现在只支持这个可以参考SegmentationDataset.py自行扩展。检测长边和分割长边参数分离--img-size是检测长边--base-size是分割长边。如果训练后测试你自己的数据集使用test_custom.py训练中train_custom.py会测。$ python test_custom.py--data你的.yaml--segdata你的分割数据路径--weights./pspv5s.pt --img-size1024--base-size1024训练复现训练前先下载对应的原版注意我是在tag V5.0代码上改的COCO预训练模型做初始化见原版README和weights/download_weights.sh脚本。$ python train.py--datacityscapes_det.yaml--cfgyolov5s_city_seg.yaml --batch-size18--epochs200--weights./yolov5s.pt--workers8--label-smoothing0.1--img-size832--noautoanchor不一定如示例训200轮这是我训上述预训练模型为了让其尽量收敛的参数建议最少训80轮我一般训150到180轮。注意为了加快训练我设置每10轮测试一次分割精度最后40轮每轮测试分割精度。代码修改指南梯度积累学习率和检测分割损失比后者在train.py内未暴露出来是一组非常重要的参数。必须清楚YOLOv5使用了梯度积累不管你的batchsize是多少“名义batchsize”都是作者预设的64。这意味着当你设置batchsize为16时将会每4个batch才更新一次参数具体积累几次看训练时候我打印的accumulate第一次是目标值后续是当前值即实际的batchsize是你输入的batchsize的倍数中最接近64的那个此处我将原代码修改为严格不超过64。因此你输入的batchsize17实际51要比16实际64小很多调整学习率时候应注意到这点。代码结构common.py此代码是YOLOv5中的常用基础操作类我在其中增加了BiSeNet的ARM、FFMRFB1、2非RFBNet魔改版本见代码注释ASPP接口上增加了用于砍通道的参数ASPPs先用1×1减少输入通道从而可以少砍一些中间通道Attention通道注意力相当于不带3×3卷积的ARM基础SEDAPPM见哈工大论文这里效果不明显PyramidPoolingPSPNet。yolo.pyYOLOv5的模型主架构代码包括Model类和检测要用的Detect类我把新加的四种分割头类放在这个代码中可能放common.py会更清爽些。所有新加的模块要放入模型都必须要经过Model类。模型配置文件models/yolov5s_city_seg.yaml模型配置文件可以看到我在检测层前面加了分割层配置并增加了分割类别Cityscapes是19。推理不同Head预训练模型不用修改想训练不同Head模型需要注释和解注释PSP、Base和Lab不用再改train.py但BiSe还要注释和解注释train.py的两个地方加入aux loss后续会说明接口设计缺陷但暂时没时间改实际上用PSP、Base、Lab就够了除非你想增加辅助损失。sml模型参照原版区别仅在控制深度和宽度的depth_multiplewidth_multiple数值BasePSP和Lab的分割头也会随sml自动放缩。自问自答训练时候报only test a child process或者加载卡住是BUG但是程序其实没有死等待一会若有谁解决了加载效率和这个问题烦请issue戳一下。testval mode加载器比较慢但正常不应该达到2分钟以上。没看过YOLO源码可以魔改吗- 可以直接在我的分割头和配置文件上改可以不用去看解析函数等代码。涉及修改backbone分割层不在24层接口不同的分割头时候需要至少读过yolo.py相关代码特别是Model的初始化、parse和run_once三部分。训这个前建议至少训过原版YOLOv5很多流程和原版一样。我把train_custom.py里的分割验证loader的batchsize改成1了目的是兼顾有不同尺寸的数据集同尺寸数据集嫌慢的可以手动改一下代码把分割验证batchsize调大。不同尺寸也嫌慢的可以去train_custom.py解注释val mode的loader然后把testval mode的loader注释。训自己数据集看上面的教程链接但还是建议读一下SegmentationDataset.py做了什么必要时候自己实现类。

相关文章:

基于深度学习的城市道路分割识别 图像识别+图像分割的多任务模型之道路分割 深度徐恶习路沿分割和车辆检测

基于Ultralytics/YOLOv5/v8的多任务模型 概述 本项目基于Ultralytics/YOLOv5,通过增加少量计算和显存开销,实现了同时进行目标检测和语义分割的多任务模型。在1024512的输入分辨率下,显存增加约350MB,而同分辨率下增加一个BiSeN…...

问题解决:Ubuntu 下 IDEA 复制中文变问号乱码

问题描述 在 Ubuntu 系统中(Wayland 桌面协议),使用最新版的 IntelliJ IDEA 2026.1 开发时,遇到了一个极其诡异的复制粘贴问题:从 IDEA 中复制一段包含中文的代码或文字,粘贴到 Chrome 浏览器、VS Code 时…...

LaTeX2Word-Equation:学术写作的公式迁移革命,3秒完成数学公式完美转换

LaTeX2Word-Equation:学术写作的公式迁移革命,3秒完成数学公式完美转换 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 还…...

海信空调应战格力,缺了点底气

家电行业的商战朴实无华,高层直接隔空对骂。一句「真铜实料」广告语,格力电器市场总监朱磊怒斥海信“公然剽窃格力原创”,话里话外你不配;海信空调空气事业部品牌总监杨祥玺回怼格力“又当又立”,海信另一位高管杨万手…...

LayerDivider:基于色彩聚类的智能图像分层技术解析

LayerDivider:基于色彩聚类的智能图像分层技术解析 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider LayerDivider是一款创新的开源工具&#x…...

Unity UGUI无限滑动列表实战:从背包系统到排行榜,性能优化全解析

Unity UGUI无限滑动列表实战:从背包系统到排行榜,性能优化全解析 在移动游戏开发中,处理大量数据展示一直是性能优化的重点难点。无论是角色背包中的数百件装备,还是全球玩家排行榜的实时更新,传统滚动列表直接实例化所…...

RK3588上OpenCV C++环境搭好了,然后呢?一个图像灰度化实例带你快速上手

RK3588上OpenCV C实战:从图像灰度化到完整视觉项目开发 刚在RK3588上搭建好OpenCV C环境,却不知道如何迈出第一步?本文将带你从最简单的图像灰度化项目开始,逐步深入OpenCV C开发的核心技巧。不同于基础安装教程,我们更…...

Zotero插件市场:5分钟打造你的专属学术工具箱终极指南

Zotero插件市场:5分钟打造你的专属学术工具箱终极指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing, installing, and reviewing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 还…...

暗黑破坏神2存档编辑器终极指南:5分钟快速掌握游戏修改技巧

暗黑破坏神2存档编辑器终极指南:5分钟快速掌握游戏修改技巧 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗?想快速体验不同职业的build却不想从头练级&#xff1f…...

手把手教你用stressapptest给嵌入式开发板做内存压力测试(附交叉编译避坑指南)

手把手教你用stressapptest给嵌入式开发板做内存压力测试(附交叉编译避坑指南) 在嵌入式开发中,内存稳定性往往是决定系统可靠性的关键因素。无论是工业控制设备还是消费电子产品,偶发的死机或蓝屏问题背后,常常隐藏着…...

3步精通Godot PCK解包:游戏资源提取的完整实战方案

3步精通Godot PCK解包:游戏资源提取的完整实战方案 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 在游戏开发与逆向工程领域,Godot引擎的PCK资源包常成为技术人员的探索障碍…...

优化器未使用索引案例分析

现有物化视图 mv_union_auto_order,已创建索引:CREATE INDEX idx_mv_union_auto_order_f_create_time ON mv_union_auto_order(f_create_time); 对下述查询语句进行explain分析。 -- 改为从实例化视图查询 with order_data as (selectf_city_name as ar…...

RAGAs与G-Eval构建智能体评估体系实战

1. 从零构建基于RAGAs与G-Eval的智能体评估体系在构建大语言模型应用时,开发者常陷入"黑箱困境"——我们能看到输入和输出,却难以量化系统内部的真实表现。传统的人工评估不仅成本高昂,更存在主观性强、标准不统一的问题。本文将分…...

EasyExcel分批写入实战:规避.withTemplate陷阱,高效防OOM方案解析

1. 为什么.withTemplate会成为内存杀手? 最近在优化一个数据导出功能时,我遇到了一个典型的OOM(内存溢出)问题。场景是这样的:需要将百万级数据分批查询后写入Excel,最初采用了.withTemplate(file)的方式合…...

5分钟极速上手:League Akari 智能工具包让您的英雄联盟体验焕然一新

5分钟极速上手:League Akari 智能工具包让您的英雄联盟体验焕然一新 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 您是否曾因错过…...

树结构,转换

type TreeNode {children?: TreeNode[][key: string]: any }/*** 给树结构补充 canSelect 字段* 规则&#xff1a;* 1. 当前级别 > 3&#xff0c;可选* 2. 当前级别 < 3&#xff0c;但没有子节点&#xff0c;也可选* 3. 其他不可选** param tree 树数据* param level 起…...

Office自定义界面编辑器终极指南:免费打造专属Office功能区

Office自定义界面编辑器终极指南&#xff1a;免费打造专属Office功能区 【免费下载链接】office-custom-ui-editor Standalone tool to edit custom UI part of Office open document file format 项目地址: https://gitcode.com/gh_mirrors/of/office-custom-ui-editor …...

半导体行业考研择业参考:一篇写给电子信息学子的行业笔记

这是一篇基于公开资料整理的学习笔记&#xff0c;帮助准备考研或刚入行的同学了解半导体/集成电路方向的基本情况。所有数据仅供参考&#xff0c;请以官方渠道为准。一、为什么关注半导体方向&#xff1f; 最近几年&#xff0c;"芯片"这个词频繁出现在新闻里。从手机…...

Spring Boot 3.2.3项目里,用Knife4j 4.4.0给API文档加点‘料’(附JDK 17避坑点)

Spring Boot 3.2.3项目实战&#xff1a;用Knife4j 4.4.0打造专业级API文档&#xff08;含JDK 17适配指南&#xff09; 在微服务架构盛行的今天&#xff0c;API文档的质量直接影响着开发效率与协作体验。当我们将项目升级到Spring Boot 3.2.3和JDK 17这一前沿技术栈时&#xff0…...

一念成仙 攻略 核心地图移动与高级传送技巧完全指南

在众多文字修仙爱好者寻找优质玩法体验时&#xff0c;一念成仙凭借其庞大且真实的地图交互系统脱颖而出。为了帮助新手与进阶玩家在广袤的修仙世界中高效跑图&#xff0c;本篇一念成仙 攻略将结合深度的实际游玩经验&#xff0c;为您提供最专业、最可靠的地图移动与传送系统解析…...

从Postman到Kibana:一文搞懂Elasticsearch REST API的增删改查与高级查询

从Postman到Kibana&#xff1a;一文搞懂Elasticsearch REST API的增删改查与高级查询 在数据驱动的现代应用开发中&#xff0c;Elasticsearch已成为处理海量搜索和分析需求的首选引擎。但对于开发者而言&#xff0c;仅仅理解其核心概念远远不够——真正影响开发效率的&#xff…...

思源黑体TTF构建工具:从零到一打造专业多语言字体家族

思源黑体TTF构建工具&#xff1a;从零到一打造专业多语言字体家族 【免费下载链接】source-han-sans-ttf A (hinted!) version of Source Han Sans 项目地址: https://gitcode.com/gh_mirrors/so/source-han-sans-ttf 思源黑体TTF构建工具是一个专业级的字体构建系统&am…...

抖音视频批量下载终极指南:douyin-downloader完整使用教程

抖音视频批量下载终极指南&#xff1a;douyin-downloader完整使用教程 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

别再只用思维导图了!用JSMind 0.5 + Vue3 打造一个带状态流转的流程图(附完整源码)

用JSMind 0.5 Vue3构建状态流程图&#xff1a;轻量级解决方案实战 在Vue3项目中实现流程图功能时&#xff0c;开发者常面临两难选择&#xff1a;要么引入GoJS这类重型库导致项目臃肿&#xff0c;要么自行开发耗费大量时间。JSMind作为一款轻量级思维导图库&#xff0c;通过灵活…...

FPGA DDR3读写性能优化实战:基于MIG IP与AXI4总线的FIFO缓存设计

FPGA DDR3读写性能优化实战&#xff1a;基于MIG IP与AXI4总线的FIFO缓存设计 在高速数据采集和实时图像处理系统中&#xff0c;DDR3内存控制器设计一直是FPGA开发者面临的核心挑战。当数据吞吐量达到GB/s级别时&#xff0c;如何通过合理的FIFO缓存设计和AXI4总线优化来突破性能…...

别再为GEOS编译踩坑了!手把手教你用CMake搞定GEOS 3.7.5(附GeometryFactory.h源码修改指南)

从零构建GEOS 3.7.5&#xff1a;Windows平台编译实战与核心功能解析 在GIS开发领域&#xff0c;GEOS库作为处理空间几何关系的核心引擎&#xff0c;其重要性不言而喻。然而对于许多Windows平台的C开发者而言&#xff0c;从源码编译GEOS却成为了一道令人望而生畏的技术门槛。本文…...

如何免费解锁八大网盘满速下载:LinkSwift网盘助手完整指南

如何免费解锁八大网盘满速下载&#xff1a;LinkSwift网盘助手完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...

从视频拼接屏到雷达信号处理:拆解AXI4-Stream Switch在真实项目里的两种高阶用法

从视频拼接屏到雷达信号处理&#xff1a;AXI4-Stream Switch的两种高阶实战解析 在FPGA系统设计中&#xff0c;数据流的高效调度往往成为性能瓶颈的关键突破点。想象一下&#xff0c;当16路4K视频流需要实时分配到8个显示终端&#xff0c;或者32通道雷达回波数据要动态分配给4个…...

Pixel Aurora Engine一文详解:开源AI绘图工具的像素化技术实现路径

Pixel Aurora Engine一文详解&#xff1a;开源AI绘图工具的像素化技术实现路径 1. 像素艺术与AI的完美结合 Pixel Aurora Engine&#xff08;像素极光引擎&#xff09;是一款将现代AI技术与复古像素艺术完美融合的开源绘图工具。它基于先进的扩散模型&#xff08;Diffusion M…...

如何让微信聊天记录成为你的永久数字记忆?WeChatMsg完全指南

如何让微信聊天记录成为你的永久数字记忆&#xff1f;WeChatMsg完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...