tianbaochou / NasUnet

170 stars 45 forks source link

重现时出现的问题 #21

Open zhangzhihanzzh opened 4 years ago

zhangzhihanzzh commented 4 years ago

你好,我在重现这个代码的时候,在GTX 1080Ti上同样使用Pascal的数据库进行探索网络结构的时候,它只运行了12个小时就结束了。 和你在论文里写的一天半时间相比,是不是这次探索没有训练完啊?(我没有动里面的代码,完全就是按照你在readme上面写的步骤一步一步执行的。)

当我想验证网络结果的时候,我使用了promise12的数据集进行实验,增加了在train.py中的test函数,但是我看不到测试出来的结果图。直接print像素的话全部都是0。而且运算结果中DSC只有0.70左右,和了论文中的结果相差甚远。不仅如此原图我也没有办法直接查看,请问你在实验的时候是怎么样查看数据库图片的?

tianbaochou commented 4 years ago

你好,我在重现这个代码的时候,在GTX 1080Ti上同样使用Pascal的数据库进行探索网络结构的时候,它只运行了12个小时就结束了。 和你在论文里写的一天半时间相比,是不是这次探索没有训练完啊?(我没有动里面的代码,完全就是按照你在readme上面写的步骤一步一步执行的。)

当我想验证网络结果的时候,我使用了promise12的数据集进行实验,增加了在train.py中的test函数,但是我看不到测试出来的结果图。直接print像素的话全部都是0。而且运算结果中DSC只有0.70左右,和了论文中的结果相差甚远。不仅如此原图我也没有办法直接查看,请问你在实验的时候是怎么样查看数据库图片的?

测试结果可以通过tensorboard看到。Promise12有些图可能就是全0的。 目前测试部分可能有些问题,不建议在Promise12上用。DSC在Promise上不可能只有0.7.一般比较高的

zhangzhihanzzh commented 4 years ago

谢谢您在百忙之中回复我的邮件。

测试部分我直接使用了train文件中下方的代码,生成的图片我使用挑战网页官方推荐的医疗软件看到了。

我看您在曾经别人提出的问题下回答,现在网络直接用探索到的最好的结果进行训练,没有探索的过程,请问这部分代码是要我手动调用吗?

我在服务器上运行探索部分代码的时候,原设置800周期,但它终止在了293个周期上,连续试了两遍都是这样,但是看输出的日志上没有特别的错误,显示服务器的终端也没有任何错误的提示。这个是代码中在某个位置做了一些限制设定吗?

在论文中曾经提及,当使用DARTS搜索策略的时候,batchsize设定为二,而当使用proxylessNAS的时候则设定为八。但是代码中,nas_unet_voc里Batch size,一个是六一个是八,这个和论文中所说的有些出入,请问,提供的代码中所使用的搜索策略是DARTS吗?Batch size为什么要这样设置呢?

Promise12上的DSC指标确实不高,目前我还不知道是什么原因,尤其是和miou比起来。请问,在promise12上训练的时候,有调用之前在Pascal上训练出来的网络结构吗?这部分的调用语句我一直没太找到。

期待您的回答。万分感谢!

tianbaochou notifications@github.com 于 2019年11月19日周二 下午5:45写道:

测试结果可以通过tensorboard看到。Promise12有些图可能就是全0的。 目前测试部分可能有些问题,不建议在Promise12上用。DSC在Promise上不可能只有0.7.一般比较高的

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/tianbaochou/NasUnet/issues/21?email_source=notifications&email_token=AKQ3VXGCJLYAI6AKG353G63QUORS3A5CNFSM4JODMUBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEENK2JI#issuecomment-555396389, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKQ3VXDRENOLABLAXEESAE3QUORS3ANCNFSM4JODMUBA .

tianbaochou commented 4 years ago

谢谢您在百忙之中回复我的邮件。 测试部分我直接使用了train文件中下方的代码,生成的图片我使用挑战网页官方推荐的医疗软件看到了。 我看您在曾经别人提出的问题下回答,现在网络直接用探索到的最好的结果进行训练,没有探索的过程,请问这部分代码是要我手动调用吗? 我在服务器上运行探索部分代码的时候,原设置800周期,但它终止在了293个周期上,连续试了两遍都是这样,但是看输出的日志上没有特别的错误,显示服务器的终端也没有任何错误的提示。这个是代码中在某个位置做了一些限制设定吗? 在论文中曾经提及,当使用DARTS搜索策略的时候,batchsize设定为二,而当使用proxylessNAS的时候则设定为八。但是代码中,nas_unet_voc里Batch size,一个是六一个是八,这个和论文中所说的有些出入,请问,提供的代码中所使用的搜索策略是DARTS吗?Batch size为什么要这样设置呢? Promise12上的DSC指标确实不高,目前我还不知道是什么原因,尤其是和miou比起来。请问,在promise12上训练的时候,有调用之前在Pascal上训练出来的网络结构吗?这部分的调用语句我一直没太找到。 期待您的回答。万分感谢! tianbaochou notifications@github.com 于 2019年11月19日周二 下午5:45写道: 测试结果可以通过tensorboard看到。Promise12有些图可能就是全0的。 目前测试部分可能有些问题,不建议在Promise12上用。DSC在Promise上不可能只有0.7.一般比较高的 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#21?email_source=notifications&email_token=AKQ3VXGCJLYAI6AKG353G63QUORS3A5CNFSM4JODMUBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEENK2JI#issuecomment-555396389>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKQ3VXDRENOLABLAXEESAE3QUORS3ANCNFSM4JODMUBA .

目前这边的搜索策略采用的是DARTS, Search和Train目前是分开的,需要你将Search的genotype手动放入models/geno_searched.py中。 比如

NAS_UNET_XXX = Genotype(down=[('down_dil_conv', 0), ('down_conv', 1), ('max_pool', 1), ('down_conv', 0)], down_concat=range(2, 4),
                           up=[('conv', 0), ('up_dil_conv', 1), ('conv', 2), ('up_cweight', 1)], up_concat=range(2, 4))
NASUNET = NAS_UNET_XXX 

这样在训练的时候就能够采用你搜索的结果。结构的话应该是调用Pascal Search出来的。 Batch Size设定大,是为了在Search阶段加速,但是显存占用会比较大。 停止在239的话,是因为训练时采用了Early Stopping

zhangzhihanzzh commented 4 years ago

跪谢指导。我再尝试运行试试~

zhangzhihanzzh commented 4 years ago

你好,我用论文中提到的PROMISE12数据库重新运行了你们的代码,但是运行的时间实在是相差得有点大。大约一个半小时就完成了,跟论文中提到的8小时实在差的有点大。之后我又用了DRIVE数据库测试。编写了对应的数据库文件之后直接使用原探索最好的结果直接运行,大概只有半个小时的时间。这两个数据库从数据量上相差两倍,以及一个是3D,一个是2D,这个造成的差距我可以理解,但是和论文中提到的时间相比实在有些说不通。而且我是用的服务器也没有你们使用的那么好。 请问你们在跑这些验证数据集的时候,也包含了在验证数据集上探索的过程了吗?还是多了什么其他的步骤?为什么时间会这么长呢?

tianbaochou commented 4 years ago

你好,我用论文中提到的PROMISE12数据库重新运行了你们的代码,但是运行的时间实在是相差得有点大。大约一个半小时就完成了,跟论文中提到的8小时实在差的有点大。之后我又用了DRIVE数据库测试。编写了对应的数据库文件之后直接使用原探索最好的结果直接运行,大概只有半个小时的时间。这两个数据库从数据量上相差两倍,以及一个是3D,一个是2D,这个造成的差距我可以理解,但是和论文中提到的时间相比实在有些说不通。而且我是用的服务器也没有你们使用的那么好。 请问你们在跑这些验证数据集的时候,也包含了在验证数据集上探索的过程了吗?还是多了什么其他的步骤?为什么时间会这么长呢?

你好,最近没有登Github没看到。这个问题应该是由于使用了early stopping带来的。因为PROMISE12是二分类问题,所以很容易收敛。程序会根据收敛情况来即使终止。我在实验的时候时间确实是8个小时左右。实际效果是需要微调的,微调过程可能比较慢。

zhangzhihanzzh commented 4 years ago

我取消了early stopping之后重新运行,让搜索的部分运行了800个周期,这一部分运行了一天九个小时。之后重新运行promise12数据库,200个周期之后仍然只有3个半小时左右。而且这次的结果不是很好,DSC的值从0.55到0.89,波动非常大。 请问您运行的时候周期是多少呢?这种微调是指什么? 另外DARTS算法您是在代码中分散使用的吗,还是全部写在哪一个文件中了?我想更换一下搜索算法,请问应该直接对哪个文件进行操作?

tianbaochou commented 4 years ago

我取消了early stopping之后重新运行,让搜索的部分运行了800个周期,这一部分运行了一天九个小时。之后重新运行promise12数据库,200个周期之后仍然只有3个半小时左右。而且这次的结果不是很好,DSC的值从0.55到0.89,波动非常大。 请问您运行的时候周期是多少呢?这种微调是指什么? 另外DARTS算法您是在代码中分散使用的吗,还是全部写在哪一个文件中了?我想更换一下搜索算法,请问应该直接对哪个文件进行操作?

目前DARTS的搜索算法和DARTS是一致的,主要在search/backbone/nas_unet_search.py中。目前搜索算法和Search是耦合的,要是理解DARTS的话,建议可以试试其他搜索方法,比如PDarts, PC-DARTS, FairDARTS等

sjjdd commented 3 years ago

请问代码中最后采用的是DARTS吗,这个能在一张卡上跑吗?

zhangzhihanzzh commented 3 years ago

是的, 控制每次运行的数据量可以在一个gpu跑

sjjdd notifications@github.com于2021年1月10日 周日下午9:55写道:

请问代码中最后采用的是DARTS吗,这个能在一张卡上跑吗?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/tianbaochou/NasUnet/issues/21#issuecomment-757471775, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKQ3VXAUPAUL5TGJ5T4JPFLSZGPSJANCNFSM4JODMUBA .

sjjdd commented 3 years ago

谢谢,请问这个应该也可以用于搜索自己的数据集吧,我更新自己的数据集,然后写个数据集py,还有我运行search_network.py是搜索网络结构吧,但是train.py里是怎么加载由search_network搜索到的网络我没有看到.

sjjdd commented 3 years ago

你好,可以加您zhangzhihanzzh一下联系方式吗,想向您请教一下nas医学分割的问题,不胜感激

sjjdd commented 3 years ago

你好,请问训练完之后调用test.py使用训练好的权重,怎么在test.py里面没有找到,模型加载权重的语句啊,就是model.load的语句

zhangzhihanzzh commented 3 years ago

谢谢,请问这个应该也可以用于搜索自己的数据集吧,我更新自己的数据集,然后写个数据集py,还有我运行search_network.py是搜索网络结构吧,但是train.py里是怎么加载由search_network搜索到的网络我没有看到.

seatch_cell.py是搜索网络结构.加载方法是手动加载,你可以看我之前提问的问题,作者已经回答了。

zhangzhihanzzh commented 3 years ago

你好,请问训练完之后调用test.py使用训练好的权重,怎么在test.py里面没有找到,模型加载权重的语句啊,就是model.load的语句

那个test文件我没有用。我本人是直接使用train里的test函数,然后自己手动调用

dongshaojia commented 3 years ago

你好,请问训练完之后调用test.py使用训练好的权重,怎么在test.py里面没有找到,模型加载权重的语句啊,就是model.load的语句

那个test文件我没有用。我本人是直接使用train里的test函数,然后自己手动调用

您好,您方便分享一下您的train.py文件吗,就是手动调用test函数的时候