SuperJunier666 / LiverVesselWithGraph

2 stars 0 forks source link

作者您好,想请教您一个问题,关于log_graph_liver #2

Open bamboo211 opened 3 weeks ago

bamboo211 commented 3 weeks ago

作者您好,非常感谢您在githun分享的肝脏血管分割任务项目。受限于自身功底,课题处于瓶颈期,在学习您的代码,按照您更新后的centerline_extract.py文件,我重新执行了流程,近日在3_graph_liver.py文件中遇到了困难,找了身边同学也没有能解决,想向您请教 在2_train_val_split.py后(7:3),产生了F:\Code\Liver_vessel\pre_data\train以及F:\Code\Liver_vessel\pre_data\val,其中val文件夹下含有case3、case6、case8、case12、case13、case16文件夹及其内部文件,但是执行的3_graph_liver.py仅生成了F:\Code\Liver_vessel\pre_data\graph_val\case12即case12中的case12_patch001_12.gpickle至case12_patch035_12.gpickle文件,后面报错: 节点个数: 3024 边个数: 187 log_run_graph_liver.txt 运行及文件生成情况.zip

** Time: 25.777490854263306 ** F:\Code\Liver_vessel\pre_data\val\case13\case13_patch001_img.nii.gz case13_patch001 start F:\Code\LiverVesselWithGraph\3_graph_liver.py:83: RuntimeWarning: invalid value encountered in divide temp = np.around(temp / count).astype(int) Traceback (most recent call last): File "F:\Code\LiverVesselWithGraph\3_graph_liver.py", line 193, in graph = graph_construct(img_paths[idx], seg_paths[idx], size=12, edge_dist_thresh=20,save_dir=save_dir) File "F:\Code\LiverVesselWithGraph\3_graph_liver.py", line 103, in graph_construct if speed[graph.nodes[n]['x'], graph.nodes[n]['y'], graph.nodes[n]['z']] == 0: IndexError: index -2147483636 is out of bounds for axis 0 with size 160 会不会是代码根据原先的centerline_extract.py的肺部动静脉图像设置的,根据调试,没有理解for i, n in enumerate(node_list): if speed[graph.nodes[n]['x'], graph.nodes[n]['y'], graph.nodes[n]['z']] == 0: print('n', n)以及speed(160,160,96),size=12的设置和x_quan的含义,很困惑怎样解决这个报错,因为根据后续train.py应该会需要产生的graph_val和graph_train文件。第二个疑虑就是,3_graph_liver.py中获取graph_train是否直接将graph_val的文件路径更改成划分后的train的路径即可。诚挚地希望您在百忙中帮忙看一下,不胜感激!

SuperJunier666 commented 3 weeks ago

你好,对于第一个问题,索引超出160可能是由于裁剪的patch尺寸不为160,160,96。你可以输出尺寸大小进行检查。此外,3Dircadb标签只做了门静脉与肝静脉分割,且血管标签值应都设为1。在3_graph_liver.py注释部分可以将图结构可视化显示以保证正确。第二个问题直接像你说的一样更改路径便可以。

bamboo211 commented 3 weeks ago
    作者您好,感谢您百忙之中的答复!
    我用代码检查打印了F:\Code\Liver_vessel\pre_data\val下的case3、case6、case8、case12、case13、case16文件夹中的所有如case12_patch001_cenertline.nii.gz、case12_patch001_img.nii.gz、case12_patch001_seg.nii.gz文件的尺寸,确定了文件尺寸均为(160,160,96),为什么执行3_graph_liver.py时graph_val文件夹下只生成了cae12相应文件,之后刚打印case13信息时:

** Time: 25.777490854263306 ** F:\Code\Liver_vessel\pre_data\val\case13\case13_patch001_img.nii.gz case13_patch001 start 紧接着报错: F:\Code\LiverVesselWithGraph\3_graph_liver.py:83: RuntimeWarning: invalid value encountered in divide temp = np.around(temp / count).astype(int) Traceback (most recent call last): File "F:\Code\LiverVesselWithGraph\3_graph_liver.py", line 193, in graph = graph_construct(img_paths[idx], seg_paths[idx], size=12, edge_dist_thresh=20,save_dir=save_dir) File "F:\Code\LiverVesselWithGraph\3_graph_liver.py", line 103, in graph_construct if speed[graph.nodes[n]['x'], graph.nodes[n]['y'], graph.nodes[n]['z']] == 0: IndexError: index -2147483636 is out of bounds for axis 0 with size 160 有关标签问题,在3Dircadb中,20个患者均含有portalvein标签,对于venacava和venoussystem每个患者只含有其中之一,因此,在做肝脏血管分割任务时,我合并了portalvein+(venacava/venoussystem)作为label(参考了noisy lables are useful MTCL这篇论文的方法)有一个困惑是:您的答复中“血管标签值应都设为1”的操作在哪里完成,在项目中还没有发现,不同于MSD task8数据集,3Dircadb中没有json文件标明lable=1 plot 恳请作者百忙之中帮忙排查下是哪里的问题,应该如何解决,不胜感激!

SuperJunier666 commented 3 weeks ago

你用itk-snap等软件打开3Dircadb数据的标签的时候可以显示标签的值,而把lable设为1则表明将肝静脉与门静脉看做一类用于分割

bamboo211 commented 3 weeks ago

作者您好,已经确定了文件尺寸均为(160,160,96),为什么只有val下的case12下的每个patch.nii.gz可以在graph_val文件夹下生成对应gpickle文件,其他文件夹均报错if speed[graph.nodes[n]['x'], graph.nodes[n]['y'], graph.nodes[n]['z']] == 0: IndexError: index -2147483636 is out of bounds for axis 0 with size 160 是否与graph = graph_construct(img_paths[idx], seg_paths[idx], size=12, edge_dist_thresh=20,save_dir=save_dir)的设置有关呢?

SuperJunier666 commented 2 weeks ago

这个设置一般不会影响,你可以加我一下qq:924710446