YOLOP多任务检测算法详解
YOLOP 全景驾驶感知 同时处理三大视觉任务
一、YOLOP简介
-
YOLOP概述
YOLOP能同时处理目标检测、可行驶区域分割、车道线检测 三个视觉感知任务,并速度优异、保持较好精度进行工作,代码开源。它是华中科技大学——王兴刚团队,在全景驾驶感知方面提出的模型,致敬开源精神。
论文地址:https://arxiv.org/abs/2108.11250
开源代码:https://github.com/hustvl/YOLOP
全景驾驶感知系统是自动驾驶的重要组成部分。高精度、实时的感知系统可以辅助车辆在行驶中做出合理的决策。提出了一个全景驾驶感知网络(YOLOP)来同时执行交通目标检测、可行驶区域分割和车道检测。
在上图中,紫色边界框表示交通对象,绿色区域是可行驶区域,红色线表示车道线。
-
YOLOP网络框架
YOLOP由一个用于特征提取的编码器,和三个用于处理特定任务的解码器组成。下图是YOLOP的网络结构:
YOLOP是一种单阶段网络,包含一个共享编码器,三个用于特定任务的解码器。其中三个任务的解码器:目标检测部分、可行驶区域分割、车道线分割。不同解码器之间并没有复杂的、冗余共享模块,这可以极大降低计算量,同时使得该网络易于端到端训练。
二、环境搭建
下载工程包,并解压。
-
首先创建一个conda环境,命名为YOLOP
conda create -n YOLOP python=3.7
-
创建好后进入环境
conda activate YOLOP
-
安装PyTorch 1.7+版本和 torchvision 0.8+版本
conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.2 -c pytorch
-
安装其他依赖库
pip install -r requirements.txt
如果安装过程没错误,这样YOLOP的开发环境就搭建好了。
三、数据集
该算法基于开源数据集BDD100K进行训练。
论文:https://arxiv.org/pdf/1805.04687.pdf
数据集:https://bdd-data.berkeley.edu/
伯克利AI实验室发表了CV领域到目前为止规模最大、最多样化的开源视频数据集–BDD100K数据集。该数据集由100000个视频组成,每个视频大约40秒,720P,30fps,总时间超过1,100小时,视频序列还包括GPS位置、IMU数据和时间戳;视频带有由手机记录的GPS/IMU信息,以显示粗略的驾驶轨迹,这些视频分别是从美国不同的地方收集的,如上图所示,该数据库,涵盖了不同的天气状况,包含晴天、阴天和雨天以及在白天和夜天的不同时间。
按照如下数据集结构组织数据集:
├─datasets // root
│ ├─images // 图片
│ │ ├─train
│ │ ├─val
│ ├─det_annotations // 目标检测标注文件
│ │ ├─train
│ │ ├─val
│ ├─da_seg_annotations // 可行驶区域分割任务标注文件
│ │ ├─train
│ │ ├─val
│ ├─ll_seg_annotations // 车道线分割任务标注文件
│ │ ├─train
│ │ ├─val
四、模型训练
-
在./lib/config/default.py设定训练配置(包括:预训练模型的读取、损失函数、数据增强、optimizer、训练预热和余弦退火、自动anchor、训练轮次epoch、batch_size)
# DATASET related params
_C.DATASET = CN(new_allowed=True)
_C.DATASET.DATAROOT = 'datasets/images' # the path of images folder
_C.DATASET.LABELROOT = 'datasets/det_annotations' # the path of det_annotations folder
_C.DATASET.MASKROOT = 'datasets/da_seg_annotations' # the path of da_seg_annotations folder
_C.DATASET.LANEROOT = 'datasets/ll_seg_annotations' # the path of ll_seg_annotations folder
开始训练
python tools/train.py
多GPU训练
python -m torch.distributed.launch --nproc_per_node=N tools/train.py # N: the number of GPUs
五、模型推理
在 ./lib/config/default.py设定测试配置(包括: batch_size 以及 nms的阈值等).
开始评测:
python tools/test.py --weights weights/End-to-end.pth
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)