当前位置: 首页 > 编程日记 > 正文

用于自动驾驶的实时 YUV 多任务 CNN

31568fb0f66678d3225c205d336268d5.gif

作者 | AI 修炼之路

来源 | AI 修炼之路

摘要

本文提出了一种针对低功耗车用SoC优化的多任务卷积神经网络(CNN)结构。我们介绍了一个基于统一架构的网络,其中编码器由检测和分割两个任务共享。该网络以25FPS运行,分辨率为1280×800。简要讨论了直接利用原生YUV图像、优化图层和要素图、应用量化等优化网络结构的方法。

在我们的设计中,我们也关注内存带宽,因为卷积是数据密集型的,而大多数SOC都有带宽瓶颈。然后,我们展示了我们提出的用于专用CNN加速器的网络的效率,给出了从硬件执行和相应的运行时间获得的检测和分割任务的关键性能指标(KPI)。

1. Introduction

目前先进驾驶辅助系统(ADAS)领域的改进将证实,深度学习对于提出基于摄像机传感器的有效解决方案至关重要。目前,卷积神经网络(CNNs)成功地处理了各种视觉感知任务,包括语义分割、包围盒目标检测或深度估计。

然而,这些成功的应用大多需要很高的计算能力,这在当前的嵌入式系统中是不现实的。本文提出了一种新的用于目标检测和语义分割的实时多任务网络。与最近的解决方案相比,我们的论文提出了两个主要的改进。首先,我们提出了一个由YUV4:2:0图像馈送的多任务网络。其次,我们提出了一个全面设计的网络,以考虑到有效的嵌入式集成的所有关键因素。f6abda854126e6e049682ef202e78552.png

2. Background

几年来,CNN的架构一直致力于单一任务,如分类任务[6]、[13]、[5]、检测任务[10]、[8])、语义分割任务[16]、[7]、[2]或视觉SLAM[9]。最近一年,我们观察到了专门为处理几项任务而设计的新CNN架构的出现。

在这些新方法中,2016年,Teichmann[15]提出了一个统一的编解码器架构,它可以同时执行三个任务(分类、检测、分割)。2018年,[14]发表了一篇基于Multinet的论文,在低功耗嵌入式系统上实现了30fps。除了这些论文外,其他几篇论文[4]、[1]证实了使用多任务学习(MTL)方法的好处,特别是在考虑「计算效率」或确保网络的「最佳泛化」「准确性」方面。

我们的工作是受到这些论文的启发,但我们建议建立一个更加轻量的网络,通过直接输入YUV4:2:0图像来降低带宽,并在低功耗SoC上进行了实验。

2013年,Sermanet和LeCun[12]提出将YUV图像空间用于行人检测应用。我们的网络的输入层序列直接来自于他们的工作,除了我们提出了调整内核维数(5×5和3×3而不是7×7和5×5)和其他一些细节来满足SoC约束之外。735d748415042cdadea3647df6e2b0eb.png

3. Network architecture optimization

「输入数据形状优化」

为了满足所选SoC提供的特定数据格式,必须修改网络输入层。事实上,所选的SoC针对其在前置摄像头中的应用进行了优化。在我们的例子中,使用的相机是鱼眼相机。这种类型的相机比固定式相机提供了更宽的视野,这对汽车应用很有用。

图像信号处理器(ISP)在视频流水线开始时提供的图像格式不是BGR格式,而是YUV格式。这种格式在嵌入式系统中比较常见,但在深度学习领域并不经常使用这种格式。为我们的应用程序选择的YUV格式是YUV4:2:0格式。与普通的BGR图像相比,对摄像机捕获的信息进行编码的三个通道的分辨率不同。表示色度分量的通道U和V是表示亮度的通道Y的一半分辨率。这意味着通道U或V中的一个像素对对应于Y通道中的2x2像素块的色度信息进行编码。

图3中显示的两个选项在CNN IP上的成本完全相同。然而,YUV4:2:0选项有两个主要优势:内存带宽减少2倍,并且不需要额外的转换(YUV4:2:0到BGR)模块。b2416c46c6821f722c0112980c9b5818.png让我们假设一个1280×800的8位输入图像。对于bgr选项,提供给网络的内存流量大约是3MB,对于YUV4:2:0选项,大约是1.5MB。YUV4:2:0选项的另一个优点是不需要额外的模块进行YUV4:2:0到BGR的转换。使用bgr选项,这将是强制性的,才能提供一些有效的东西作为CNN的输入。

「Encoder stage : V2N9Slim」

在最常见的统一编解码器架构中,最昂贵的部分通常是编码器部分。基于VGG[13]或ResNet[5]的网络编码器基本上是我们在最近的论文中能找到的最常见的编码器。不幸的是,这些编码器既宽又深,实际上并不是低功耗嵌入式系统的理想候选者。为了满足嵌入式系统的要求,采用了一种新的光编码器V2N9Slim。

V2N9Slim 是一个9层编码器(9个卷积层或池层),编码器体系结构如图4所示。「对于多任务实验,使用ImageNet数据集对编码器部分进行分类任务的预训练」99bd68bc604689014aa233681fcd998e.png

V2N9超轻量架构是RESNET和VGG架构的混合体。实际上,我们的网络的分层顺序主要是受RESNET的普通网络的启发,我们的网络没有采用符合VGG架构的捷径连接。不使用快捷连接的动机来自以前的实验,作者证明,「在浅层网络中,捷径连接并不能显著提高精度」,我们的9层编码器就是这种情况。此外,快捷连接对于嵌入式系统来说也是昂贵的,因为它们涉及额外的计算以及增加的存储器占用和存储器传输。

「Decoders」

我们提出的解决方案的解码器是用于检测部分的「YoloV2解码器」和用于分割部分的基于「FCN的解码器」。Y oloV2解码器包括在编码器的末尾增加一个卷积层,以重塑编码器特征映射到边界框预测。然后,在ARM处理器上执行额外的后处理,以将YoloV2解码器的输出转换为边界框坐标和置信度。基于FCN的解码器是一个具有5个转置卷积层级的解码器。这些层中的每一层都按因子2(即FCN2)对输入进行向上采样(使用5×5核),以检索原始输入图像分辨率。FCN2解码器完全运行在SoC上的专用CNN IP上。

「Quantization steps」

我们提出的优化架构已经使用基于KERAS的浮点精度框架进行了训练。为了在16位定点精度上执行以浮点精度训练的网络,需要量化步骤以在专用硬件上运行网络。为了尽可能地减少这一阶段的饱和度等问题,所有卷积层之后都有一个批次归一化层,以获得具有单位方差的特征地图分布。由于浮点范围受批归一化的限制,它还使得浮点数到16位数的编码更加准确。

4. Results

我们在我们的私人鱼眼相机数据集上进行了一系列实验。此数据集的大小为5000个带注释的帧。图像分辨率为1280×800。针对语义分割和检测任务对帧进行注释。对于语义分割,帧上的每个像素被注释为属于以下4个类别之一:[背景、道路、车道、路缘]。对于检测类,帧中的对象被标注在两个类之间:[行人、汽车]。

评估了两种类型的网络:1366be5863ef311c96dffbf437366e98.png在表1中,总结了这两种网络的性能。我们可以观察到,两个网络在分割任务和检测任务上的KPI非常接近。我们提出的网络能够达到与Multinet参考网络相同的精度水平,甚至更好。然而,我们提出的网络比参考网络快65%,这证明了本部分中提出的优化阶段的效率。

5. Conclusion

本文针对自动驾驶应用,提出了一种优化的多任务网络。首先,我们简要介绍了我们的低功耗SoC,并提出了使用多任务方法的必要性。然后,我们描述了所提出的网络以及为实现嵌入约束所做的优化。最后,我们分享了在我们自己的鱼眼数据集和低功耗SoC上的实验结果。

我们可以合理地认为,本文提出了三个主要贡献:一个专用于YUV4:2:0图像空间的输入数据层,一个面向低功耗SoC的CNN核心的网络,以及一个高度精简的网络,其精度接近于原始的Multinet网络,但速度要快得多。研讨会的演示提案是一个很好的机会,可以突出这些贡献,并现场展示我们网络的效率。

f17c46755e574d49ea5dde83be13d3c3.gif

技术

用技术实现时序羽毛球动作预测

资讯

AI在嘈杂环境中看唇语识别理解

技术

50行python代码制作数据大屏

资讯

GPT-3平替版语言模型,性能更优化

f73d221ab58a2e2adeee2c0a9546ec4d.png

分享

0578574bb952dd162adfb5558e67d70f.png

点收藏

1b2bc76024788d16f02a6c59b52d8e46.png

点点赞

a90b9cb83c8e73f92153ef51e6dbb417.png

点在看

相关文章:

博客5:文件,目录以及用户的权限管理

linux用户与组的相关内容简介: 1.Linux用户:Username/UID管理员:root,0普通用户:1-65535系统用户:1-499(在centos7上为1-999)作用:对守护进程获取资源进行权限分配登录…

以太坊代币空投合约的实现

2019独角兽企业重金招聘Python工程师标准>>> 本文将介绍如何在以太坊智能合约中实现代币的空投。区块链以太坊世界中所谓空投(airdrop),就是免费给你的区块链地址(公钥)发送代币。 代币空投的方式层出不穷&…

linux命令:ln 使用方法

命令:ln 使用方法指令名称 : ln使用权限 : 所有使用者使用方式 : ln [options] source dist,其中 option 的格式为 :[-bdfinsvF] [-S backup-suffix] [-V {numbered, existing, simple}][--help] [--version] [--] 说明 : Linux/Unix 档案系统中&#xf…

10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表

作者 | 俊欣来源 | 关于数据分析与可视化一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质量的图表。同时本篇文章的第二部分是用Python来制作可视…

(转) 地区赛获胜策略,赛前默念!

1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做。交完每道题都要先打印。2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的…

USG防火墙telnet实验

实验使用USG5500防火墙 &#xff0c;<SRG>system-view [SRG]interface g0/0/0       [SRG-GigabitEthernet0/0/0]ip address 192.168.1.1 24          接口配置地址[SRG-GigabitEthernet0/0/0]display this&#xff08;显示当前配置&#xff09; [SRG-G…

如何营造专属你的企业技术影响力氛围感?我不允许你还不知道

CSDN 推出《开发者研究与洞察》服务。基于3200万开发者的资源&#xff0c;从开发者视角出发&#xff0c;聚焦开发者“关注”、“使用”、“体验”三方面&#xff0c;帮助技术推广者打造技术品牌、优化技术产品的市场投放策略、提升技术产品的开发者使用体验&#xff0c;直接聆听…

php报错Permission denied

去apache的log下看error_log文件 #cd /usr/local/apache2/logs/ (13)Permission denied: exec of ....index.php failed加权限就可以 #chmod x index.php路径

Spring笔记——8.基于XML Schema的简化配置

我们可以使用XML Schema的配置方式来简化xml文件的配置。p&#xff1a;简化设值注入p&#xff1a;与property子元素作用相同&#xff0c;用于设值注入。若想使用p&#xff0c;则xml文件中需要引入对p的说明&#xff0c;一般自动生成的xml都会自带。xmlns:p"http://www.spr…

测试服务命名和动态注册路由的方式@Xan

2019独角兽企业重金招聘Python工程师标准>>> 1、测试服务命名&#xff1a;如不需要网关进行权限和登录验证时&#xff0c;服务名称命名后面加“tests”&#xff0c;例如&#xff1a; sysadmintests 2、动态注册路由地址&#xff1a; http://192.168.2.164:55551/sys…

POJ1386 Play on Words

题意&#xff1a;判断一些单词能不能首尾连成一体 #include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <cstdio> using namespace std; int n,father[30],range[30],save[100010],in[30],out[30]; bool us…

Linux tail 命令详解

用途从指定点开始将文件写到标准输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件&#xff0c;tail -f filename会把filename里最尾部的内容显示在屏幕上&#xff0c;并且不但刷新&#xff0c;使你看到最新的文件内容。 语法标准语法tail [ -f ] [ -c Number | …

万粉博主推荐,微信小程序 +Flask 后端调用 AnimeGanV2

作者 | Yunlord博客 | Yunlord做一个小程序&#xff0c;直接在手机端就能一键生成专属于自己的动漫头像&#xff0c;下面是展示效果&#xff01;&#xff01;&#xff01;核心功能设计该小程序想要实现的是将微信头像或者选择相册中的照片动漫化&#xff0c;所以拆解需求后&…

第十周课下作业

第十周课下作业&#xff08;补做课堂测试&#xff09; 一、知识点总结 1、单链表 创建单链表链表中数据的插入list.add("**");链表中数据的排序Collections.sort();链表中数据的删除lsit.remove("");2、排序 树集概念树映射 TreeMap<K,V>**适合用于数…

IE6的bug

内部系统 公司6楼正常&#xff0c;7楼不正常&#xff0c;一查系统没问题&#xff0c;7楼IE6&#xff0c;6楼是IE8 原因是系统接入第三方一个富客户端的程序&#xff0c;这个IE6不支持所以一直卡着。卡多了就挂了。 因为表象是还在卡着的网页浏览器一关重开就好了。。。。 而如…

python-sendcmd主动模式访问ftp——修改port中IP地址信息

用python访问ftp站点&#xff0c;主动模式发送port时&#xff0c;修改了IP地址&#xff0c;抓包分析网络会话信息。activesocket.py 1 #python for socket active mode 2 #!/usr/bin/python 3 # -*- coding: utf-8 -*- 4 import ftplib5 import os 6 import socket 7 impor…

「CSDN 2021年度 IT 技术影响力之星评选」活动报名倒计时!

“CSDN 2021年度IT技术影响力之星评选”活动自2021年12月6日启动以来受到了行业各界的关注以及企业和个人的积极响应&#xff0c;截止目前&#xff0c;已收到上千份参评报名。本次评选活动的第一阶段——企业/个人参与提名将于2022年1月30日结束&#xff0c;以真实数据为基础&a…

Spring Cloud入门教程 - Zuul实现API网关和请求过滤

简介 Zuul是Spring Cloud提供的api网关和过滤组件&#xff0c;它提供如下功能&#xff1a; 认证过滤压力测试Canary测试动态路由服务迁移负载均衡安全静态请求处理动态流量管理在本教程中&#xff0c;我们将用zuul&#xff0c;把web端的请求/product转发到对应的产品服务上&…

​谷歌大神 Jeff Dean 领衔,万字展望5大 AI 趋势

‍‍作者 | 学术头条来源 | 学术头条对于关心人工智能技术进展的读者来说&#xff0c;每年年底来自整个谷歌 research 团队撰写的年终总结&#xff0c;可谓是必读读物。今天&#xff0c;由谷歌大神 Jeff Dean 领衔&#xff0c;这份总结虽迟但到。出于知识传播目的&#xff0c;“…

php的webservice的wsdl的XML无法显示

php的webservice的因为wsdl有中文所以xml无法显示 可以用Nopepad 转码即可 以UTF-8无BOM编码

Journey源码分析三:模板编译

2019独角兽企业重金招聘Python工程师标准>>> 在Journey源码分析二&#xff1a;整体启动流程中提到了模板编译&#xff0c;这里详细说下启动流程 看下templates.Generate()源码: func Generate() error {compiledTemplates.Lock()defer compiledTemplates.Unlock()//…

linux中安装程序

实验&#xff1a;为 Linux 主机安装应用程序 环境&#xff1a;vmware workstation 14 . redhad-server-6.4需求&#xff1a;1.使用 RPM 包的方式安装 Mozilla Firefox 浏览器2.使用源代码包编译的方式安装 Apache3.使用 RPM 包的方式安装Webmin管理软件&#xff0c;并使用 rpm查…

php 的webservice类库NuSoap介绍

NuSOAP 是 PHP 环境下的 WEB 服务编程工具&#xff0c;用于创建或调用 WEB 服务。它是一个开源软件&#xff0c;当前版本是 0.9.5 &#xff0c;支持 SOAP1.1 、 WSDL1.1 &#xff0c;可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作。 NuSOAP 完全由PHP语言编写&#xff0c;由…

我用 YOLOv5 做情感识别!

作者 | 陈信达来源 | DatawhaleAI技术已经应用到了我们生活中的方方面面&#xff0c;而目标检测是其中应用最广泛的算法之一&#xff0c;疫情测温仪器、巡检机器人、甚至何同学的airdesk中都有目标检测算法的影子。下图就是airdesk&#xff0c;何同学通过目标检测算法定位手机位…

Odoo 学习 【二】Environment 概览

Environment 参考链接: http://odoo-new-api-guide-line.readthedocs.io/en/latest/environment.html#environment 在新的API中&#xff0c;引入了环境的概念&#xff0c;它的主要目标是提供对游标、用户、模型、上下文、记录集、和缓存的封装。 有了这些&#xff0c;你没有必要…

php使用NuSoap产生webservice结合WSDL让asp.net调用

<?php require_once("nusoap-0.9.5/lib/nusoap.php"); //定义服务程序 function Add($a,$b){return $a$b;}//初始化服务对象 , 这个对象是类 soap_server 的一个实例 $soap new soap_server; //调用服务对象的 register 方法注册需要被客户端访问…

分享 10 个超实用的 Python 编程技巧

作者 | 欣一来源 | Python爱好者集中营今天小编来给大家分享几个Python的编程技巧&#xff0c;帮助你迅速完成地从小白到Python大神的蜕变。字典翻转首先我们来看字典的翻转&#xff0c;假设我们有下面类似的一个字典对象与数据car_dict { "brand":"Tesla"…

百度编辑器(1.4.3—net版)上传图片路径及其他配置

1&#xff1a;文件配置图&#xff1a; 2&#xff1a;文件夹配置图&#xff1a; 3&#xff1a;多余的功能删除&#xff08;懒人不想使用百度编辑器官网的自定义&#xff0c;而选择全部功能的直接下载&#xff0c;对于没用的功能可以注释掉&#xff0c;以后有需要就可以再拿出来用…

windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error...

windows下配置redis集群&#xff0c;启动节点报错&#xff1a;createing server TCP listening socket *:7000:listen:Unknown error 学习了&#xff1a;https://blog.csdn.net/u014652744/article/details/71774171 竟然真的是需要bind 127.0.0.1 不同的机器为啥就不一样呢&am…

apache日志分析简介

对apache的日志分析做下简单的介绍,主要参考apache官网的Log Files,手册参照 http://httpd.apache.org/docs/2.2/logs.html一.日志分析 如果apache的安装时采用默认的配置,那么在/logs目录下就会生成两个文件,分别是access_log和error_log1.access_log access_log为访问日志,记…