代码链接:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
代码结构分析可以参考这一篇:https://zhuanlan.zhihu.com/p/55059359
一、数据集格式以及数据集导入方法
参考文章:
https://blog.csdn.net/weixin_36474809/article/details/89004591
https://www.twblogs.net/a/5c9a6fb0bd9eee4250080ed5/zh-cn
1.
参考这一篇:
先download一个dataset去看。
从这个网页去download dataset: https://people.eecs.berkeley.edu/~tinghuiz/projects/pix2pix/datasets/
我下载了一个最小的数据集:facades.tar.gz 以观察其中的结构。
其中facaeds文件夹中包含3个文件夹,分别为:val, train, test.
val里包含100张图,train里包含400张图,test里包含106张图。
图片是jpg格式的合成图,大小是512*256,左边是original image,右边是groundtruth.
2.
在dataset里有两个python文件:make_dataset_aligned.py和combine_A_and_B.py。这里:combine_A_and_B.py需要被用到。
3.
对数据集的英文要求:
We provide a python script to generate pix2pix training data in the form of pairs of images {A,B}, where A and B are two different depictions of the same underlying scene. For example, these might be pairs {label map, photo} or {bw image, color image}. Then we can learn to translate A to B or B to A:
Create folder /path/to/data with subfolders A and B. A and B should each have their own subfolders train, val, test, etc. In /path/to/data/A/train, put training images in style A. In /path/to/data/B/train, put the corresponding images in style B. Repeat same for other data splits (val, test, etc).
Corresponding images in a pair {A,B} must be the same size and have the same filename, e.g., /path/to/data/A/train/1.jpg is considered to correspond to /path/to/data/B/train/1.jpg.
文件夹要求:一共应该在dataset下对应的数据集文件夹下创立两个文件夹:A 和B。A 和B下分别放入train,val和test三个文件夹,同时在dataset文件夹下,也放入train, val和test三个文件夹。
命名要求:需要A和B中的数据集的对应图片的名称相同
数据集按照上面的命名好之后,运行如下命令行:
python datasets/combine_A_and_B.py --fold_A /path/to/data/A --fold_B /path/to/data/B --fold_AB /path/to/data
此命令行将源域和目标域图像combine each pair of images (A,B) into a single image file,可以用于训练。
参考其他文章中的代码:
python /home/xingxiangrui/pytorch-CycleGAN-and-pix2pix/datasets/combine_A_and_B.py --fold_A /home/xingxiangrui/pytorch-CycleGAN-and-pix2pix/datasets/pix2pix-nor2cott/A --fold_B /home/xingxiangrui/pytorch-CycleGAN-and-pix2pix/datasets/pix2pix-nor2cott/B --fold_AB /home/xingxiangrui/pytorch-CycleGAN-and-pix2pix/datasets/pix2pix-nor2cott/AB
基于我们的文件名,代码应该是:
位于主文件夹下执行以下命令:
python datasets/combine_A_and_B.py --fold_A datasets/cells/A --fold_B datasets/cells/B --fold_AB datasets/cells/AB
命令行正确,train和val和test三个文件夹直接生成在datasets/cells下的一个新文件夹AB下。
python images_for_test/combine_A_and_B.py --fold_A images_for_test/A --fold_B images_for_test/B --fold_AB images_for_test/AB
二、运行的命令
运行的命令行是:
python train.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
参考另一篇文章中的运行命令:
python train.py --dataroot ./datasets/pix2pix-nor2cott/AB --name nor2cott_pick_pix2pix --model pix2pix --direction AtoB
他的文件夹就是:pix2pix-nor2cott/B/train/ 和 pix2pix-nor2cott/A/train/
那么我的命令应该是:
python train.py --dataroot ./datasets/cells/AB --name cells_pix2pix --model pix2pix --direction BtoA
在后台运行的代码是:
python train.py --dataroot ./datasets/cells/AB --name cells_pix2pix --model pix2pix --direction BtoA
注意这里的BtoA是运行方向:意味着从label到original images。
三、在运行过程中遇到的问题
创建了环境pix2pix_hh,在这个环境里跑代码。
1. 报错:ImportError: cannot import name 'imresize'
解决办法:
参考网站:https://blog.csdn.net/eee528/article/details/82144191
这真是一篇深度好文啊。
原因是scipy的环境变量没有到加入新的环境中。
我是把环境换成了base的环境就没有这个报错了。
2.报错:读数据时,num_of_sample为0.
解决办法:
检查数据集格式是否有误。
可能原因:是不是tif文件读不进去?
官网的数据集的格式是:‘.jpg’而不是'.tif'
把数据集换成jpg就可以了。
注释:数据集读入模型分析
数据集读入的代码位于主文件夹下的data文件夹下的aligned_dataset.py文件中。
其实该段代码只是把合并的两个图像拆开而已
成功开始跑code了。
进程的number为:【1】13000
3、遇到问题:
重新跑的时候,一直停在这个提示符,不继续往下跑:
WARNING:root:Setting up a new session...
回去解决这个问题吧。
先读文献。
四、对代码进行test
test的参考命令行:
python test.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
实际命令行:
python test.py --dataroot datasets/cells/AB --name cells_pix2pix --model pix2pix --direction BtoA
结果存储的位置:主文件夹下的result文件夹
结果评价:
(1)我放进去的图明明是1024:1024,出来之后却变成了256*256的。
(2)图片很模糊,看不清具体的细胞。
网友评论