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

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为