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

相关文章

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与