• YOLOP——全景驾驶感知理论解读与实践上手


    前言

    YOLOP是华中科技大学研究团队在2021年开源的研究成果,其将目标检测/可行驶区域分割和车道线检测三大视觉任务同时放在一起处理,并且在Jetson TX2开发板子上能够达到23FPS。

    论文标题:YOLOP: You Only Look Once for Panoptic Driving Perception
    论文地址: https://arxiv.org/abs/2108.11250
    官方代码: https://github.com/hustvl/YOLOP

    网络结构

    相比于其它论文,YOLOP的论文很容易阅读。YOLOP的核心亮点就是多任务学习,而各部分都是拿其它领域的成果进行缝合,其网络结构如下图所示:

    在这里插入图片描述
    三个子任务共用一个Backbone和Neck,然后分出来三个头来执行不同的任务。

    Encoder

    根据论文所述,整个网络可以分成一个Encoder和3个Decoder。
    Encoder包含Backbone和Neck,Backbone照搬了YOLOv4所采用的CSPDarknet,Neck也和YOLOv4类似,使用了空间金字塔(SPP)模块和特征金字塔网络(FPN)模块。

    Decoders

    Decoders即三个任务头

    Detect Head

    目标检测头使用了Path Aggregation Network (PAN)结构,这个结构可以将多个尺度特征图的特征图进行融合,其实还是YOLOv4那一套。

    Drivable Area Segment Head & Lane Line Segment Head

    可行驶区域分割头和车道线检测头都属于语义分割任务,因此YOLOP使用了相同的网络结构,经过三次上采样,将输出特征图恢复为(W, H, 2)的大小,再进行具体任务的处理。

    Loss Function

    损失函数包括三部分,即三个任务的损失。

    目标检测损失

    目标检测是直接照搬YOLOv4的,因此和YOLOv4采用的损失一样,经典的边界框损失、目标损失和类别损失,各自加了个权重。
    在这里插入图片描述

    语义分割损失

    另外两个语义分割损失采用的均是交叉熵损失。

    总体损失

    总体损失为三部分损失之和:
    在这里插入图片描述

    实验数据对比

    作者后续做了一些对比实验,实际上,这样的对比实验并不“公平”,YOLOP是多任务,其它算法基本上都是单任务。

    目标检测对比

    在这里插入图片描述
    首先是在目标检测方面和其它主流算法进行对比,可以看到YOLOP的速度和准确率还不如YOLOv5s,但是召回率却比它要高,这意味着YOLOP能够有更少的漏检目标。

    语义分割对比

    在这里插入图片描述
    语义分割方面,可以看到YOLOP无论是速度还是准确性上都是完胜的。

    对比效果可视化

    最后作者用大量的篇幅分别针对白天和黑夜场景下的三个子任务,和主流算法进行对比。

    目标检测对比

    作者和Faster R-CNN进行对比,可以看到两者差别并不是非常明显。
    在这里插入图片描述

    可行驶区域分割对比

    作者和PSPNet进行对比,可以看到YOLOP效果更好,图中黄线圈出的是漏检,红线框出的是误检。
    在这里插入图片描述

    车道线分割对比

    作者和ENet-SAD进行对比,可以看到这方面也是YOLOP取得明显优势。
    在这里插入图片描述

    实践上手

    YOLOP的代码结构和YOLOv6差不多,贴心的作者不仅提供了测试样例,而且还提供了训练好的模型权重,直接放在代码仓库里面,无需额外进行下载。
    在这里插入图片描述
    实现推理是需要运行demo.py这个主函数,超参数根据自己的路径进行调整:

    在这里插入图片描述

    效果演示

    我将YOLOP输出的结果和之前multiyolov5输出的结果进行对比,效果可以参见下面的视频。

    【Demo】YOLOP&multiyolov5行车场景效果演示

  • 相关阅读:
    路由事件2
    Ts中的Pick,Omit,Extract和Exclude区别
    学习笔记(1)元素,列表,表格,表单,
    【量化小技巧】Python通过统计数据来进行过滤tushare涨停Dataframe,df.loc,或许有些启示与帮助
    实现Callable接口实现线程创建及线程注意事项包括线程状态,一些API
    力扣560:和为 K 的子数组(Java)
    老杨说运维 | 想转型的请注意!这几点不容忽视
    “微软爱写作”连词摘录
    shiro授权-SSM
    IDEA插件开发(25)--Color Scheme Management
  • 原文地址:https://blog.csdn.net/qq1198768105/article/details/126286578