⇨第一部分⇨第三部分你好!
如您所见,假期在一定程度上削弱了文章的时间表。
我认为,在这段时间里,许多人设法,即使没有完全训练他们的模型,也至少尝试了不同的数据集。
1.放分配
2.下载图片
3。???
4.利润!
如果您不熟悉我们的神经网络,或者您开始阅读本文,那么正如他们所说,没有时间进行解释,我们将提供分发工具包,下载必要的图片,然后开始吧!
详细说明
在该系列的上一篇文章中 。
第一块煎饼块状
当我第一次为
@ photo2comicsbot训练模型时,
事不宜迟 ,我只是将约1000页的漫画填充到数据集中。
是的,还有封面,公告和其他填充物。
在入口处看起来像这样:

结果是对应的:



该模型完美传达了漫画和照片之间的一般差异:
原则上,此选项可能足以满足生产需求。
但是我想知道在更“干净”的数据集上可以获得什么结果。
拿两个
在下一个实验中,我在页面上留了一个区块,然后从其余的页面中切出了最大的片段(包括一个区块),以消除最终模型中的垂直和水平分隔线。
如果您对数据集进行更改(例如,删除或添加照片),请不要忘记保存以前的版本。 如果出现问题,您将有一个归还的地方。
第二个数据集如下所示:

正如他们所说,结果是显而易见的:



分隔线消失了,但随着它们的出现,文本的表达力消失了:它们在数据集中的相遇次数开始减少,不再是主要特征。
以前充满文本的空白区域现在充满了迷幻的噪音。
第三次是魅力
我决定完全摆脱文本,只保留漫画中那些没有的部分。 没有人幸存:没有乌云,没有标题或系列名称。
“语言种族灭绝”之后的数据集:

最终结果:



一方面,文物较少,另一方面,表现力消失了。 由于在GAN训练中,结果的质量在很大程度上取决于您和我,因此,没有一个好的模型可供选择。
美丽是旁观者的眼睛,因此不要害怕尝试并选择自己最喜欢的东西。
给武器!
好了,我们已经讨论了主要的陷阱以及处理这些陷阱的方法,现在该开始做生意了。
转到我们下载发行版的文件夹。 让我提醒您,它被称为
pytorch-CycleGAN-and-pix2pix由于我们提供了有关虚拟变量的说明,因此我们不会涉及分发代码,因为所有必需的参数都可以在命令行中进行设置。
在这种分布中,默认训练发生了200多个时代,在第100个纪元后,学习速率呈线性衰减。
我的8 GB卡能够控制的最大分辨率为400x400。 经过全面的培训,我花了大约33个小时,因此我们将使用一些小技巧。 首先,我们将以128x128的图片训练模型,然后以256x256的图片训练模型,只有在最后阶段,我们才能向她展示我们华丽的400x400。
第一阶段将持续100个时代,第二和第三阶段分别为50个时代,这将使我们将培训时间减少近一半。
如实践所示,与立即以最大分辨率进行训练相比,这种方法的结果并不差,有时甚至更好。
也许有足够的理论,是时候继续实践了。
在命令提示符下,输入。
第一阶段
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 128 --load_size 180 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 4
不要忘了用您自己的值替换花括号。
我们将更详细地分析一些参数:
--batch_size {number}
此参数负责每个周期处理的图像数量,对速度有积极影响,对模型的贪食性有不利影响。
在每个阶段,选择最大可能的--batch_size,它不会由于缺少GPU内存而导致错误。
-- dataroot {dataset root folder}
-包含我们数据集的文件夹。 如上一篇文章中所述,其中应该是文件夹trainA,trainB,testA,testB。
--name {model name}
-您的项目名称。 它可以是任意的,但我建议在名称中包括模型架构,最大分辨率和数据集的名称。
例如:“ resnet9_128to400_comics8”
因此,您可以区分具有各种参数和数据的实验。
训练的第一阶段可以在第100个时代停止。
您可以从浏览器中观察进度:
localhost :8097 /
(或另一个在控制台中可见的链接)
第二阶段
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 256 --load_size 290 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 2 --epoch 100 --epoch_count 0 --continue_train
重要的是要指出我们在第一阶段完成研究的时代。
“ --Epoch 100”表示我们将从第100个时代的检查点加载模型
“ --Epoch_count 0”表示我们将以最大的学习速度从头开始训练。
训练的第二阶段可以在50年代停止。
第三阶段
python train.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --crop_size 400 --load_size 430 --init_type kaiming --netG resnet_9blocks --no_dropout --batch_size 1 --epoch 50 --epoch_count 0 --continue_train
训练的第三阶段可以在50年代停止,但这只是一个问题。 您可以完成最后的操作,然后选择所需的中间结果。 重要的是要记住,第200个时代的结果可能要比第150个时代差。
现在出去看看你做了什么
在训练期间,模型和中间结果将保存在一个文件夹中
/ pytorch-CycleGAN-and-pix2pix /检查点/ {型号名称}
要测试模型,只需输入命令行:
python test.py --dataroot {dataset root folder} --name {model name} --model cycle_gan --netG resnet_9blocks --crop_size 512 --load_size 580 --epoch {epoch name}
您可以在任何检查点的测试数据集上看到结果,只需将其指定为{epoch name}。 如果未指定{epoch name},将采用最后一个检查点。
结果将保存在文件夹中:
/pytorch-CycleGAN-and-pix2pix/results/{model name}/test_{epoch name}
为了不混淆哪个数据集上的哪个模型给出了什么结果,
开始写一本小日记。 记录基线数据和学习成果。
例如,命令行和您到达的时代。 此数据足以保存训练参数和我们训练所依据的数据集。
毕竟,科学实验和鬼混之间有什么区别? 事实已记录在案!
今天就这些! 在下一篇文章中,我们将学习如何导出完成的模型并将其托管在云中。
不要害怕尝试。 请务必尝试几个不同的数据集,比较结果并在评论中分享!
待会见!
⇨下一部分