用自己的数据集实战CycleGAN

       最近在做关于跨模态的医学图像生成,所以今天就跟大家聊一聊如何用自己的数据集训练CycleGAN吧~

       首先,我们来聊聊什么是CycleGAN?

       CycleGAN的一个重要应用领域是Domain Adaptation(域迁移:可以通俗的理解为画风迁移),比如可以把一张普通的风景照变化成梵高化作,或者将游戏画面变化成真实世界画面等等(如图1)。

图1 效果预览

       CycleGAN特点就是通过一个循环,首先将图像从一个域转换到另一个域,然后,再转回来,如果两次转换都很精准的话,那么,转换后的图像应该与输入的图像基本一致。通过这样的的一个循环,CycleGAN将转换前后图片的配对,类似于有监督学习,提升了转换效果。

       其中,在跨模态医疗图像生成中,大多会用到CycleGAN来完成。比如说,T2转T1等等。

       接下来废话不多说,我来教教大家如何用自己的数据集训练CycleGAN。文末会附上资源(代码和论文)。

       第一步,下载代码。解压后应该是图2这样。

图2 代码构成 

       第二步,数据准备。我这边是做的核磁共振T2转T1。大家在datasets文件夹中创建一个horse2zebra文件夹(如图3)。

图3 horse2zebra文件夹

       horse2zebra文件夹构成如下(图4)。大家将对应的图片放入文件夹中。数据集就完成啦~

       需要注意的是,trainA和trainB是训练的数据集,testA和testB是测试的数据集,大家记得按照自己需求进行分配哦~ trainA和testA是需要转换的图片,就是我做的这个的T2图片,trainB和testB是风格图片,就是我的任务中的T1图片。如图5。

图4 horse2zebra文件夹构成

图5 数据集构成

       第三步,开始训练数据集啦!我是用的学校服务器,通过命令行执行代码。

       需要调整的参数有epoch和batch_size。大家在根据图6找到这几个参数,并根据自己的情况进行修改即可。

图6 参数位置

        在命令行中输入下述代码,执行就可以开始训练啦!

nohup python train.py --dataroot ./datasets/horse2zebra --name horse2zebra_cyclegan --model cycle_gan &

       在nohup.out文件中会出现运行结果(如图7)。

图7 训练结果

       如果出现报错,大家根据报的错进行修改,一般来说,应该只会出现某个库没有下载的问题,这种情况大家用“pip install xxx”缺哪个库补哪个库就行。

       第四步,进行测试!训练结束之后就可以开始测试了,测试用的是我们文件夹testA中的数据。

      在checkpoints文件夹的horse2zebra_cyclegan文件夹中存有所有的权重。我们找到latest_net_D_A.pth。如图8。

图8 训练权重位置

        我们在checkpoints文件夹中创建一个horse2zebra_pretrained文件夹,并将latest_G_A.pth复制到horse2zebra_pretrained文件夹中,并改名为latest_net_G.pth。如图9。

图9 测试权重准备

          在命令行输入下述代码,即可开始测试!

nohup python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout &

          测试的结果会保存在reults文件夹中。如图10。

图10 测试结果位置

         测试结果如图11。

图11 测试结果(左:生成图,右:原图)

         这样,整个训练和测试就结束啦!

        CycleGAN可以应用于很多领域的图像生成,风格迁移,甚至是AI画图。大家可以用自己的数据集做一下,说不定效果会很不错哦~

       最后附上相关资源(代码+论文),希望对各位小伙伴有所帮助鸭!

风格变换用CycleGAN跑自己的数据集code+训练教程+论文资源-CSDN文库

       大家如果有什么好的想法也可以发在评论区,大家一起讨论,一起学习鸭!祝大家科研愉快,中秋快乐呀~

### 使用自定义数据集训练CycleGAN模型 #### 数据准备与预处理 为了使自定义的数据能够被CycleGAN模型所利用,需遵循特定的文件夹结构并执行必要的预处理操作。依据给定的信息,在`single_dataset.py`中实现了一个专门用于加载单一路径下图片集合的数据集类[^1]。然而,对于完整的CycleGAN训练而言,通常需要两个不同域的图像作为输入。 在构建适合于CycleGAN框架下的数据集之前,应该先按照如下方式整理好原始素材: - 创建名为A和B的子目录分别存储来自源领域(如马)的目标领域(如斑马)样本; - 确保每个类别内部的所有实例都具有相同的尺寸规格;如果存在差异,则可通过裁剪或填充来统一大小; - 对所有待使用的视觉材料实施标准化流程——这可能涉及到色彩空间转换、亮度对比度调整等方面的工作[^3]。 完成上述准备工作之后,可借助Python库PIL/Pillow读取这些静态资源,并将其转化为NumPy数组形式以便后续处理。此外,还应当注意审查整个批次内的统计特性是否存在偏差现象,及时剔除那些明显偏离正常范围之外的对象以维持整体质量稳定。 #### 配置参数设定 当准备好高质量的数据后,下一步就是定制化实验环境中的各项超参了。考虑到官方给出的例子已经涵盖了大部分常用选项,这里仅列举几个较为重要的条目供参考者自行修改适应具体应用场景的需求: - `--dataroot`: 定义本地磁盘上存放着配对好的AB两类实体的具体位置; - `--name`: 给本次运行指派独一无二的名字标签方便日后检索查看日志记录; - `--model cycle_gan`: 明确指出采用的是哪一个具体的网络架构版本; - `--no_dropout`(默认开启): 控制是否应用Dropout机制防止过拟合情况发生; - `--lambda_A`, `--lambda_B`: 调节对抗损失项前系数权重影响最终效果呈现风格倾向性[^2]。 除了以上提到的内容外,还有许多其他潜在可控变量等待探索发现,比如批量规模(`batch_size`)、迭代次数(`n_epochs`)等都会不同程度地作用到收敛速度乃至泛化能力之上。 #### 常见问题解决方案 在整个开发周期内难免会遇到各式各样的挑战难题,下面罗列了一些普遍存在的状况及其对应的应对策略: - **内存溢出错误**:尝试减少每轮次参与计算的数量级或是启用梯度累积技术分摊压力; - **生成结果缺乏多样性**:适当增加噪声扰动程度促进探索未知解空间的可能性; - **跨平台移植困难**:确保依赖包版本一致性和硬件加速驱动程序安装无误; - **性能瓶颈难以突破**:考虑引入混合精度运算(Mixed Precision Training)提高吞吐量效率。 ```bash python train.py \ --dataroot ./datasets/horse2zebra \ --name horse2zebra_cyclegan \ --model cycle_gan \ --no_dropout \ --lambda_A 10.0 \ --lambda_B 10.0 ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cherry330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值