AH-Net:三维各向异性混合网络:将二维图像的卷积特征转化为三维各向异性体

本文主要是介绍AH-Net:三维各向异性混合网络:将二维图像的卷积特征转化为三维各向异性体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章概要

文章先是在开头花了一半的篇幅介绍了2D丢失了层间信息、3D训练受制于设备和LSTM的困难。然后介绍他们的AH-Net可以从二维图像中学习到的卷积特征转化为三维各向异性体,并在两个数据及上表现出了state-of-the-art的成绩。

Introduction

直接利用3D信息存在着一些困难,主要体现在如下几个方面:

  1. 较小的3×3×3核可能很难从三维信息中学习有用的特征,因为每个维度的信息密度不同
  2. 理论上,与二维网络相比,三维网络需要更多的特征。三维网络的性能受到GPU内存的限制,限制了网络的宽度和深度
  3. 不像现在可以利用数百万张2D图像预训练,3D任务大多需要从头开始训练,此缺乏大型的三维数据集。

AH-Net

AH-Net使用预先训练的权重初始化,并使用多个2D图像切片作为输入,类似于伪RGB图片,组成多通道。该二维网络的特征编码器通过对二维核进行一维扩展,将其转化为三维网络,然后加入一个特征解码器子网络来提取三维上下文,卷积核有3x3x1和1x1x3两种。在输出之前,经过一个金字塔池化模块(详见SPP-Net)来提取多尺度特征。

image

由于是2D的模型,所以AH-Net也可以利用ImageNet的庞大数据集进行预训练,这样既易于训练,又易于推广。

AH-Net由一个特征编码器和一个特征解码器组成.从二维网络转换而来的编码器,是为了从高分辨率的二维切片中提取深度表示而设计的。由各向异性卷积的密集连接块构成的译码器负责利用3D上下文并保持两层间的一致性。

网络训练分两个阶段进行:学习编码器;然后添加3D解码器,并在编码器参数锁定的情况下进行精细调整。这里需要说明的是文中LOSS函数用的是Focal Loss,其之前一直被用在目标检测中。

Learning a multi-channel 2D feature encoder

作者训练了一个类似于 Large Kernel
Matters – Improve Semantic Segmentation by Global Convolutional Network
中提出的结构的2D多通道全局卷积网络(mc-gcn)来提取不同分辨率的二维片内特征。主要框架是ResNet50,采用了ImageNet数据集作为预训练,然后用从3d卷中提取的2D图像切片对网络进行精细调整。这个网络的输入是三个相邻的slice(类似像RGB通道一样处理)。因此,ResNet50的整个体系结构保持不变。多通道2D输入可以使2D网络在早期融合片间上下文。

image

GCN模块通过将一个大的K×K卷积核分解成两个一维核来模拟它,包含不同顺序排列的一维核的两个分支通过求和进行合并。每个Refine包含两个3×3的卷积,中间有一个Relu激活。每个Refine的输入也被添加到它的输出中,以形成一个残差连接。

Transferring the learned 2D net to 3D AH-Net

在二维MC-GCN网络收敛后,提取其编码器的参数,并将其传输到AH-net的相应编码器层。2D MC-GCN的译码器部分被丢弃,而解码部分则被丢弃。我们为AH-net设计了一个新的解码器,它由多层密集连接的块组成,然后是金字塔池化模块。

image

卷积张量从二维到三维的转换如下图所示,它的目的是在AH-net的编码器部分对3D卷逐片进行二维卷积,并且是将三个相邻的切片进行卷积。

image

然而,在三维空间中,Conv 1×1×1/(2,2,2)在z维上的每一步都跳过一个slice, 当图像只有少量的slice沿z 轴时,特别是用于检测任务的,这将丢失重要的信息。因此,作者使用Conv 1×1×1/(2,2,1)和MaxPool 1×1×2/(1,1,2)降采样来提取ResNet块之间的三维特征映射。

如上图中AH-Net ResNet Block所示,伴随着转换后的编码器,增加了三维解码器子网络,以利用三维图像上下文。在译码器中,具有Conv 1×1×1、Conv 3×3×1和Conv 1×1×3的卷积块。首先将特征传递到XY瓶颈块(不知道作者为什么称之为瓶颈块),Conv 3×3×1在两层Conv 1×1×1中间。然后输出到另一个中间为1×1×3的瓶颈块,并在转发到下一个块之前与其自身进行求和。这种卷积块将三维卷积分解为2D卷积和1D卷积。它首先使用2D卷积接收来自前几层的输入,保留了详细的2D特征,COV 1×1×3主要融合片内特征,使z维输出保持一致。

在预先训练的编码器和随机初始化的解码器上使用相同的学习速率来训练ah-net将使网络很难优化。为了训练3d AH-Net,首先锁定所有传输过来的参数,在优化过程中,只对译码器参数进行微调。然后,所有参数都可以一起微调。文中使用初始学习率0.0005对2D MCGCN进行微调。然后,在2D网络传输到3D后,将学习速率提高到0.001,对AH-Net进行微调,作者指出3D网络需要更大的学习速率才能在合理的时间内收敛。

文中Loss函数借鉴了Focal Loss,这个Loss函数与上面的金字塔池化一样,都是来自于何恺明大神的工作,他提出的这个损失函数,思路是希望那些hard examples对损失的贡献变大,使网络更倾向于从这些样本上学习。

F L ( p t ) = − α t ( 1 − p t ) γ l o g ( p t ) FL(p_t) = -\alpha_t(1-p_t)^\gamma log(p_t) FL(pt)=αt(1pt)γlog(pt)

而文中参考其,推出的损失函数为:

F F L ( y , y ^ ) = ( l n D ( y , y ^ ) l n D m a x ( y , y ^ ) ) γ D ( y , y ^ ) F_{FL}(y,\hat{y}) = (\frac{lnD(y,\hat{y})}{lnD_{max}(y,\hat{y})})^\gamma D(y,\hat{y}) FFL(y,y^)=(lnDmax(y,y^)lnD(y,y^))γD(y,y^)

其中函数D是L2损失所期望的最大数值,较大的γ值将使训练过程更多地关注在较难分类的区域上。当L2损失几乎不减时,用FL代替最初的L2损失。随着输出细节的逐步增加,训练损失可以在较长的时间内持续下降。

假设我们L2 Loss产生的最大数值为0.9,目前产生了两个loss分别为0.1和0.8,那么假设γ为2,则有

参考文献

  1. 本文讨论文章原文地址
  2. 本文涉及的Focal Loss原文地址

这篇关于AH-Net:三维各向异性混合网络:将二维图像的卷积特征转化为三维各向异性体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

解决hive启动时java.net.ConnectException:拒绝连接的问题

《解决hive启动时java.net.ConnectException:拒绝连接的问题》Hadoop集群连接被拒,需检查集群是否启动、关闭防火墙/SELinux、确认安全模式退出,若问题仍存,查看日志... 目录错误发生原因解决方式1.关闭防火墙2.关闭selinux3.启动集群4.检查集群是否正常启动5.

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.