MONAI 专为医学AI开发的开源框架(From Nvidia)

本文深入解析MONAI框架,涵盖其核心组件如Dataset、Transforms、Inferers等,以及Ignite引擎的应用,适合医疗影像AI开发者参考。

MONAI简介:

https://blogs.nvidia.com/blog/2020/04/21/monai-open-source-framework-ai-healthcare/

https://monai.io/

https://medium.com/pytorch/monai-public-alpha-is-now-available-54b79f5532aa

https://github.com/Project-MONAI/MONAI

就先简单按源码这个结构来吧:

1 apps:

dataset.py:这个文件中定义了两个常见的数据集的Dataset类:MedNISTDataset和DecathlonDataset,继承父类Randomizable, CacheDataset,里边分别定义了随机数,和cachedataset的形式。

utils.py:定义了一些通过url下载文件,验证MD5,解压数据集的code

2 config:

deviceconfig.py:获取系统的一些版本配置信息

type_definitions.py:这个我没看太明白,貌似是给两个贯穿MONAI的概念定义了名字和类型,为了统一的使用。

定义了KeysCollection和IndexSelection

3 data:???

1 csv_saver.py
# 保存dict的结果到csv文件,预测结果之类的,可以save单个数据,也可以savebatch,finalize写入文档。有一点存疑,在overwrite为False并且存在文件时,他会先读取已有文件中的信息,保存到要写入disk的dict中,但是我担心他遇到key值相同的情况怎么办???

2 dataloader.py
# 普通的dataloader,继承自pytorch原生的,没发现什么特殊的地方目前

3 dataset.py
# 有几个自定义类以及一些应用函数
# class Dataset,继承自pytorch原生Dataset,看这一层没有什么特殊的,具体的要看transform和读取了
# class PersistentDataset,继承自自定义的Dataset,顾名思义他会将非随机性的transform(这里是读取标准化之类的操作)在第一次时做好,保存到硬盘里,后边就直接读取了,不再每次再做重复操作了。
# 注:这里用到了pathlib模块(相比os.path,nested -> chained,且os太过臃肿,还有一些其他的小区别)
# class CacheDataset,继承自自定义的Dataset,也是先处理一下非random的操作,但是这个是存在内存中的,内存大的服务器就很香了
# class ZipDataset,继承自自定义的Dataset,貌似是处理同时多个dataset的情况,这个我还没具体用过
# class ArrayDataset,继承自Randomizable和pytorch的dataset,多个数据集的话里边也用到了ZipDataset。还有些疑问我没看到他做增广啊???这个和zipdataset到时还需细看一下???

4 decathalon_datalist.py
# 感觉就是几个和十项全能数据及有关的代码

5 grid_dataset.py???
class GridPatchDataset(IterableDataset): 
#我这个阅读代码能力有些减弱了,没看太明白,但是大概意思是,把array分成块,生成出来,好像块儿与块儿之间没有overlap???
IterableDataset就没看太懂,itertool相关的东西还需要巩固。还有多线程的东西掌握也不好

6 nifti_reader.py
class NiftiDataset(Dataset, Randomizable):
# 常规载入Nifiti格式数据的一个Dataset类,里边比较复杂的是用到了monai.transforms 里边的 LoadNifti

7 nifti_saver.py
class NiftiSaver:
# 一个保存数据为Nifti格式的类。支持的输入数据格式可以为单个数据,也可以是一个batch的数据。一般来说保存的都是分割的预测结果。保存时用到了write_nifti函数。

8 nifti_writer.py
def write_nifti(...):
# 考虑了几种情况,是不是需要affine;channel调整的问题;

9 png_saver.py
10 png_writer.py
# 类似于Nifti格式,使用的PIL包来处理

11 synthetic.py
# 。。。我看是生成噪声图 和 一堆重叠圆的test图。。。没发现什么实际意义

12 utils.py ???
# 很多小工具,还没细看???

 

11 synthetic 效果

4 engines: 总的来说是宏观上和训练测试有关的代码.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值