由于13号睡前停电断网,所以我把两天的内容放在一起去写了
当有很多事情摆在你面前的时候,你需要按照urgent的顺序分类,先做最urgent的事情,而不是逃避去把最urgent的事情放到最后去做。
14号的杂事有注册QE和填网上的银行账户。
最重要的事情是把作业写完,发完邮件和train新的代码。
一、把ITK-SNAP的一些问题弄懂
参考文章:2019-02-03
我先下载原图,然后导入到ITK-SNAP里去看问题。下载文件的时候去整理好电脑桌面。
A、需要解释的问题
1、关于bit的问题:
什么是bit:
颜色深度概念:颜色深度是指每个像素可以显示的颜色数,一般是用“位-Bit”为单位来描述的。
举例说明:
如果一个图片支持256种颜色(如GIF格式),那么就需要256=2^8 个不同的值来表示不同的颜色。也就是从0到255,用二进制表示就是从00000000到11111111,总共需要8位二进制数,所以颜色深度是8 Bit。
软件只支持8-bit或者16-bit
之前的图恰好是8-bit的,所以在label的时候没有遇到什么问题。
2、关于load image sequence 的问题:
首先从imageJ里load file sequence,然后save as rawdata。再在ITK-SNAP里load刚刚save的raw data即可。
3、加载的图像在Y坐标翻转:
左下角是原点.
图像并没有翻转呀
4、label image要比原图大:
是原图的两倍大。
原图是1024*1024,8bit
label之后再保存,图像的大小是:2MB,1024*1024而且是16bit。
5、是否支持image_sequence的导入?
在ImageJ里导入image_sequence,然后在ITK-SNAP里,z轴的pixel选为sequence的数目即可。
B、自己的探究
1、一开始往ITK-SNAP里导入不成功的原因:
原图是12bit,但是我导入的时候选的是支持8bit。
怎么看rawdata是12bit还是8bit呀?
2、为什么要把TIF图变成rawdata格式的图,有什么优点呢?
怎么查看图片的位深度?
对TIF图片,右键属性,详细信息,可以看到位深度为24。
3、怎么放大图?
点击刷子旁边的放大镜按钮,选择2*或者4*即可。
4、最后保存的nrrd的图怎么处理?
参考这篇:https://blog.csdn.net/Michelexie/article/details/81907613
nrrd格式用Python读取并保存为png图片
C、从学姐那里学来的一些技巧
1、先导入image sequence,然后存成 rawdata,这时候变成了3Dstack的rawdata
2、存图片的时候,直接点上面的segmentation,然后存成nrrd格式的segmentation.(不推荐直接存成workspace)
3、再次导入的时候,你先加载原图,然后把存的segmentation的nrrd丢进来。
4、然后你在label的时候可以选择3D label,然后前后调整图像去微调。这样就不用每一张图都自己重新画啦。
5、存起来是黑白的,但是可以用colorcoding的代码让图像变得好看。
二、train起来pixel2pixel的GAN网络
接着2019-02-08去写。
1、分析例子里的数据集:
例子里的数据集有3个文件夹:train, test, val,分别含有的图像数目为:400,106,100
2、开始combine_images
遇到问题1:
跑出来的结果:train 和 test 里没图,val里面有图,但是不对应。
(1)不对应的原因是:val文件夹命名的时候顺序错乱了。
(2)train 和 test 里没图,但是val里有图:
原因:命名问题:组合在一起的照片务必需要有相同的名字!
命令:
在主文件夹下运行这段命令
python3 ./datasets/combine_A_and_B1.py --fold_A ./datasets/cell2/A --fold_B ./datasets/cell2/B --fold_AB ./datasets/cell2
记得是运行1.py,原因在2019-02-08里有写。
成功,终于有图了!
3、开始train
参考网站:
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
https://blog.csdn.net/Gavinmiaoc/article/details/80585531
正确的命令应该是:
python train.py --dataroot ./datasets/cell2 --name cell2_pix2pix --model pix2pix --direction AtoB
网站上的相关文字如下:
Train a model:
#!./scripts/train_pix2pix.sh
python train.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
To view training results and loss plots, run python -m visdom.server and click the URL http://localhost:8097. To see more intermediate results, check out ./checkpoints/facades_pix2pix/web/index.html.
Test the model (bash ./scripts/test_pix2pix.sh):
#!./scripts/test_pix2pix.sh
python test.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
The test results will be saved to a html file here: ./results/facades_pix2pix/test_latest/index.html. You can find more scripts at scripts directory.
先跑一下,能正常跑起来了之后,然后再放到后台去跑。
遇到问题1;怎么改batch_size?
看一下主文件夹下的option文件夹下的train_option.py和base_option.py文件。
在base_option.py里,有epochs和batch_size的选项。
--batch_size 2
--epoch 100
这样的话,命令可以改为:
python train.py --dataroot ./datasets/cell2 --name cell2_pix2pix --model pix2pix --direction AtoB --epoch 100 --batch_size 2
解决问题。
然后放到后台去跑吧!
参考文章:2019-02-07
因此,命令行如下:
nohup python train.py --dataroot ./datasets/cell2 --name cell2_pix2pix --model pix2pix --direction AtoB --epoch 100 --batch_size 2 &
我估计是网络原因导致了一开始跑到一半就没有显示进程了。。。。
原来是自己的网线接口坏掉了。
进程编号是:19902
遇到问题2:如何结束这个进程?
因为主文件夹下的nohup.out里装了上一次的运行代码,所以你需要删掉它,再开始跑这次的。所以需要结束进程。
参考网址:https://www.cnblogs.com/baby123/p/6477429.html
终止进程的代码:
kill -9 进程号
查看后台进程的代码:
jobs -l
重新跑,这次的进程编号是:20504
但是nohop.out里还是有以前的信息记录啊。。。。
先跑着吧 不管那么多了。
其实我觉得自己可以先跑一下例程,看一下例程里有没有什么 client log的。
还是停下来跑例程吧!
明明后台有程序在跑啊,为啥输入jobs -I 没有东西输出呢?
我试试看跑例程嗷,跑例程也遇到一样的情况。
nohup python train.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA &
进程号是21699
这时候输入:jobs -l,会看到一个running的进程。
也是遇到了一样的情况,那么就等着它跑就好了。
好奇怪啊,关掉Ubuntu,再进来,再输入job -I,就没有进程了。。。好奇怪啊。。。。
上一次似乎是报错了:
train.py: error: argument --direction: expected one argument