草庐IT

在windows下安装nnUnet,并制作数据集以及运行(让隔壁奶奶也能学会的教程)

花生米生花@ 2023-04-18 原文

1.前言

nnUnet原代码是在Linux下运行,如果现在windows下安装的话,会报各种错误,得改很多的地方,所以可以直接下载nnUnet_windows文件,这是我已经在windows上成功编译的版本,只要安装成功就可以直接运行。该链接中还包含apex安装包以及制作自己数据格式的代码。
nnUnet的版本是2021/7月更新的。

2.安装虚拟环境与Pytorch

最好要安装虚拟环境,否则要是把python环境安装坏了,那就麻烦了。
1.在命令行输入一下代码,其中nnUnet是虚拟环境名称,选择的python3.7版本

conda create -n nnUnet python=3.7

2.激活虚拟环境输入

activate nnUnet

如果退出虚拟环境使用命令deactivate

3.安装Pytorch,我选的是最新的版本pytorch1.9.0,cuda版本为10.2,这个就不详细叙说了,网上有很多教程。

3.安装apex

在上面给的链接中 有apex安装包,或者你可以在官网上下载apex
然后cd 到apex文件下目录,输入命令

pip install -v --no-cache-dir --global-option="–cpp_ext" --global-option="–cuda_ext" ./

如果这个命令报错的话就换下面命令试试

python setup.py install


这里我盗用一下网上的截图,因为我忘了截图了,如果是success则表示安装成功。有别的教程说要按照hiddenlayer,我还没有安装,反正没有出现问题,出现问题再说。如果想安装的先安装git,conda install git。然后以下输入命令

pip install --upgrade git+https://github.com/nanohanno/hiddenlayer.git@bugfix/get_trace_graph#egg=hiddenlayer

4.安装nnUnet

你可以下载我上面提供的代码,你也可以下载nnUnet官方代码,但是在windows下需要改很多地方。
cd 到nnUnet文件目录,输入命令,别丢了一个".",否则你无法安装。

pip install -e .

如果没有报错的话,恭喜你安装成功,如果报错的话,建议你在官网下载最新的代码,然后升级到最新的python库以及pytorch版本。

5.运行nnUnet

如果你是第一次使用nnUnet的话,建议你先下载官方数据集跑一遍,如果成功的话,在制作自己的数据集。

1.创建文件夹
在nnUnet文件目录下创建Dataset文件夹,当然你也可以在其他地方创建其他名字。

下面创建的文件夹一定要一样,在Dataset文件夹下创建三分文件夹,如下图所示,其中nnUnet_preprocessed用于预处理后的数据,nnUnet_raw用于存储原数据和裁剪的数据,nnUnet_trained_models用于存储训练模型与日志。


然后在nnUnet_raw文件夹下载创建如下两个文件夹,nnUnet_cropped_data用于存放预处理数据, nnUNet_raw_data用于存放原数据。

  1. 设置文件路径,我从官网下载的是Task08_HepaticVessel数据集,随便找一个地方解压。

关键地方来了,这是所有教程没有提到的地方
在linux下要将上面创建的文件添加到系统环境中,但是在windows下没法操作,所以在nnUnet文件夹下找到paths.py文件,然后修改一下三处,注释掉红色框出来的地方,然后换成黄色框出来的地方,文件目录对应你自己的路径。注意:文件路径千万不要写成“//”,就像我下面写的那样就行。否则你会遇到各种错误,这就是windows一直报错的最大原因。

3.转换数据格式,使用以下命令

nnUNet_convert_decathlon_task -i D:\Task08_HepaticVessel\Task08_HepaticVessel

上面是我的路径,你可以换成自己的路径,但我不建议在命令行中运行代码,否则报错的话就很难查到原因,所以可以用下面的方式运行。下面又是干货。
在nnunet\experiment_planning文件夹下找到nnUNet_convert_decathlon_task.py,打开pycharm,然后点击图中地方


在红色框中输入-i D:\Task08_HepaticVessel\Task08_HepaticVessel,然后运行即可,这样报错的话,你可以慢慢调试,寻找错误的地方。

如果运行成功的话,你会在nnUNet_raw_data文件夹下得到如下文件与数据。imagesTr存放的是训练数据,imagesTs是存放测试数据,labelsTr存放的是训练数据的标签, dataset.json是对数据的说明,和存放数据地址。

4.对数据进行预处理,同样不建议使用命令行代码运行,在相同目录下找到nnUNet_plan_and_preprocess.py文件,输入参数

-t 8

其中8对应数据的Id,如果是下载我编译好的代码的话,可以直接运行,如果下载的官方的代码,你会在这遇到一堆问题。
当然你可能还会遇到一个问题,就是电脑cpu内存不够,我电脑的配置是32g内存依然不够,所以我在裁剪数据的时候,只挑选了其中一部分数据集。

如果运行没报错的话,你会在nnUnet_preprocessed文件夹下生成如下的文件夹以及数据

5.开始训练

如果前面一切顺利的话,后面就可以直接运行了在命令行中输入
nnUNet_train 3d_fullres nnUNetTrainerV2 8 4
如果你想调试的话,但是你会发现找不到nnUNet_train文件,这是集成好的nnUNet_train.exe,位置在你安装虚拟环境中。所以换一个文件运行。
在文件夹nnunet\run下找到run_training.py,输入参数,3d_fullres nnUNetTrainerV2 8 4。其中8代表你的任务ID,4代表五折交叉验证(0代表一折)。

运行成功后你会在如下文件路径中得到训练的日志以及模型。如果少一个文件的话都有可能代表你运行失败,会影响后面的推理。

6.推理

在windows下使用多线程用的是
训练完成后,找到imagesTs路径,就是上面制作数据集的路径,然后输入命令pathos库,所以可能需要安装,输入命令

pip install pathos

然后推理的时候输入命令

nnUNet_predict -i F:\nnUNet_windows\DataSet\nnUnet_raw\nnUNet_raw_data\Task008_HepaticVessel\imagesTs -o F:\nnUNet_windows\DataSet\nnUnet_raw\nnUNet_raw_data\Task008_HepaticVessel\imagesTs_infer -t 8 -m 3d_fullres -f 4

其中-i 参数的是输入路径,-o 参数是输出路径。

如果你想调试的话,在inference文件夹中找到predict_simple.py文件,然后输入参数就可以调试了。

有关在windows下安装nnUnet,并制作数据集以及运行(让隔壁奶奶也能学会的教程)的更多相关文章

  1. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  2. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  6. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  7. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  8. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  9. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  10. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

随机推荐