一、YOLOP简介

  1. YOLOP概述

YOLOP能同时处理目标检测、可行驶区域分割、车道线检测 三个视觉感知任务,并速度优异、保持较好精度进行工作,代码开源。它是华中科技大学——王兴刚团队,在全景驾驶感知方面提出的模型,致敬开源精神。

论文地址:https://arxiv.org/abs/2108.11250

开源代码:https://github.com/hustvl/YOLOP

全景驾驶感知系统是自动驾驶的重要组成部分。高精度、实时的感知系统可以辅助车辆在行驶中做出合理的决策。提出了一个全景驾驶感知网络(YOLOP)来同时执行交通目标检测、可行驶区域分割和车道检测。

在上图中,紫色边界框表示交通对象,绿色区域是可行驶区域,红色线表示车道线。

  1. YOLOP网络框架

YOLOP由一个用于特征提取的编码器,和三个用于处理特定任务的解码器组成。下图是YOLOP的网络结构:

YOLOP是一种单阶段网络,包含一个共享编码器,三个用于特定任务的解码器。其中三个任务的解码器:目标检测部分、可行驶区域分割、车道线分割。不同解码器之间并没有复杂的、冗余共享模块,这可以极大降低计算量,同时使得该网络易于端到端训练。

二、环境搭建

下载工程包,并解压。

  1. 首先创建一个conda环境,命名为YOLOP

conda create -n YOLOP python=3.7
  1. 创建好后进入环境

conda activate YOLOP
  1. 安装PyTorch 1.7+版本和 torchvision 0.8+版本

conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.2 -c pytorch
  1. 安装其他依赖库

pip install -r requirements.txt

如果安装过程没错误,这样YOLOP的开发环境就搭建好了。

三、数据集

该算法基于开源数据集BDD100K进行训练。

官网:https://bair.berkeley.edu/blog/2018/05/30/bdd/

论文: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

四、模型训练

  1. 在./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

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐