Open DDBB-YL opened 1 month ago
如果你看了BTCV数据集的dataloader代码(./ldm/data/synapse.py
)就会发现,预处理后的BTCV数据集存放在./data/synapse/train/
,./data/synapse/test/
,./data/synapse/test_vol/
路径中。
而现在的./data/synapse/
路径下是没有train/
,test/
,test_vol/
文件夹的。因此你可以先提前创建这些文件夹然后再运行代码试试看。
当然也可以在代码中动态检查这些文件夹是否存在,若不存在则自动创建。欢迎提交PR~
感谢作者您的帮助 已经解决该数据集的问题。请问您STS-3D这个数据集我该下载图片里的哪个呢?
我是在这里下载的STS-3D数据集:https://tianchi.aliyun.com/competition/entrance/532087/information
感谢作者您的帮助 问题已经解决 非常感谢!
作者再次麻烦您一下,第一张图的BTCV数据集之前跑起来过断了再次跑的时候发现出现dice计算的问题 请问是我选择的yaml文件不对吗?第二张图的sts数据集在处理的时候出现这样的问题该怎么解决呢?感谢作者您的帮助!
sts3d-ldm-kl-8-concat-mode.yaml
中的model - params
下缺失了num_classes: 2
参数导致的。你可以试试加入这个参数。如果修改后可以正确运行的话欢迎提交PR,这样我就可以把你加到collaborator~1.训练命令:nohup python -u main.py --base configs/latent-diffusion/synapse-cls14-ldm-kl-8.yaml -t --gpus 1, --name btcv > nohup/btcv.log 2>&1 & 2. 作者我加上您说的参数了还是出现了图片里的问题。感谢您的回复!
synapse-cls2-ldm-kl-8.yaml
。我们会在后续的更新中澄清这一点。NameError: name 'trainer' is not defined
涵盖的范围非常的广泛,只要任何一种错误导致trainer没有正常定义就会出错,所以无法分析问题。(而且你仔细看的话,这次的报错和上次不一样,在full_key
处)
作者您好 已经根据您说的方式进行修改 是因为我数据的存放位置不对导致的错误吗?
我看了一下STS3D的dataloader代码,ldm/data/sts3d.py
里定义了一个DATA_PATH
变量作为STS3D数据集的输入路径。请问你修改了这个变量吗?
顺便,你可以试试把原来的num_classes: 2
去掉,仅仅修改这里的DATA_PATH
变量,看看能不能运行。
如果num_classes: 2
+ DATA_PATH
或者仅修改DATA_PATH
两种方式都还是不行,就请你在ldm/data/sts3d.py
的dataloader里面将实际读取到的路径打印到命令行输出看看,这对debug也有所帮助,谢谢~
作者您好 我尝试了很多次修改 每一次都是在epoh9终止,请问您这是什么原因呢?感谢您的回复。
抱歉,是我没有在README中解释清楚。
基于你的log,你这里出现的问题在于没有正确的读取到测试集数据: 红框内的值应该是12,表示12个测试volumes。
而之所以会在epoch9的时候报错,是因为configs/latent-diffusion/synapse-cls2-ldm-kl-8.yaml
中定义了log_dice_frequency: 5000
,意味着每5000个training steps就会中断训练执行一次测试过程,而测试集又没有读取到,所以报错。这里可以看到错误出现在training steps为5000的时候:
没有读取到测试集数据自然就导致了你这里第三章图中的division by zero的错误。
数据集中应该还有一个test_vol
文件夹,存放了12个测试集数据的volumes及其对应的label文件:
这一步我应该是手动做的,所以没有反映在nii2format.py
中。
应该注意,synapse-cls2-ldm-kl-8.yaml
中提到了一个SynapseValidation
用于validation,和一个SynapseValidationVolume
用于testing(二者都定义在ldm/data/synapse.py
中),这二者的异同在于:
SynapseValidation
和SynapseValidationVolume
所使用的其实是完全相同的12个volumes里的数据,但前者是2D slices而后者是3D volumes;SynapseValidation
来计算相关的loss,而不计算分割指标(dice);训练过程中的testing process使用SynapseValidationVolume
来计算分割指标,使得我们可以了解模型目前的分割效果如何。synapse-cls2-ldm-kl-8.yaml
中的check_val_every_n_epoch
来定义,对于BTCV数据集默认为10;testing process的频率通过log_dice_frequency
来定义,对于BTCV数据集默认为5000 steps。作者您好!根据您的建议进行修改后出现了如图所示得报错,该如何修改呢?感谢您的回复!
请你先尝试自己debug之后,告诉我debug过程中发现的现象,再整理成现象+问题(+思考)的格式来问问题。而不是“如图所示”就要让我分析出问题在哪,没有人有这个能力,也极少有报错这么简单。私以为直接甩张图就要作者将解决方案喂到嘴边的行为是不礼貌的,请理解。
提高所问问题的质量将很大程度上提升我们的沟通效率。谢谢!
For example,
Attribute Error: 'list' object has no attribute 'shape'
意味着seg_label_dict[k]
是一个list;seg_label_dict
是来自模型的log_dice
函数的返回值;ldm/models/ddpm.py
中,根据这个文件以及推理代码scripts/slice2seg.py
都可以看出log_dice
函数的定义和模型在一起,因此找到ldm/models/ddpm.py
中的log_dice
;seg_label_dict
来自变量seg_label_pair
;ctrl+f
或cmd+f
一下就可以找到seg_label_pair
的定义,来自于1668-1684
行;依次阅读并检查上述部分的代码将非常有助于发现问题。(上述步骤里其中有一步解释了为什么调用.shape
的时候seg_label_dict[k]
会是list类型,请自己找到答案)
解决问题后,希望能提交PR来帮助SDSeg代码库的更新,如果不熟悉PR的流程,也可以简单总结解决这些bug所进行的代码修改。感谢。
你好,
README中说明了STS3D的预处理代码为“./data/sts3d/sts3d_preprocess.py”。(btw,STS-3D数据集本来就是只有两个类别:背景+牙齿)
或者你也可以看看这个issue里我和DDBB-YL的讨论,他似乎已经解决了这个问题。
Tianyu
From: CatCatCat @.> Date: Tuesday, September 24, 2024 at 06:11 To: lin-tianyu/Stable-Diffusion-Seg @.> Cc: Tianyu Lin @.>, Comment @.> Subject: Re: [lin-tianyu/Stable-Diffusion-Seg] BTCV (Issue #12)
请问作者:num_classes为2的话,STS3D数据集我是不是需要先手动把所有标签值都设为1呢,还是代码里面有处理呢,我也是运行会出现这个问题。
― Reply to this email directly, view it on GitHubhttps://github.com/lin-tianyu/Stable-Diffusion-Seg/issues/12#issuecomment-2370848075, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ARUIAENDAQQHZTDITKTVYLLZYE3DPAVCNFSM6AAAAABN6R553CVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNZQHA2DQMBXGU. You are receiving this because you commented.Message ID: @.***>
我看了一下STS3D的dataloader代码,
ldm/data/sts3d.py
里定义了一个DATA_PATH
变量作为STS3D数据集的输入路径。请问你修改了这个变量吗?顺便,你可以试试把原来的
num_classes: 2
去掉,仅仅修改这里的DATA_PATH
变量,看看能不能运行。如果
num_classes: 2
+DATA_PATH
或者仅修改DATA_PATH
两种方式都还是不行,就请你在ldm/data/sts3d.py
的dataloader里面将实际读取到的路径打印到命令行输出看看,这对debug也有所帮助,谢谢~
@DDBB-YL @CatCatCat 我已经将STS3D数据集的相关设置文件(yaml, sts3d.py)进行了更新,有需要的话可以看看最新的代码。
此外,请务必将yaml文件中的increase_log_steps
设置为False,即increase_log_steps: False
。这会减少不必要的log过程,前期训练速度会大幅增加,谢谢。
作者您好我在使用BTCV数据集输入python ./data/synapse/ni12format.py命令时出现了这个问题 请问您该怎么解决呢?感谢您的回复。