YOLOP多任务检测算法详解

一、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进行训练。

官网:BDD100K: A Large-scale Diverse Driving Video Database – The Berkeley Artificial Intelligence Research Blog

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

目标检测计算机视觉领域中的一个重要任务,它旨在从图像或视频中自动检测出目标物体的位置、大小,并进行分类或识别。以下是对目标检测计算机视觉的详细解析: 一、目标检测的基本概念 定义:目标检测的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置。这包括解决“是什么?”(分类问题)和“在哪里?”(定位问题)两个核心问题。 基本框架:目标检测的基本框架通常包括目标定位、目标分类和目标框回归三个部分。目标定位负责在图像中精确定位目标的位置和大小;目标分类则是将该目标与预先定义的种类进行匹配;目标框回归则是根据预测的位置偏移量修正目标框的位置和大小,以提高检测精度。 二、目标检测的分类 目标检测算法大致可以分为以下几类: 基于传统机器学习的目标检测算法:这类算法主要通过手动提取图像的特征,如颜色、形状、边缘等,然后使用传统的机器学习方法,如支持向量机(SVM)、决策树等进行分类。然而,这类算法需要人工设计特征提取器,且难以适应不同形态的物体检测,因此逐渐被深度学习方法所取代。 基于深度学习的目标检测算法:随着深度学习技术的发展,基于神经网络的目标检测算法逐渐成为主流。这类算法可以自动学习图像的特征,无需人工干预,大大提高了检测的准确率和效率。深度学习目标检测算法主要分为两类:Two-stage和One-stage。 Two-stage算法:先进行区域生成,再通过卷积神经网络进行样本分类。常见的Two-stage算法有R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:直接在网络中提取特征来预测物体分类和位置,无需区域生成步骤。常见的One-stage算法YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)等。 三、目标检测计算机视觉中的应用 目标检测计算机视觉领域有着广泛的应用,包括但不限于以下几个方面: 智能交通:在交通监控系统中,目标检测可用于车辆、行人等目标的检测,帮助交通系统更好地进行交通管理和安全控制。此外,在自动驾驶领域,目标检测也是实现自主驾驶的关键技术之一。 安防监控:在安防领域,目标检测可用于人脸识别、行为分析等方面,提高安防监控的效率和精准度。例如,通过对监控视频中的行人、车辆等进行目标检测,可以实现对安防事件的及时预警处理。 医学影像分析:在医学影像分析领域,目标检测可用于识别CT、MRI等影像数据中的病变区域,辅助医生进行疾病的诊断和治疗。 农业自动化:在农业领域,目标检测可用于果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值