通过模拟Mybatis动态代理生成Mapper代理类,讲解Mybatis核心原理
导读 |近日,云+社区技术沙龙“腾讯开源技术”圆满落幕。本次沙龙邀请了多位腾讯技术专家,深度揭秘了腾讯开源项目TencentOS tiny、TubeMQ、Kona JDK、TARS以及MedicalNet。本文是陈思宏老师关于致力于提供基于3D医疗影像大数据的预训练模型MedicalNet的详细介绍。
一、医疗影像AI概述
医疗影像 AI 实际上解决的是「患者看病难,医生诊断累」的全球普遍问题。
由于培养投入大,周期长,医护人员的数量在短时间内很难大幅度增加,而人工智能技术可以辅助医疗工作,缓解当前医护资源不足的状况。
人工智能对于医疗领域来说,主要有两个作用,一个是进行人群基础筛查,另一个是提升诊断质量。对于一些简单的疾病,人工智能能达到较高的诊断性能,用于人群疾病初筛的工作上,在一定程度上缓解缺乏医护人员的问题。而一些治疗难度较高的疾病,人工智能可以为医生诊断提供参考依据,起到提醒作用。
医疗影像包含丰富的诊断信息,是医疗诊断中非常常见的手段。医疗影像AI的“制造”方法如下:收集标注数据,再通过这些数据来训练人工智能模型,最终实现在系统中输入患者影像,获得接近资深医师的诊断结果。
二、MedicalNet与医疗影像AI发展的关系
近年来,图像与视频识别软件的发展,为医疗影像 AI 提供了很大帮助。但医护人员资源有限,标注数据成为了困难,导致可用于训练的同分布标注数据非常少,与数据驱动的深度学习形成矛盾,这就是目前医疗影像 AI 的发展瓶颈所在。
因此对于医疗影像 AI 的研究来说,亟需找到大规模数据集以及相应的模型,为大部分小数据医疗影像AI应用提供信息支持,而这也正是开发 MedicalNet 的动机。尽管每个同分布的医疗3D公开数据集数据量小,但多个医疗场景的数据集集合起来能形成较大规模数据集,MedicalNet 开发团队就将这些场景的数据集收集起来,用来训练不同的预训练模型,再开源相关预训练模型。这样一来,当有用户需要训练一个新模型时,就可以直接用 MedicalNet 模型进行迁移学习,即便新应用中数据量较小,用户最终仍旧可以训练出模型。
全网最详细的Linux命令系列-sed文本处理命令
三、MedicalNet的技术实现
在 MedicalNet 的实现过程中,有不少难题需要通过技术来解决。其中包括像素含义不一,范围差异大,伪影频繁,成像质量低,边界模糊,对比度低;不同源数据,标注缺失;同一组织分辨率不一致,不同组织尺度差异大等等问题。
MedicalNet 开发团队主要通过两个方案来解决这些难题。首先是数据集筛选方案,主要目的是找出具备共通知识的数据集。具体做法如下:从每种场景的数据集中挑选少量数据,形成迷你数据集代理,通过代理快速训练成小网络,最后根据迷你数据集分割预测结果的好坏判断哪些数据集能够保留下来。
筛选完数据集之后,采用联合训练方案进行训练。先对数据进行空间和像素归一化预处理。为了获取更多标注信息,MedicalNet全部采用分割数据集。MedicalNet由编码和解码部分组成,编码部分为开源的模型。为了将更多的信息集中在编码部分,所以就把大部分参数都集中在了编码中。为解决数据集与数据集之间标注不统一的问题,在解码部分使用多任务形式对多个场景的标注数据进行隔离。在训练过程中,不同的skip-connection组合用于缓解梯度消失问题。训练完成后,编码部分可迁移到任意分割、分类以及检测等多种任务的模型中。
最终的实验结果证明,在3D医疗影像应用中,MedicalNet能帮助小数据场景的网络加快收敛速度,提升预测性能。
四、Q&A
Q:MedicalNet使用代码是否已开源?MedicalNet有无用到医院的某个功能上?A:MedicalNet相关代码已开源,详见https://github.com/Tencent/MedicalNet,MedicalNet目前也已经用于多个落地模块中。
讲师介绍
陈思宏,腾讯视觉算法高级研究员,14年起着手医疗影像AI相关工作,在MICCAI、TMI等顶级会议期刊发表过论文。主要致力于深度学习在医疗视频影像和3D影像的研发与应用。
【Java并发基础】并发编程bug源头:可见性、原子性和有序性