实时语义分割模型PP-LiteSeg论文解读

news2024/12/26 13:45:13

paper:PP-LiteSeg: A Superior Real-Time Semantic Segmentation Model

official implementation:https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.8/paddleseg/models/pp_liteseg.py

本文的创新点 

  • 提出了一种灵活的轻量级解码器(Flexible and Lightweight Decoder, FLD),减轻了解码器的冗余性,平衡了encoder和decoder的计算成本。
  • 提出了一个新的注意力融合模块(Unified Attention Fusion Module, UAFM),利用空间和通道注意力来加强特征表示。
  • 提出了Simple Pyramid Pooling Module(SPPM)来聚合全局上下文。

方法介绍

Flexible and Lightweight Decoder

encoder-decoder结构是常用的语义分割结构,一般来说,encoder通过分组为几个stage的若干卷积层来提取层级特征,从低层到高层,特征通道数逐渐增加,空间尺寸逐渐减小,这种设计平衡了各阶段的计算成本,保证了encoder的效率。decoder也分为几个stage,负责融合和上采样。尽管从高层到低层,特征的空间尺寸逐渐增加,但在最近的轻量模型中,decoder中的通道数保持不变。因此低层的计算成本远大于高层,为了提高decoder的效率,本文提出了一种灵活的轻量解码器FLD,如图3所示,从high-level到low-level,FLD逐渐减少通道数量,FLD可以很容易的调整计算成本实现编码器和解码器之间的平衡。

Unified Attention Fusion Module

融合多尺度特征是实现高精度分割的关键,本文提出了一个新的注意力融合模块(Unified Attention Fusion Module, UAFM),它应用通道和空间注意力来丰富融合特征的表示。

UFAM framework

如图4(a)所示,UFAM利用一个注意力模块得到权重 \(\alpha\),并通过Mul和Add操作用权重 \(\alpha\) 融合输入特征。具体而言,输入特征表示为 \(F_{high}\) 和 \(F_{low}\),\(F_{high}\) 是深层模块的输出,\(F_{low}\) 是encoder中的对应输出,它们通道数相同。UFAM首先通过双线性插值上采样 \(F_{high}\) 和 \(F_{low}\) 相同尺度大小得到 \(F_{up}\)。然后注意力模块以 \(F_{up}\) 和 \(F_{low}\) 作为输入得到权重 \(\alpha\),这里注意力模块是一个plugin,可以是通道注意力模块、空间注意力模块等。然后分别对 \(F_{up}\) 和 \(F_{low}\) 进行element-wise Mul操作最后两者进行element-wise Add得到最终输出。如下

Spatial Attention Module

空间注意力模块利用inter-spatial关系得到一个权重,它表示的是输入特征中每个像素位置的重要性。如图4(b)所示,给定输入 \(F_{up}\in R^{C\times H\times W}\) 和 \(F_{low}\in R^{C\times H\times W}\),首先沿通道维度计算mean、max得到四个维度 \(R^{1\times H\times W}\) 的特征,然后拼接得到 \(F_{cat}\in R^{4\times H\times W}\),然后接一层卷积和sigmoid得到权重 \(\alpha\in R^{1\times H\times W}\)。具体如式2,这里具体的实现方式是灵活的,比如可以去掉max操作来降低计算成本。

Channel Attention Module

通道注意力模块的关键是利用inter-channel关系得到一个权重,它表示的是输入特征中每个通道的重要性。如图4(c)所示,首先利用average-pooling和max-pooling得到四个维度为 \(R^{C\times 1\times 1}\) 的输出,然后沿通道拼接并接一层卷积和sigmoid得到权重 \(\alpha \in R^{C\times 1\times 1}\),具体过程如下

Simple Pyramid Pooling Module

如图5所示,本文提出的SPPM,它首先利用金字塔池化模块来融合输入特征,其中包含三个average pooling,bin size分别为1x1、2x2、4x4。然后分别进行卷积和上采样,卷积大小为1x1,输出通道数小于输入通道,最后将三个特征相加再接一层卷积得到输出特征。和原始的PPM相比,SPPM减少了中间和输出的通道数,去掉了short-cut,将concatenate替换为add,因此SPPM更高效也更适合实时模型。 

实验结果

PP-LiteSeg和其它sota模型在Cityscapes数据集上的结果比较如下

在CamVid测试集上的结果对比如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1362584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣:438. 找到字符串中所有字母异位词 题解

Problem: 438. 找到字符串中所有字母异位词 438. 找到字符串中所有字母异位词 预备知识解题思路复杂度Code其它细节推荐博客或题目博客题目滑动窗口哈希表 预备知识 此题用到了双指针算法中的滑动窗口思想,以及哈希表的运用。c中是unordered_map。如果对此不了解的u…

基于Spring-boot-websocket的聊天应用开发总结

目录 1.概述 1.1 Websocket 1.2 STOMP 1.3 源码 2.Springboot集成WS 2.1 添加依赖 2.2 ws配置 2.2.1 WebSocketMessageBrokerConfigurer 2.2.2 ChatController 2.2.3 ChatInRoomController 2.2.4 ChatToUserController 2.3 前端聊天配置 2.3.1 index.html和main.j…

路由器01_工作原理

一、回顾交换机工作原理 交换机里面维护了一张MAC地址表,主要记录的是MAC地址和接口的对应关系。 交换机在初始状态下,MAC地址表是空的,当收到一个来自某接口的数据时,首先查看数据帧中的MAC地址表,对照自己的MAC地址…

MySQL进阶篇(二) 索引

一、索引概述 1. 介绍 索引(index)是帮助 MySQL 高效获取数据 的 数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数…

React 实现拖放功能

介绍 本篇文章将会使用react实现简单拖放功能。 样例 布局拖放 LayoutResize.js import React, {useState} from "react"; import { Button } from "antd"; import "./LayoutResize.css";export const LayoutResize () > {const [state,…

imgaug库指南(六):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

海康威视安全接入网关 任意文件读取漏洞复现

0x01 产品简介 海康威视安全接入网关是一种网络安全产品,旨在提供安全、可靠的远程访问和连接解决方案. 0x02 漏洞概述 海康威视安全接入网关使用Jquery-1.7.2 , 该版本存在任意文件读取漏洞,可获取服务器内部敏感信息泄露(安博通应用网关也存在此漏洞) 0x03 复现环境 …

未完成销量任务的智己汽车突发大规模车机故障,竞争压力不小

2024年刚开年,智己汽车便上演了一出“开门黑”。 近日,不少车主在社交平台发帖,反映智己LS6出现大规模车机故障,包括但不限于主驾驶屏幕不显示车速、档位、行驶里程,左右转盲区显示失效,无转向灯、雷达提醒…

04 帧 Frame

文章目录 04 帧 Frame4.1 相机相关信息4.2 特征点提取4.2.1 特征点提取 ExtractORB()4.3 ORB-SLAM2对双目/RGBD特征点的预处理4.3.1 双目视差公式4.3.2 双目图像特征点匹配 ComputeStereoMatches()4.3.3 根据深度信息构造虚拟右目图像:ComputeStereoFromRGBD() 4.4 …

Unity 欧盟UMP用户隐私协议Android接入指南

Unity 欧盟UMP用户协议Android接入指南 官方文档链接开始接入mainTemplate.gradle 中引入CustomUnityPlayerActivity 导入UMP相关的包java类中新增字段初始化UMPSDK方法调用![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d882171b068c46a1b956e80425f3a9cf.png)测…

【STM32】STM32学习笔记-ADC单通道 ADC多通道(22)

00. 目录 文章目录 00. 目录01. ADC简介02. ADC相关API2.1 RCC_ADCCLKConfig2.2 ADC_RegularChannelConfig2.3 ADC_Init2.4 ADC_InitTypeDef2.5 ADC_Cmd2.6 ADC_ResetCalibration2.7 ADC_GetResetCalibrationStatus2.8 ADC_StartCalibration2.9 ADC_GetCalibrationStatus2.10 A…

网络优化篇(一)---------TCP重传性能优化

本文通过一个TCP重传优化的实际问题,详细讲解问题的分析、定位、优化过程。 通过本文你将学到: 如何通过linux命令和/proc文件系统分析TCP性能数据如何通过linux命令和netlink api分析某个具体的TCP连接的性能数据如何通过bcc工具分析TCP性能数据如何通过调整系统参数优化TCP重…

63.接口安全设计(活动管理系统:三)

文章目录 一、参数校验二、统一封装返回值三、做权限控制四、加验证码五、 限流六、加ip白名单七、校验敏感词八、使用https协议九、数据加密十、做风险控制 在日常工作中,开发接口是必不可少的事情,无论是RPC接口还是HTTP接口,我们都应该考虑…

opencv007 图像运算——加减乘除

今天学习图像处理的基础——加减乘除,总体来说比较好理解,不过生成的图片千奇百怪哈哈哈哈 opencv中图像的运算本质是矩阵的运算 加法 做加法之前要求两张图片形状,长宽,通道数完全一致 cv2.add(img1, img2) add的规则是两个图…

【算法笔记】深入理解dfs(两道dp题)

DFS过程的概述 一个一个节点的搜,如果是树状结构的话,先找到最左边那一条分支搜到最后一个节点,这个时候最后一个节点(假设是b)的数据会被更新(具体看题目的要求),然后返回到上一个…

debug mccl 02 —— 环境搭建及初步调试

1, 搭建nccl 调试环境 下载 nccl 源代码 git clone --recursive https://github.com/NVIDIA/nccl.git 只debug host代码,故将设备代码的编译标志改成 -O3 (base) hipperhipper-G21:~/let_debug_nccl/nccl$ git diff diff --git a/makefiles/common.mk b/makefiles/…

TypeScript接口、对象

目录 1、TypeScript 接口 1.1、实例 1.2、联合类型和接口 1.3、接口和数组 1.4、接口和继承 1.5、单继承实例 1.6、多继承实例 2、TypeScript 对象 2.2、对象实例 2.3、TypeScript类型模板 2.4、鸭子类型(Duck typing) 1、TypeScript 接口 接口…

rust sqlx包(数据库相关)使用方法+问题解决

可以操作pgsql、mysql、mssql、sqlite 异步的,性能应该不错,具体使用有几个坑 除了sqlx库,还有对于具体数据库的库,比如postgres库 演示以pgsql为例,更新时间2024.1.6 官方github: sqlx github rust官方文档&#xff1…

C++ Qt开发:Charts与数据库组件联动

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Charts组件与QSql数据库组件的常用方法及灵活…

【深度学习】cv领域中各种loss损失介绍

文章目录 前言一、均方误差二、交叉熵损失三、二元交叉熵损失四、Smooth L1 Loss五、IOU系列的loss 前言 损失函数是度量模型的预测输出与真实标签之间的差异或误差,在深度学习算法中起着重要作用。具体作用: 1、目标优化:损失函数是优化算法…