语义分割--PANet和Understanding Convolution for Semantic Segmentation

本文主要是介绍语义分割--PANet和Understanding Convolution for Semantic Segmentation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

语义分割

PAN Pyramid Attention Network for Semantic Segmentation

FCN作为backbone的结构对小型目标预测不佳,论文认为这存在两个挑战。

  • 物体因为多尺度的原因,造成难以分类。针对这个问题,PSPNet和DeepLab引入了PSP和ASPP模块引入多尺度信息。论文引入了像素级注意力用于帮助提取精准的high-level 特征。
  • **high-level的特征偏向于对类别分类,缺乏空间信息.**针对这个问题,常见的操作是采用U-shape结构网络,例如SegNet、Refinenet等。使用low-level帮助high-level恢复图片细节。然后这些都是很耗时的,论文提出了有效的decoder结构,称之为Global Attention Upsample(GAU),可以提取high-level的全局上下文用于对low-level信息加权。

Contributuions

  • 提出了Feature Pyramid Attention module(FPA)将不同尺度上下文特征嵌入到现存的FCN结构上
  • 提出了Global Attention Upsample(GAU),一个有效的decoder模块
  • 基于FPA和GAU,提出了Pyramid Attention Network(PAN)网络,在VOC2012 and cityscapes上获得了先进表现

Feature Pyramid Attention

PSPNet和DeepLab使用的PSP或ASPP结构结构如下:
在这里插入图片描述
PSPNet使用池化操作会有空间信息上的损失。DeepLab使用扩张卷积会存在缺少局部信息和”griding”(卷积核退化)现象。

受到注意力机制的启发,论文认为可使用注意力机制,将全局上下文信息作为先验知识引入到通道选择。但是仅仅有通道注意力机制是不够的,这依旧缺乏逐像素信息。论文提出了FPA模块,该模块融合了多尺度信息,以3×3,5×5,7×7三个卷积做金字塔结构,因为high-level的特征分辨率较小,故使用大的卷积核带来的计算负担不会太多。同时论文引入了全局池化分支用于进一步提升性能。如图所示:
Alt text
得益于金字塔结构,FPA可以融合多尺度信息,产生更佳的像素级注意力应用于high-level特征。不同于PSPNet或ASPP需要做通道降维,论文的做法是上下文信息与原始的特征做逐像素乘。

Global Attention Upsample

现存的decoder结构上,如PSPNet和Deeplab都是直接双线性差值上采样得到预测结果,这可以看成是一个naive decoder。
DUC使用了多通道做reshape操作得到预测结果。这两类都缺乏多尺度信息,难以恢复空间信息。常见的encoder-decoder架构主要考虑使用使用多尺度信息逐步恢复边界,但是这些结构都较为复杂,带了较大的计算消耗。

因为high-level中有着丰富的语义信息,这可以帮助引导low-level的选择,从而达到选择更为精准的分辨率信息。论文提出了GAU结构,通过全局池化提供的全局信息作为指引选择low-level特征。其结构如下:
Alt text
具体来讲,使用3×3卷积用于对低级特征做通道处理,然后使用全局池化后的信息做加权,得到加权后的low-level特征,再上采样,然后再与high-level信息相加。

Network Architecture

基于PFA和GAU, 论文提出了完整的PAN架构.
Alt text
使用带有扩张卷积策略的Resnet101作为backbone,res5b使用dialted rate=2,最初的7×7卷积换成了3个3×3卷积。使用FPA模块去获取密集的像素级注意力信息,结合全局上下文,通过GAU模块最终产生了预测图。

本文来自 DFann 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u011974639/article/details/82222866?utm_source=copy

Understanding Convolution for Semantic Segmentation

Abstract

本文介绍了两种操控卷积相关运算(convolution-related operations)方法用于提高语义分割效果:

  • 设计密集上采样卷积(dense upsampling convolution,DUC)生成预测结果,这可以捕获在双线性上采样过程中丢失的细节信息。
  • 设计混合空洞卷积框架(hybrid dilated convolution,HDC),用于减轻扩张卷积产生的”gidding issue”影响,扩大接收野聚合全局信息。

Introduction

大部分应用在语义分割任务上的CNN系统可分为三类:

  • **全卷积神经网络。**例如FCN. 使用卷积层代替FC层,提高训练和推断效率,并可接收任意大小输入;
  • 使用CRF. 结构预测用于捕获图片内的本地和长距离依赖,用于细化分割结果;
  • **使用空洞卷积。**增加中间featue map的分辨率,可在保持相同计算成本的同时提高预测精度。

大部分提高预测准确率的系统可分为两类:

  • **使用更优秀的特征提取模型。**即使用VGG16、ResNet等预训练架构。这些更深的模型可对更复杂的信息建模,学习更有区分力的feature并可更好的区分类别。
  • **使用CRF作为后端处理,**集成CRF到模型内构成end2end训练,并将额外的信息例如边缘合并到CRF内。

本文以另一个角度来提升性能,考虑到现在大多数模型分为encoding和decoding两部分:

  1. 对于decoding:大多数模型在最终预测图的基础上,采用双线性插值上采样直接获得与输入同分辨率的输出,双线性插值没有学习能力并且会丢失细节。本文提出了密集上采样卷积(dense upsampling convolution,DUC),取代了简单的双线性插值,学习一组上采样滤波器用于放大低分辨率的feature。DUC支持end2end,便于融入FCN网络架构中。
  2. 对于encoding:使用扩张卷积可以扩大感受野,减少使用下采样(下采样丢失细节比较严重)。本文指出空洞卷积存在”girdding”问题(卷积核退化),即空洞卷积在卷积核两个采样像素之间插入0值,如果扩张率过大,卷积会过于稀疏,捕获信息能力差。 本文提出了混合扩展卷积架构(hybrid dilation convolution,HDC): 使用一组扩展率卷积串接一下构成block,可扩大感受野的同时减轻”gridding”弊端。

从另一个角度想:DUC将整个label map(H,W,L)分为为d^2个等大小的子图(subparts),每个子图和大小和Fout输出的feature map大小相同。也就是说将label map切分为(h,w,d2×L).
模型的整体结构如下,DUC应用在输出部分:
Alt text
DUC以原始分辨率像素级解码,并且能够自然的集成到FCN框架中,使得整个编码和解码能以end2end方式训练。


作者:DFann
来源:CSDN
原文:https://blog.csdn.net/u011974639/article/details/79460893?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!

这篇关于语义分割--PANet和Understanding Convolution for Semantic Segmentation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933608

相关文章

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

基于YOLO8的图片实例分割系统

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 segment_app.py 二、核心代码介绍篇2.1 segment_app.py2.2 scan_taskflow.py 三、结语 代码资源:计算机视觉领域YOLO8技术的图片实例分割实

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

Understanding the GitHub Flow

这里看下Github的入门介绍    --链接 GitHub Flow is a lightweight, branch-based workflow that supports teams and projects where deployments are made regularly. This guide explains how and why GitHub Flow works

图像分割分析效果2

这次加了结构化损失 # 训练集dice: 0.9219 - iou: 0.8611 - loss: 0.0318 - mae: 0.0220 - total: 0.8915  # dropout后:dice: 0.9143 - iou: 0.8488 - loss: 0.0335 - mae: 0.0236 - total: 0.8816 # 加了结构化损失后:avg_score: 0.89

【tensorflow 使用错误】tensorflow2.0 过程中出现 Error : Failed to get convolution algorithm

如果在使用 tensorflow 过程中出现 Error : Failed to get convolution algorithm ,这是因为显卡内存被耗尽了。 解决办法: 在代码的开头加入如下两句,动态分配显存 physical_device = tf.config.experimental.list_physical_devices("GPU")tf.config.experiment

linux分割和合并文件命令

split命令: for i in {1..30}; do num=$(printf "%05d\n" "$i");name="model-$num-of-00030.safetensors";split -b 3G $name tmp/$name-;echo $name;done 合并命令: for i in {1..30}; do num=$(printf "%05d\n" "$i")

力扣86.分割链表

class Solution {public ListNode partition(ListNode head, int x) {// 初始化两个链表的头节点和尾节点,分别用于存储小于x和大于等于x的节点ListNode leftHead = null, leftTail = null;ListNode rightHead = null, rightTail = null;// 临时变量,用于遍历