当前位置: 首页 > news >正文

ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation(自动驾驶领域轻量级模型)

主要思想

基于传统卷积模块设计,提出一种高效空间金字塔卷积模块(ESP Module),有助于减小模型运算量和内存、功率消耗,以提高在终端设备上的适用性。这款模型和MobileNet系列、ShuffNet系列相似,都是轻量级模型,可以部署到移动端。

模型具体结构

如下图所示,模型主要有两个模块构成,一个是Efficient spatial pyramid模块,一个是HFF模块。
在这里插入图片描述

Efficient spatial pyramid

这个部分由两个子部分构成,前面部分是逐点卷积,就是采用K个1x1xM的小卷积核对原图进行卷积操作,1x1卷积的作用其实就是为了降低维度,这样就可以减少参数,这也是轻量级模型的思路。后面的部分是空洞卷积,即在没有进行下采样(pooling)的操作下,扩大感受野。使用不同膨胀率的卷积核,可以得到不同感受野下的feature,这一点有点类似金字塔池化,所以这个模块也叫ESP。

参数计算

下面来计算下一共包含的参数,其实在效果上,以这种轻量级的网络作为backbone效果肯定不如那些重量级的,比如Resnet,但是在运行速度上有很大优势。

如上图所示,对Efficient spatial pyramid第一部分来说,d个1x1xM的卷积核,将M维的输入feature map降至d维。此时参数为: M∗N/KM*{N/K}MN/K,第二部分参数量为K∗n2∗(N/K)2K*{n^2}*{(N/K)}^2Kn2(N/K)2,和标准卷积结构相比,参数数量降低很多。

HFF模块

在这里插入图片描述
如上图所示,因为使用了大感受野的膨胀卷积,导致了gridding artifacts现象,如下图所示。本文提出了使用HFF方法来解决该问题,具体做法就是从最小的膨胀卷积核输出的那张feature map开始,逐级叠加。这样的做法并没有引入任何新的参数,同时计算量上也没有增加太多,但却有效地改善了网格效应。

在这里插入图片描述
这里其实就是对空洞卷积的结果进行逐层点加向下传递,然后在通道方向上进行concat,concat之后,再对之前的特征做一个点加,这一点采用了残差的思想。

和其它模型的对比

这里,文章对其它模型和该模型做了一个对比,包括参数的数量以及核心网络结构,如下图所示。在这里,不再一一阐述。
在这里插入图片描述

ESPNet模型

作者提出了四种模型,分别如下图所示。
在这里插入图片描述
下面是以不同网络模型作为backbone的语义分割网络再VOC数据上的表现效果。
在这里插入图片描述
发现,ESPNet在较少的参数下,取得了很好的效果。

源代码

作者开源了基于ESPNet的语义分割网络源代码,ESPNet,支持测试和训练。下面展示几幅在kitti数据集上的测试效果。

原图像:
在这里插入图片描述
在这里插入图片描述
结果图像:
在这里插入图片描述
在这里插入图片描述


http://www.taodudu.cc/news/show-1782037.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 中缀表达式转后缀表达式(非常简单易懂)
  • 后缀表达式转中缀表达式(非常简单易懂)
  • 给定一列非负整数,求这些数连接起来能组成的最大的数。
  • 努力找工作中。。。
  • 手撕代码之快速排序算法(简单明了)
  • 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。
  • 小Q正在给一条长度为n的道路设计路灯安置方案。 为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用'.'表示, 不需要照亮的障碍物格子用'X'表示。
  • 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有,,,
  • C++实现选择排序
  • C++实现希尔排序
  • 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示,,,
  • CatBoost之算法解析(Kaggle常用模型)
  • ElasticNet算法解析
  • SVM支持向量机算法详解
  • SVM中的一些关键点解析
  • 朴素贝叶斯算法解析
  • Kmeans算法解析(非常详细)
  • DBSCAN(自适应密度聚类)算法解析
  • ID3、C4.5、CART决策树算法解析(关键内容讲解)
  • 面试之手撕BP反向传播
  • XGBoost算法解析(非常详细)
  • 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
  • 最长回文子串问题:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
  • 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
  • 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
  • 深度学习中网络在训练时不收敛的原因
  • 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。(C++实现)
  • 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
  • 两个大数之间的乘积计算,string1=123456789...76,string2=23456...8957,求模拟计算机计算这两个数字的乘积。(C++实现)
  • 非递归方式对二叉树进行前序、中序、后序遍历(C++实现)