2025.4.11记录
在使用训练好的nnunet进行推理时,出现了莫名其妙的报错“RuntimeError: Some background workers are no longer alive”。
搜索网上的解决方案,发现没有直接可以适用于这种情况的解决办法,于是综合查到的各种办法,最后莫名其妙地又可以正常推理产生分割结果了。下面是目前正常推理的解决办法:
在.bashrc 中最后一行添加
export nnUNet_compile="False"
然后保存
之后在命令行中 source .bachrc
更换numpy版本,从1.26.3换成1.26.4
更换虚拟环境,从nnunetv2=2.2.1换成2.5.2
测试命令nnUNetv2_predict -i /media/nii_data_0000/ -o /media/nnunet_predict -d 105 -c 3d_fullres -f 0 -npp 1 -nps 1
后续:正常推理几分钟后又出现相同报错,只产生五个分割结果。
暂时无法解决报错,暂时搁置。
2025.4.18记录
由于仍然需要使用nnunet分割上面的数据集,在多次尝试使用nnunet指令测试后,报错依旧。但发现每次报错时系统内存都爆满,怀疑是因为nnunet代码对于内存优化太差,同时模型的分割类别数太多(100+),需要分割的数据又比较大(每个100MB左右),多种因素叠加导致无法分割此数据集。
为了验证怀疑的报错原因,使用分割类别20+的nnunet模型预测分割此数据集,可以正常运行;使用报错的nnunet模型去预测其他较小数据集(每个几十MB左右),也可以正常运行,验证成立。到此报错也算另一种方式的解决了。