论文推荐:基于GE-MRI的多任务学习

医学图像分析,多任务学习,图像分类,图像分割,U-Net,后处理

该论文是18年发布的,提出了一种基于Deep U-Net的多任务学习框架,用于GE-MRI左心房分割,该框架同时执行心房分割和消融前后分类。虽然论文已经很老了,但是改论文提出的多任务和后处理方法到现在还是可以参考的。

多任务U-Net

图像分割

多任务深度U-Net是在二维U-Net基础上发展而来的。数据集的图像在x-y平面上的最大尺寸为640 × 640,通过增加池化层来增加U-Net的接收域。它由5个下采样块和5个上采样块组成,使用BN和ReLU。通过聚合从下采样路径和上采样路径学到的不同尺度的粗和细特征,网络应比没有聚合操作的网络获得更好的分割性能。

分类

分类任务是利用从下采样路径学习到的图像特征来执行。通过提取第4个池化层之后的特征,从不同大小和尺度的输入图像中学习到固定长度的特征向量,应用了SPPNet中的空间金字塔技术,然后通过2个全连接的层处理向量,使用softmax计算每个图像的类概率(消融前/消融后)。在FC层上使用0.5的Dropout。

损失函数

多任务网络的损失函数L:

式中LS为分割损失,LC为分类损失,λ=1。对于分割部分,采用了像素级交叉熵损失。

分类部分采用sigmoid交叉熵。:分类损失作为正则化的作用,使网络能够学习在两个任务中都能很好概括的高级表示。

后处理

在推理过程中,将从三维图像中提取的轴向切片逐片输入网络,通过逐片拼接这些分割结果,每个患者的粗略3D掩膜就产生了。为了细化这些掩模的边界进行了三维形态扩张和侵蚀,每个体积保留了最大的连接分量。

数据

数据集

论文使用2018年心房分割挑战数据集,包含100个3D的ge - mri图像的训练集,以及相应的LA手动分割掩膜和消融前/后标签,用于训练和验证。还有另外一组54张没有标签的图片供测试。对于模型训练和评价,将80:20训练集随机分割。数据集中有两种大小的图像:576×576和640×640。如上图所示,在图像大小和图像对比度上有很大的差异。

预处理和数据增广

图像的强度归一化为零均值和单位方差。随机水平/垂直翻转,概率为 50%。范围从 -10 到 +10 度进行随机旋转。在原始图像大小的 10% 范围内沿 X 和 Y 轴随机移动。缩放系数介于 0.7 和 1.3 之间。随机伽马校正作为对比度增强的一种方式:

其中F(x, y)是图像中每个像素的原始值,G(x, y)是每个像素的变换值。对于每个图像,γ从(0.8,2.0)的范围内随机化。在对比度增强的情况下,该网络不需要图像对比度增强作为预处理。

与AGC和CLAHE等其他预处理图像对比度增强相比,gamma增强代具有更高的Dice得分。

采用多尺度裁剪来增加数据的多样性,使网络能够分析不同背景下的图像。裁剪尺寸包括256×256, 384×384, 480×480, 512×512, 576×576, 640×640。首先用裁剪图像训练网络,然后逐渐增加图像的大小。网络学会了从简单的场景到困难的场景进行分割。

结果

定量结果

对于不同的网络和方法,基于不同测量值的分割精度结果如下

随着网络深度的增加,分割性能得到了显著提高,尤其是在二尖瓣平面上。通过多任务Deep U-Net和进行后期处理,得到的Dice分数为0.901。

这个多任务U-Net算法比其他两种算法具有更强的鲁棒性,通过与分割和相关的消融前后分类共享特征,网络被迫学习更好的表示,以获得更好的分割结果。

这是验证集中的三个样本的三维可视化。蓝色对象是真值,绿色对象是预测分割

该模型在不同主题的三维分割结果与真值之间具有较高的重叠率。然而,在肺静脉周围可以观察到一种显著的失效模式。一个可能的原因可能是肺静脉的数量和长度因人而异,这使得网络很难从有限的病例中学习。

训练时间

在一台Nvidia Titan Xp GPU上,总的处理过程平均大约需要10秒。

Atrial Segmentation Challenge 2018

论文作者使用了一种称为Boostrap aggreging (Bagging)的集成方法。在同一模型训练5次,每次随机子集,然后平均类概率。在主办方给出的54个测试用例中,DICE平均得分从0.9197提高到0.9206。

论文地址:

[2018 STACOM] [Multi-Task Deep U-Net] :https://arxiv.org/abs/1810.13205

作者:Sik-Ho Tsang

本文转载于网络 如有侵权请联系删除

相关文章

  • pip常用命令以及升级方法

    大家好,又见面了,我是你们的朋友全栈君。pip常用命令以及升级方法使用python时经常使用到pip命令,可以方便安装python的各种第三方库 1:查看pip 打开cmd窗口,输入pip命令,会显示pip所有的参数使用方法 如果输入pip提示Didnotprovideacommand,可能是没有配置环境变量导致的,也可能系统安装有多个pip 2:查看pip的安装路径wherepip 3:查看pip版本pip-V(注意V要大写) 4:pip升级方法 安装python第三方包时,会有pip版本的提示 方法一:输入pipinstall–upgradepip 如图示,pip升级失败,这时再查看pip也会显示pip不存在(Nomodulenamed‘pip’)【有的输入该命令可以直接升级成功,如果没有成功可以查看方法二】 方法二:先重新安装回pip python-mensurepip 如图示,再输入python-mpipinstall–upgradepip 显示安装成功,再安装python第三方包时就不会有升级提示了 5:查看已安装的第三方库piplist 查看所有有新版本的

  • 可视化方式快捷管理kafka的acl配置

    前言我在kafka基于SCRAM认证,快速配置启用ACL中,以SASL_SCRAM配置方式为示例说明了如何快速在一个kafka集群中启用认证授权机制,提高集群使用的安全性。但是可能有这一样种场景,比如有多个部门,不同的项目组或项目之间都在共用这个集群,不同的项目组或项目之间会使用不同的用户名/密码或者对不同的topic/消费组分别进行授权,这样,如果我们每次都通过命令的方式,用户信息或者topic数量比较多的时候,无论是查看或者修改都极不方便,所以需要一个可视化的控制台可以便捷的进行操作。kafka-console-ui简介kafka-console-ui支持基于SASL_SCRAM机制可视化管理ACL。github地址:github.com/xxd76379515…ACL管理页面如下:快速使用打包gitclonehttps://github.com/xxd763795151/kafka-console-ui.git cdkafka-console-ui shpackage.sh 复制代码复制部署#解压缩 tar-zxvfkafka-console-ui.tar.gz #进入解压缩后的

  • HTML DOM - 元素

    添加、删除和替换HTML元素。创建新的HTML元素-createElement()如需向HTMLDOM添加新元素,您首先必须创建该元素,然后把它追加到已有的元素上。<divid="div1"> <pid="p1">这是一个段落。</p> <pid="p2">这是另一个段落。</p> </div> <script> varpara=document.createElement("p"); varnode=document.createTextNode("这是一个新段落。"); para.appendChild(node); varelement=document.getElementById("div1"); element.appendChild(para); </script> 复制实例解析这段代码创建了一个新的<p>元素:varpara=document.c

  • Spring Boot使用CORS解决跨域问题

    一、跨域问题描述Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。 CORS与JSONP相比: 1、JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。 2、使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。 3、JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS。二、CORS常用的三种解决跨域问题的方法这里我仅仅写出一个需要被跨域访问的方法,提出了三种解决方案。 需要被跨域访问的方法:packagecom.lemon.springboot.controller; importorg.slf4j.Logger; importorg.slf4j.LoggerFactory; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importor

  • Win32实现GDI画太极图

    #include"stdafx.h" #include"21-10-对弈-win32第四次作业-GDI.h" #defineMAX_LOADSTRING100 //全局变量:  HINSTANCEhInst;//当前实例 TCHARszTitle[MAX_LOADSTRING];//标题栏文本 TCHARszWindowClass[MAX_LOADSTRING];//主窗口类名 //此代码模块中包含的函数的前向声明:  ATOMMyRegisterClass(HINSTANCEhInstance); BOOLInitInstance(HINSTANCE,int); LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM); INT_PTRCALLBACKAbout(HWND,UINT,WPARAM,LPARAM); intAPIENTRY_tWinMain(_In_HINSTANCEhInstance,            _In_opt_HINSTANCEhPrevInstance,   

  • [剑指offer] 树的子结构

    题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路递归思想,如果根节点相同则递归调用IsSubtree(),如果根节点不相同,则判断root1的左子树和roo2是否相同,再判断右子树和root2是否相同;注意节点为空的条件,HasSubTree中,只要有树为空就返回false;IsSubtree中,要先判断root2,如果root2为空,则说明第二棵树遍历完了,即匹配成功。参考代码/** publicclassTreeNode{ intval=0; TreeNodeleft=null; TreeNoderight=null; publicTreeNode(intval){ this.val=val; } } */ publicclassSolution{ publicbooleanHasSubtree(TreeNoderoot1,TreeNoderoot2){ if(root1==null||root2==null){ returnfalse; } returnIsSubtree(root1,root2)|| HasSubtre

  • 走向世界的中国大数据:中美企业将碰撞出怎样的火花?

    数据猿导读市北高新美国科技创新论坛将邀请中美双方在科学研究,企业创新,投资等领域的专业人员,系统介绍上海大数据产业发展理念、资源汇聚配套等方面的思路。进入互联网时代以来,以硅谷为核心的美国互联网产业一直都站在全世界互联网行业的最顶端,领导着全世界互联网的发展。无论是技术创新还是商业模式的转变,硅谷总能成为世界互联网发展的风向标。归根结底,美国互联网行业的优势还是来源于其强大的研究力量、庞大的人才储备和全面的政府扶植政策。进入大数据时代之后,美国依然最先将大数据产业的发展摆在了国家战略层面上,试图保证在新的时代依旧能够走在世界最前列。2011年美国总统科技顾问委员会提出建议,认为大数据具有重要战略意义,但联邦政府在大数据相关技术方面的投入不足。作为回应,美国白宫科学和技术政策办公室(OSTP)建立了大数据高级监督组以协调和扩大政府对该领域的投资,并牵头编制了《大数据研究与发展计划》。2012年3月29日,《计划》正式对外发布,标志着美国率先将大数据上升为国家战略。我国则在2016年发布的十三五规划中提出,拓展网络经济空间,推进数据资源开放共享,实施国家大数据战略,超前布局下一代互联网,也

  • 详解 Windows 下 Eclipse CDT 配置 C/C++ 编译环境

    其实windows下,C、C++IDE也不少,但许多IDE的UI和用户体验基本都停留在上个世纪,除了eclipseCDT和visualstudio,但后者现在是个巨无霸,安装文件都3个多G,而且这货安装容易删除难,但 eclipseCDT就不一样了,绿色无污染,熟悉javaeclipse的同学也能快速适应~1、Eclipse及CDT的安装离线安装CDT到Eclipse的官方网站http://www.eclipse.org上下载Eclipse。CDT的全称是C/C++DevelopmentTools,是使Eclipse能够支持C/C++开发的插件。进入CDT的官方网站,http://www/eclipse.org/cdt,然后选择一个镜像站点分别下载CDT。下载完成后,将这两个压缩包解压到Eclipse的目录中或通过插件方式安装。注意:CDT的版本和Eclipse的版本有严格的对应关系,如果版本对应不正确就会安装不成功。在线安装CDT也可以在安装完Eclipse后,通过Eclipse的软件更新功能在线安装CDT,具体步骤可以参考Eclipse的在线文档。直接下载eclipseCDT集成版

  • Havex:以工控设备为狩猎目标的恶意软件

    在过去一年,我们对Havex恶意程序家族及其背后的组织保持了高度的关注。Havex被认为以不同工业领域为目标进行攻击的恶意软件,并且在最初的报告中,该恶意软件对能源行业尤为感兴趣。Havex的主要构成为通用的远程木马(RemoteAccessTrojan,RAT)和用PHP编写的服务器程序。可以在服务器的代码中看到“Havex”这个名字。在2014年的春天,我们发现Havex开始对工业控制系统(IndustrialControlSystems,ICS)有特殊的兴趣,该恶意软件背后的组织使用了一个创新型木马来接近目标。攻击者首先把ICS/SCADA制造商的网站上用来供用户下载的相关软件感染木马病毒,当用户下载这些软件并安装时实现对目标用户的感染。我们收集并分析了Havex的88个变种,主要分析了它们的访问目标、从哪收集数据、网络和机器。这一分析发现Havex通信用的C&C服务器多达146个,并且有1500多个IP地址向C&C服务器通信,从而识别最终的受害者。攻击者利用被攻陷的网站、博客作为C&C服务器,如下为用于C&C服务器的一些实例。我们还发现了一个额外

  • AngularJS API之bootstrap启动

    对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素。但是在一些应用中,这样就显得很不方便了。 绑定初始化通过绑定来进行angular的初始化,会把js代码侵入到html中,但是对于新手使用来说,还是足够了!<html> <head> <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> <scriptsrc="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script> </head> <bodyng-app="myApp"> <divng-controller="myCtrl"> {{hello}} </div> <scripttype="text/javascript&quo

  • python base64编码

    base64编码后的数据回避原始数据少占用33%左右的存储空间。python内置的标准库base64提供了base64编码的功能importbase64 message='红红火火恍恍惚惚' msg=base64.b64encode(message.encode()) print('原文:',message) print('base64编码后的结果:',msg) text=base64.b64decode(msg) print('base64解码后的文本:',text.decode())复制执行结果原文:红红火火恍恍惚惚 base64编码后的结果:b'57qi57qi54Gr54Gr5oGN5oGN5oOa5oOa' base64解码后的文本:红红火火恍恍惚惚复制

  • 腾讯云云直播回调事件查询api接口

    1.接口描述接口请求域名:live.tencentcloudapi.com。 用于查询回调事件。 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:DescribeCallbackRecordsList。 Version 是 String 公共参数,本接口取值:2018-08-01。 Region 否 String 公共参数,本接口不需要传递此参数。 StartTime 是 String 起始时间点,格式为yyyy-mm-ddHH:MM:SS。 EndTime 是 String 结束时间点,格式为yyyy-mm-ddHH:MM:SS,起始和结束时间跨度不支持超过1天。 StreamName 是 String 流名称,精确匹配

  • IntelliJ IDEA 快捷键大全

     最近刚接触IntelliJ这个工具,用了几天,很多操作都不太熟。之前一直用Eclipse,猛的一用这个工具还真有点不习惯。但是这个工具有些方面确实比较优秀,比如javascript自动补全功能、html页面编写功能等,相比于其他IDE工具就会好很多。下面是一些关于本工具的快捷键。但有些不是太常用,仅供参考。其中红色部分表示常用的。 Alt+回车导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N查找文件Ctrl+Alt+L  格式化代码 Ctrl+Alt+O优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本 Ctrl+F查找文本Ctrl+Shift+Space自动补全代码Ctrl+空格代码提示 Ctrl+Alt+Space类名或接口名提示 Ctrl+P方法参数提示 Ctrl+Shift+Alt+N查找类中的方法或变量 Alt+Shift+C对比最近修改的代码   Shift+F6  重构-重命名C

  • HyperLogLog算法分析及其应用

    HyperLogLog算法的原理讲解以及Redis是如何应用它的 探索HyperLogLog算法(含Java实现) 神奇的HyperLogLog算法 SketchoftheDay:HyperLogLog—CornerstoneofaBigDataInfrastructure HyperLogLog-Wikipedia 走近源码:神奇的HyperLogLog redis/src/hyperloglog.c

  • 转行自学编程经历回顾

    ?点  Stephen 关注我    今天2019年9月22日,对于平凡而普通的我来说是个特殊而不普通的日子。熟悉我的盆友都知道:我是毕业工作之后转行自学Java编程入行的。5年了,没错!今天是我成为程序员五周年的纪念日。(这里我要停顿三十秒,想象此时此刻有鲜花、彩蛋、还有掌声……然后我的丑脸就泛起了微笑)李笑来老师说过:我们相信通过学习获得重生——对我们来说,七年就是一辈子。七年一辈子!那,五年真的太漫长了。我试着一年一年往前回忆,遥想到了当初和当年。1、程序员之前的工作之前的自我介绍里有提过,我是应用电子技术专业毕业的大专生,经历了工厂流水线维修工、商场营业员、便利店督导等工作,毕业三年后自学java入行的。在成为一名程序员之前,我是一名深圳本地某品牌便利店区域督导,要负责近30家店的相关工作,公司规定每个星期每家店都得去一次,也就是说一个星期得跑完这30家店,一天得跑五六家店。2、家人的指引、支持就在我每天过着跑来跑去的生活时,我哥研究生毕业校招在华为写代码半年多了,觉得编程没有那么难,对我这个弟弟有想法了,开始鼓动我去培训学习

  • 公务员 素养

      从《人民的名义》看官员级别的政治逻辑 http://news.163.com/17/0422/15/CIKUSJ2K0001875N.html#fr=email   人在公门好修行 https://zhuanlan.zhihu.com/niyizhizaiwaner  

  • 一、Ubuntu14.04下安装Hadoop2.4.0 (单机模式)

      一、在Ubuntu下创建hadoop组和hadoop用户     增加hadoop用户组,同时在该组里增加hadoop用户,后续在涉及到hadoop操作时,我们使用该用户。   1、创建hadoop用户组                      2、创建hadoop用户          sudoadduser-ingrouphadoophadoop     回车后会提示输入新的UNIX密码,这是新建用户hadoop的密码,输入回车即可。     如果不输入密码,回车后会重新提示输入密码,即密码不能为空。     最后确认信息是否正确,如果没问题,输入Y,回车即可。

  • 根据经纬度查询附近的点

    大致思想:根据给定经纬度(lat,lng)求出其左上角(left_top),右上角(right_top),左下角(left_bottom),右下角(right_bottom)的四个位置。所有在这个区域的范围都在该点附近。参照:http://blog.charlee.li/location-search/packagecom.show.common.util; publicclassLocation{ privatedoublelatitude; privatedoublelongitude; publicLocation(doublelatitude,doublelongitude){ this.latitude=latitude; this.longitude=longitude; } publicdoublegetLatitude(){ returnlatitude; } publicvoidsetLatitude(doublelatitude){ this.latitude=latitude; } publicdoublegetLongitude(){ returnlo

  • 天赋优势系列文章回顾

    读完了佳语的《天赋优势系列》,做了一个回顾。觉得这个系列文章很有用。   特别喜欢这张图,发现和保护孩子的天赋,关注她心心念念的事情或事物,然后帮助她去投入精力发展成自己的优势,她一定就是快乐和成功的。 

  • 递增的三元子序列

    给你一个整数数组nums,判断这个数组中是否存在长度为3的递增子序列。如果存在这样的三元组下标(i,j,k)且满足i<j<k,使得nums[i]<nums[j]<nums[k],返回true;否则,返回false。 defincreasingTriplet1(nums): """ 遍历法,for循环和while循环,for循环对边界条件考虑较少。 """ n=len(nums) ifn<3: returnFalse foriinrange(n): forjinrange(i+1,n): ifnums[j]>nums[i]: forkinrange(j+1,n): ifnums[k]>nums[j]: returnTrue returnFalse defincreasingTriplet2(nums): """ 双指针法,两个指针分别记录递增的三元组中的第一个元素和第二个元素。判断新的元素是否大于第二个元素。 two附带隐含信息——这之前有个数比two小 """ one=float('inf') two=float('inf') fornu

  • Android平台对H264视频硬解码

      本文讲述如何使用Android标准的API(MediaCodec)实现H264的硬件解码。   原本我们是用JNI调用平台提供的硬件解码接口得到YUV帧,再放入opengl脚本里处理渲染的。可是换了新平台之后,没有拿到底层的接口,所以这两天找在Android上的H264解码方案。前天在友人的提示下找到了MediaCodec这个类,Androiddeveloper上面有MediaCodec的描述和用法,还算详细可以慢慢摸索。但是在网上关于这个类的用法是比较少。   那在这里贴代码介绍一下。 1//VideoConstants 2privatefinalstaticStringMIME_TYPE="video/avc";//H.264AdvancedVideo 3privatefinalstaticintVIDEO_WIDTH=1280; 4privatefinalstaticintVIDEO_HEIGHT=720; 5privatefinalstaticintTIME_INTERNAL=30; 6 7publicvoidinitDecoder(){ 8 9mCodec=MediaC

相关推荐

推荐阅读