【纯小白论文代码带读】医学图像分割MASDF-Net(问题产生及解决)

论文链接:https://www.semanticscholar.org/paper/MASDF-Net%3A-A-Multi-Attention-Codec-Network-with-and-Fu-Deng/6ab609eb93dfd12596032174ca9603712f5c050a        

代码链接:https://github.com/Rayicer/TransFuse

初见面代码:

Q:这几个数据集分别是干嘛的?GroundTruth的数据集是干嘛的?训练集,验证集,测试集区别是什么,分别是干什么的?

A:这几个数据集分别是训练集(Training),验证集(Validation),测试集(Test),

其中训练集是用来训练模型的,

验证集是用于模型选择和超参数调整的数据集,用于研究人员评估模型配置的性能,并选择最佳的模型(参数)。

测试集:是用来最终评估模型性能的数据集。里面的图片具有代表性,独特性,全面,随机的,独立于前两个数据集。

三者可以类比为学生从学习知识到高考。  训练集就是做练习题,验证集就是做月考,查漏补缺,测试集就是高考,最终评估。

#训练集-》训练模型(类似做练习题);验证集-》调整模型,评估性能(类似月考);测试集-》最终评估模型(类似高考)

三者都有GroundTruth,相当于就是作业的参考答案,用于矫正,评估。

Q:三个都是数据集,那可以调换吗?

A:不可以调换,因为不同的数据集具有不同的特点,就像单元练习题,月考题,高考题能一样吗。

Q:文件夹外的这几个文件分别是干啥的,应该运行那个,怎么运行?

A:第一个process.py是数据(预)处理文件:也就是把图片转化成数据数组,这样计算机才能处理。具体怎么处理可以见代码内容。大致就是:黑白的就是不同像素点,按顺序存储0,1.彩色的就是RGB的三个值(到时候会建立三个通道,不同通道代表不同的颜色值)。

第二个是test_isic.py是测试模型的代码

train_isic.py是训练模型的代码。

---------------------------进入process.py----------------

Q: process.py文件里有个set_size,这是干嘛的,里面的数字各有什么含义?

set_size = [2000, 150, 600]

A:set_size 是一个列表,它指定了每个数据集(训练集、验证集、测试集)中图像的数量。分别代表训练集中的图像数量,验证集中的图像数量,测试集中的图像数量

  1. 2000:训练集中的图像数量。
  2. 150:验证集中的图像数量。
  3. 600:测试集中的图像数量

Q:他这里save_name是干嘛的 ?

save_name = ['train', 'val', 'test']

A:#预处理后的文件前缀名,后缀名是.npy。相当于就是保存处理后的数据的文件的文件名。

Q:他这个height和witdth又是干什么的欸?

A:heightwidth 变量用于指定处理后图像的尺寸。这些变量定义了图像在预处理步骤中将被调整到的高度和宽度。在深度学习模型中,通常需要固定尺寸的输入图像,因此预处理步骤中常常包括调整图像尺寸的操作。

process.py 脚本中,heightwidth 用于 cv2.resize 函数,该函数将加载的每个图像调整到指定的尺寸:

img = cv2.resize(img, (width, height))

确保了所有处理后的图像都有相同的维度,可以被模型正确处理。同样的方法也适用于掩码图像,以确保图像和其对应的掩码在空间尺寸上是匹配的。

Q:这里我怎么知道像素应该是多少呢?换句话说,这个数值可以任意调整吗?有什么影响不?是有一个标准的答案,还是说像参数一样可以随意调的?

A:一般是不能任意调的,一般就根据原图片像素尺寸来,这样避免信息丢失,或过大。不合适的像素尺寸会影响到模型准确率和泛化能力。

Q:


这个像素一般会调不?或者说一般啥情况会调这个,调的话是宽高同倍增减吗?

A:

Q:imgs = np.uint8(np.zeros([length, height, width, 3]))这一句是在干什么,什么意思?

A:这里是初始化矩阵,创建个0矩阵,这里的3表示就是三个通道。

np.zeros([length, height, width, 3]) 创建了一个形状为 [length, height, width, 3] 的数组,其中 length 是图像数量,heightwidth 分别是图像的高度和宽度,3 表示图像的通道数(对于彩色图像,通常是3个通道:红色、绿色和蓝色)。

  1. 数据类型指定np.uint8 指定了数组的数据类型为无符号的8位整数。这是图像处理中常用的数据类型,因为图像的像素值通常是0到255之间的整数。

Q:for i in os.listdir(path):这是在干嘛?

A:os.listdir(path)这个函数是获取该路径下的文件或文件夹的名称(包括后缀名)。也就是说i的值就是一个字符串。

Q:if len(i.split('_'))==2:这一句啥意思?

A:

  1. 分割字符串i.split('_') 使用下划线 _ 作为分隔符来分割字符串 isplit 函数将字符串分割成一个列表,其中每个元素都是原字符串中由下划线分隔开的部分。

  2. 当分割后的列表元素为2的时候,说明就是我们要处理的图片文件。

....2024.09.19未完待续。。。

2024.9.20续更。。。

Q:这怎么三个连着的Img不是就覆盖了吗?

A:其实没有直接覆盖,上一个img是作为下一个Img的等式右边函数的参数,来参与运算了的。

这里三个就是对图片进行一定的处理了

--------------------test_isic.py文件---------------

Q:这些这么大几坨是在干嘛啊?这函数的作用是什么,里面的参数什么意思,特别是第一个怎么文件夹里什么地方都没看到啊,起什么作用???

A:这几个是在添加参数,相当于建立一个parser专门用于存储参数,然后后面几个就是用于添加的参数了,便于后面用。而第一个参数,也就是参数的名字罢了,然后-- 是固定格式。

这里就是把这个建立的参数,赋给一个变量。

这里就是在用各个参数名称了,这里这么写,就是相当于加载了参数所代表的内容。一般前面 添加参数时设定的default的值就是这里所说的内容。 有时候还会看到添加参数时 ,写help=。。。。。   意思是,help: 帮助信息,例如help='VGG/ResNet' 提供了关于该参数的帮助信息,当用户使用 -h 或 --help 选项时,该信息将显示在帮助文档中。

关于这个函数可以参考:链接

-----2024.9.20未完待续。。。。

        Q:这一句是啥意思?

for i in range(test_loader.size):

A:i取值,从0到test_loader元素总数-1.   

        size是获取元素总数。以前那个.len是获取长度。

Q:这是在干嘛?

gt = 1*(gt>0.5)

A:把一个概率值转化成一个二元值也就是0,1

--------------------------------------------------------

下面讲一下文章中的模块设计。

其中编译码结构采用的是PVT,也就是金字塔transformer。然后结合U形结构。

同时两边增加跳连接。然后主要新提出的模块就是SIG,MAF,MSCF。

SIG用于筛除跳连接时的不重要信息。

MAF用于更深层次挖掘到全局信息特征

MSCF用于整合各个层级的特征。

Q:SIG怎么实现筛选掉不重要的信息的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值