本文发表于第32届神经信息处理系统会议(NIPS 2018),是法国汽车零部件供应商法雷奥集团(Valeo)研究提出的一种用于自动驾驶领域的多任务神经网络,可同时执行目标检测与语义分割任务。
代码开源地址:https://github.com/MarvinTeichmann/MultiNet

Abstract

卷积神经网络(CNN)被成功地用于各种视觉感知任务,包括目标检测、语义分割、光流、深度估计和视觉SLAM。通常,这些任务是独立探索和建模的。

本文提出了一种同时进行学习目标检测和语义分割的联合多任务网络设计。主要目的是通过共享两个任务的编码器来实现低功耗嵌入式SOC的实时性能。我们使用一个类似于ResNet10的小型编码器构建了一个高效的体系结构,该编码器为两个解码器所共享。目标检测使用YOLOv2类解码器,语义分割使用FCN作为解码器。

我们在两个公共数据集(Kitti,Cityscapes)和我们的私有鱼眼摄像机数据集中对所提出的网络进行了评估,并证明了联合网络与单独网络具有相同的准确率。我们进一步优化了网络,使1280x384分辨率的图像达到30fps。


1. Introduction

卷积神经网络(CNNs)已经成为自动车辆中大多数视觉感知任务的标准构件。目标检测是CNN在行人和车辆检测中的首批成功应用之一。近年来,语义分割逐渐成熟,从检测道路、车道、路缘等道路对象开始。尽管嵌入式系统的计算能力有了很大提高,专用CNN硬件加速器的趋势也在不断发展,但高精度的语义分割的实时性能仍然具有挑战性。本文提出了一种语义分割和目标检测的实时联合网络,覆盖了自动驾驶中所有的关键对象。

论文的其余部分结构如下。第二节回顾了目标检测在自动驾驶中的应用,并提供了使用多任务网络解决该问题的动机。第三部分详细介绍了实验装置,讨论了所提出的体系结构和实验结果。最后,第四部分对论文进行了总结,并提出了未来可能的研究方向。

2. Multi-task learning in Automated Driving

多任务的联合学习属于机器学习的一个子分支,称为多任务学习。多任务联合学习背后的基本理论是,网络在接受多任务训练时可以表现得更好,因为它们通过利用任务间规则来更快地学习游戏规则。这些网络不仅具有较好的通用性,而且降低了计算复杂度,使其在低功耗嵌入式系统中非常有效。最近的进展表明,CNN可以用于各种任务[6],包括运动目标检测[13]、深度估计[8]和视觉SLAM[9]。

我们的工作最接近于最近的MultiNet[14]。我们的不同之处在于,我们关注的是更小的网络更多类的两个任务,以及在三个数据集中进行的更广泛的实验

2.1 Important Objects for Automated Driving

流行的语义分割汽车数据集有CamVid[1]和较新的City Scenes[3]。后者具有5000个注释帧的大小,这是相对较小的。在这个数据集上训练的算法不能很好地推广到在其他城市和隧道等看不见的对象上测试的数据。为了弥补这一点,我们创建了像Synthia[11]和Virtual Kitti[4]这样的合成数据集。有一些文献表明,在较小的数据集中,组合会产生合理的结果。但对于自动驾驶系统的商业部署来说,它们仍然有限。因此,最近正在努力构建更大的语义细分数据集,如Mapillary vistas数据集[10]和ApolloScape[7]。Mapillary数据集由25,000幅图像组成,共100类。ApolloScape数据集由50个类别的143,000张图像组成。

2.2 Pros and Cons of MTL

在本文中,我们提出了一种具有共享编码器的网络结构,该编码器可以共同学习。其主要优点是提高了效率、可伸缩性,可以利用先前的功能添加更多任务,并通过归纳迁移(任务的学习可转移特征)实现更好的泛化。我们将在下面更详细地讨论共享网络的优缺点。

共享网络的优点:

  • 计算效率:共享功能背后简单易懂的直觉提高了计算效率。假设有两个类和两个独立的网络,分别占用50%的处理能力。如果有可能在两个网络之间共享30%,则每个网络都可以重复使用额外的15%来单独创建一个稍大的网络。有大量的经验证据表明,网络的初始层是与任务无关的(oriented Gabor filters),我们应该能够进行一定程度的共享,越多越好。
  • 泛化和准确性:在忽略计算效率的情况下,共同学习的网络往往泛化得更好、更准确。这就是为什么ImageNet上的迁移学习非常流行的原因,那里有网络学习非常复杂的类别,比如区分特定种类的狗。因为拉布拉多犬和博美拉多犬这两个物种之间的细微差别是后天习得的,所以它们更善于检测一项更简单的犬类检测任务。另一个论点是,当他们共同学习时,过度适应某项特定任务的可能性较小。
  • 可扩展到更多任务,如流量估计、深度、通信和跟踪。因此,可以协调共同的CNN特写流水线,以用于各种任务。

共享网络的缺点:

  • 在非共享网络的情况下,算法是完全独立的。这可以使数据集设计、体系结构设计、调优、硬负面挖掘等变得更简单、更容易管理。
  • 调试共享网络(尤其是当它不工作时)相对较难。

3. Proposed Algorithm and Results

3.1 Network Architecture

在本节中,我们将报告我们计划改进的基线网络设计的结果。我们在图1的高级框图中提出了一种联合学习的共享编码器网络体系结构。我们实现了一个由3个分割类(背景、道路、人行道)和3个对象类(汽车、人、骑车人)组成的两任务网络。

为了在低功耗嵌入式系统上实现可行性,我们使用了一个名为 Resnet10 的小型编码器,该编码器完全共享这两个任务。FCN8 作为语义分割的解码器,YOLO 作为目标检测的解码器。语义分割的损失函数是最小化误分类的交叉熵损失。对于几何函数,以平方误差损失的形式将目标定位的平均精度作为误差函数。对于这两个任务,我们使用单个损失的加权和L=wseg∗Lseg+wdet∗LdetL=w_{seg}∗L_{seg}+w_{det}∗L_{det}L=wseg​∗Lseg​+wdet​∗Ldet​。在鱼眼相机具有较大空间变异畸变的情况下,我们使用多项式模型实现了镜头畸变校正。

3.2 Experiments

在这一部分中,我们将解释实验设置,包括使用的数据集、训练算法细节等,并讨论结果。

我们在包含5000张图像和两个公开可用的数据集Kitti[5]和CitySces[3]的内部鱼眼数据集上进行了训练和评估。我们使用Keras[2]实现了不同提出的多任务架构。我们使用了来自ImageNet的预先训练好的Resnet10编码器权重,然后针对这两个任务进行了微调FCN8上采样层使用随机权重进行初始化。

我们使用ADAM优化器,因为它提供了更快的收敛速度,学习率为0.0005。优化器采用分类交叉熵损失和平方误差损失作为损失函数。以平均类IOU(交集)和每类IOU作为语义分割的精度度量,以平均平均精度(MAP)和每类平均精度作为目标检测的精度度量。由于多个任务需要内存,所有输入图像的大小都调整为1280x384

表1总结了在Kitti、Citycapes和我们的内部鱼眼数据集上STL网络和MTL网络所获得的结果。这旨在为合并更复杂的多任务学习技术提供基准精度。我们将分割网络(STL Seg)和检测网络(STL Det)与执行分割和检测的MTL网络(MTL、MTL100和MTL100)进行比较。

我们测试了MTL损耗的3种配置,第一种配置(MTL)使用分割损耗和检测损耗的简单和(wseg=wdet=1)(w_{seg}=w_{det}=1)(wseg​=wdet​=1)。另外两个配置MTL10和MTL100使用任务损失的加权和,其中分割损失分别用权重 wseg=10w_{seg}=10wseg​=10 和wseg=100w_{seg}=100wseg​=100加权。这弥补了任务损失尺度的差异:在训练过程中,分割损失是检测损失的10-100倍

MTL网络中的这种加权提高了3个数据集的分割任务的性能。即使分割任务的MTL结果略低于STL(Single-task Learning)结果,本实验也表明,通过正确调整参数,多任务网络具有学习更多的能力。此外,通过保持几乎相同的精度,我们在内存和计算效率方面有了显著的提高。我们利用几种标准的优化技术来进一步改善运行时间,并在汽车级低功耗SOC上实现30fps。

4 Conclusion

本文中,我们讨论了多任务学习在自动驾驶环境中的应用,用于联合语义分割和目标检测任务。首先,我们激发了完成这两项任务的需要而不仅仅是语义分割。

然后我们讨论了使用多任务方法的利弊。我们通过精心选择编解码器,构建了一个高效的联合网络,并对其进行了进一步优化,在低功耗的嵌入式系统上达到了30fps。

我们分享了在三个数据集上的实验结果,证明了联合网络的有效性。在未来的工作中,我们计划探索增加视觉感知任务,如深度估计、流量估计和视觉SLAM。

更多精彩内容,请关注我的公众号【AI 修炼之路】!

【NIPS2018】实时联合目标检测与语义分割网络相关推荐

  1. 联合目标检测和语义分割——学习笔记

    联合目标检测和语义分割 目标检测 目标检测是一种与计算机视觉和图像处理相关的计算机技术,用于检测数字图像和视频中特定类别的语义对象(例如人,建筑物或汽车)的实例.然而现实中物体的尺寸.姿态.位置都有很 ...

  2. 自动驾驶深度多模态目标检测和语义分割:数据集、方法和挑战

    自动驾驶深度多模态目标检测和语义分割:数据集.方法和挑战 原文地址:https://arxiv.org/pdf/1902.07830.pdf Deep Multi-Modal Object Detec ...

  3. 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。

    专利申请量全球第一!清华人工智能发展报告:国内215所高校成立相关本科专业 发布时间:01-2415:20万象大会年度获奖创作者,东方财富网官方帐号 1月20日,清华大学人工智能研究院.清华-中国工程 ...

  4. FlyAI小课堂:深度学习论文翻译解析(3):丰富的特征层次结构,可实现准确的目标检测和语义分割

    论文标题:Rich feature hierarchies for accurate object detection and semantic segmentation 标题翻译:丰富的特征层次结构 ...

  5. 图像分类、目标检测、语义分割、实例分割和全景分割的区别

    1.Image Classification(图像分类) 图像分类(下图左)就是对图像判断出所属的分类,比如在学习分类中数据集有人(person).羊(sheep).狗(dog)和猫(cat)四种,图 ...

  6. Keras之Mask R-CNN:《极限挑战》第四季第2期助力高考—使用Mask R-CNN代替Photoshop抠图、颜色填充框出目标检测/图像分割/语义分割

    Keras之Mask R-CNN:<极限挑战>第四季第2期助力高考-使用Mask R-CNN代替Photoshop抠图.颜色填充框出目标检测/图像分割/语义分割 导读 没有伞的孩子只能努力 ...

  7. YOLOv5+BiSeNet——同时进行目标检测和语义分割

    前言 在Gayhub上看到个项目,有人在YOLOv5的基础上,新增了一个分割头,把BiSeNet语义分割算法加入到了目标检测中,使其能够同时进行目标检测和语义分割. 项目地址:https://gith ...

  8. 图像分类,目标检测,语义分割,实例分割,全景分割联系与区别

    一.图像分类 识别图像中存在的内容,如下图,有人(person).树(tree).草地(grass).天空(sky),只知道有没有这一类东西就行. 二.目标检测 识别图像中存在的内容和检测其位置,如下 ...

  9. CVPR2019 | 15篇论文速递(涵盖目标检测、语义分割和姿态估计等方向)

    [导读]CVPR 2019 接收论文列表已经出来了,但只是一些索引号,所以并没有完整的论文合集.CVer 最近也在整理收集,今天一文涵盖15篇 CVPR 2019 论文速递,内容涵盖目标检测.语义分割 ...

最新文章

  1. 自定义分辨率软件_苹果剪辑软件Final Cut Pro X导出竖屏视频教程
  2. 利用人工智能保护生物多样性
  3. 使用jvisualvm的jstatd方式远程监控Java程序
  4. POJ2226 不错的最小顶点覆盖
  5. php中获取ip的地域信息比较精准
  6. 【收藏】GeoMesa-HBase原理篇——写入过程
  7. 计算机管理器win8.1,没事折腾?Win8.1文件管理器设置几招
  8. c语言电子地图程序,C语言 电子地图信息
  9. 这样的家居选购界面让你忍不住剁手的冲动!
  10. mysql学习笔记4
  11. office 2016安装包
  12. Axure RP 8--模板的使用
  13. Beyong Compare3,4使用
  14. Hadoop系列-MapReduce设计思想与原理机制(九)
  15. 【 C++ 】日期计算器
  16. 编写宠物dog类python_Python编程:创建和使用类
  17. 如何用powershell安装2345推广软件
  18. android视频动态壁纸app,手机壁纸视频动态壁纸
  19. 华为emui10.0系统是鸿蒙吗,暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角...
  20. 电脑提示丢失MSVCP140.dll无法启动此程序怎么办【解决方法】

热门文章

  1. AGV调度系统解决方案
  2. ios微信双开,iOS微信分身免越狱方法来了!
  3. 利用R包ggmsa进行多序列比对_2020-05-31
  4. java 使用log4j写日志文件
  5. 语言学本科论文有什么好的选题推荐吗?
  6. matlab能输入铁心参数,变压器铁心剩磁预测研究
  7. 最美圣诞树,用Python画棵雪夜圣诞树送给你
  8. vue简单的金额计算
  9. 03 注册Gitee账号及设置公钥
  10. x的y次方python表达式怎么写_x 的 y 次方(xy) 以下表达式正确的是________