Google Colab 开发记录(4)YOLOP 论文解读、环境搭建、推理

网友投稿 841 2022-05-29

前言

本文首先进行YOLOP 论文解读,然后实践记录,首先搭建YOLOP 开发环境,最后推理,查看效果。”实践“分为精简版和详细版,精简版是由简介和命令组成的;详细版是由简介、命令、过程信息记录 组成的。

YOLOP 论文解读

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

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

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

摘要

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

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

一、网络框架

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

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

1.1 Encoder 编码器

该网络中的编码器由Backbone网络与Neck网络构成。

Backbone网络:参考了YOLOv4,采用CSP-Darknet结构,提取输入图像的特征。它支持特征传播和重用,减少了参数和计算的数量。

Neck网络:使得提取的图像特征以充分利用它们。它由空间金字塔池(SPP)模块和特征金字塔网络(FPN)模块组成。SPP模型生成并融合不同尺度的特征,FPN模块融合不同语义层次的特征。因此,Neck网络生成包含“多个尺度”和“多个语义级别信息”的丰富特征,便于融合特征。

1.2 Decoders 解码器

YOLOP包含三个用于三个任务的解码器:目标检测部分、可行驶区域分割、车道线分割。

1)对于目标检测任务,YOLOP 采用了类似于 YOLOv4 的基于锚框Anchor的多尺度检测技术。这部分结构由“路径聚合网络”组成;Neck网络中的 FPN 自上而下传输语义特征,而 PAN 自下而上传输图像特征。YOLOP 将它们结合起来以获得更好的特征融合效果,由此获得的多尺度融合特征图用于检测。

Google Colab 开发记录(4)YOLOP 论文解读、环境搭建、推理

多尺度特征的每个grid被赋予三个先验anchor(包含不同纵横比),检测头将预测位置偏移、高宽、类别概率以及预测置信度。

2)可行驶区域分割和车道线分割部分使用相同的网络结构。将FPN的输出特征(分辨率为)送入到分割分支。我们设计的分割分支非常简单,通过三次上采样处理输出特征尺寸为,代表每个像素是驾驶区域/车道线还是背景的概率。由于Neck中已包含SPP模块,我们并未像PSPNet添加额外的SPP模块。此外,我们采用了最近邻上采样层以降低计算量。因此,分割解码器不仅具有高精度输出,同时推理速度非常快。

来自 FPN 底层的大小为(W/8, H/8, 256)的特征被馈送到分割分支。它应用三个上采样过程并将特征图恢复为(W, H, 2),它表示输入图像中可行驶区域和车道线的像素级概率。在其他分割网络有 SPP 模块的地方,YOLOP 分割头不需要,因为Neck网络中共享 SPP 模块。

二、损失函数和训练方法

YOLOP 使用简单的损失函数,它为三个解码器头提供三个单独的损失函数。检测损失是分类损失、对象损失和边界框损失的加权和。可行驶区域分割头和车道线分割头的损失函数都包含带有 logits 的交叉熵损失。车道线分割由于其在预测备用类别方面的有效性而具有额外的 IoU 损失。模型的整体损失函数是所有三个损失的加权和。

三、YOLOP效果与性能

车辆检测效果:

可行区域检测效果:

车道线检测效果:

性能小结:

YOLOP 在具有挑战性的 BDD100K 数据集上针对三个任务的最新模型进行了测试。它在对象检测任务的准确性方面击败了 Faster RCNN、MultiNet 和 DLT-Net,并且可以实时推断。对于可行驶区域分割任务,YOLOP 的性能分别比 MultiNet 和 DLT-Net 等模型高 19.9% 和 20.2%。而且,它比它们都快 4 到 5 倍。同样,对于车道检测任务,它的性能优于现有的最先进模型高达 2 倍。

它是首批在 Jetson TX2 等嵌入式设备上同时实时执行这三项任务并实现最先进性能的模型之一。

下面实践内容

前提

挂载谷歌云盘、来到自己的谷歌云盘下的目录。

from google.colab import drive

drive.mount('/content/gdrive')

在云盘中,创建一个名为YOLOP的目录,然后进入目录

cd /content/gdrive/MyDrive/YOLO/

精简版——YOLOP 环境搭建、推理

1)查看当前文件目录

!pwd

显示:/content/gdrive/MyDrive/YOLOP

2)查看分配了什么GPU、内存多大

首先点击“修改”,选择“笔记本设置”,硬件加速----GPU加速

!nvidia-smi

from psutil import virtual_memory

ram_gb = virtual_memory().total / 1e9

print('Your runtime has {:.1f} gigabytes of available RAM\n'.format(ram_gb))

3)下载YOLOv5官方代码

!git clone https://github.com/hustvl/YOLOP.git

4)查看当前目录有哪些文件

!ls

5)进入YOLOP目录

cd YOLOP

!pwd

这两调命令需要分开执行;

6)安装YOLOP的开发环境

6.1、先安装conda开发环境

!wget -c https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh

!chmod +x Miniconda3-py37_4.10.3-Linux-x86_64.sh

%env PYTHONPATH=

!./Miniconda3-py37_4.10.3-Linux-x86_64.sh -b -f -p /usr/local

添加conda环境变量

import sys

_ = (sys.path.append("/usr/local/lib/python3.7/site-packages"))

测试conda环境

!conda env list

6.2、正式安装YOLOP的开发环境

!conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.2 -c pytorch

pip install -r requirements.txt

pip install ipykernel

7)推理

默认是CPU进行推理的

!python tools/demo.py  --source inference/images/name.jpg

使用GPU推理图片。

这里的0 是指系统为GPU分配的cuda device号,如果只有一个显卡,默认是0了。

!python tools/demo.py  --source inference/images/1.jpg  --device 0

使用GPU推理视频

!python tools/demo.py --source inference/videos/1.mp4  --device 0

使用相机进行推理

这里的--source 0,是指系统为相机分配的设备号,如果只有一个,默认是0了。

!python tools/demo.py --source 0  --device 0

详细版——YOLOP 环境搭建、推理

1)查看当前文件目录

!pwd

显示:/content/gdrive/MyDrive/YOLOP

2)查看分配了什么GPU、内存多大

首先点击“修改”,选择“笔记本设置”,硬件加速----GPU加速

!nvidia-smi

from psutil import virtual_memory

ram_gb = virtual_memory().total / 1e9

print('Your runtime has {:.1f} gigabytes of available RAM\n'.format(ram_gb))

3)下载YOLOv5官方代码

!git clone https://github.com/hustvl/YOLOP.git

4)查看当前目录有哪些文件

!ls

5)进入YOLOP目录

cd YOLOP

!pwd

这两调命令需要分开执行;

6)安装YOLOP的开发环境

6.1、先安装conda开发环境

!wget -c https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh

!chmod +x Miniconda3-py37_4.10.3-Linux-x86_64.sh

%env PYTHONPATH=

!./Miniconda3-py37_4.10.3-Linux-x86_64.sh -b -f -p /usr/local

添加conda环境变量

import sys

_ = (sys.path.append("/usr/local/lib/python3.7/site-packages"))

测试conda环境

!conda env list

6.2、正式安装YOLOP的开发环境

!conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=10.2 -c pytorch

pip install -r requirements.txt

pip install ipykernel

7)推理

默认是CPU进行推理的

!python tools/demo.py  --source inference/images/name.jpg

使用GPU推理图片。

这里的0 是指系统为GPU分配的cuda device号,如果只有一个显卡,默认是0了。

!python tools/demo.py  --source inference/images/name.jpg  --device 0

使用GPU推理视频

!python tools/demo.py --source inference/videos/1.mp4  --device 0

使用相机进行推理

这里的--source 0,是指系统为相机分配的设备号,如果只有一个,默认是0了。

!python tools/demo.py --source 0  --device 0

参考链接:https://github.com/hustvl/YOLOP

GPU加速云服务器 深度学习 神经网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RDP是什么意思?有什么用?
下一篇:【leetcode】高频题目整理_排序篇( High Frequency Problems, Sort )
相关文章