增强型超分辨率生成对抗网络 (ESRGAN) 是 GAN 模型的一种。GAN 模型的主要思想是准备两个一起玩游戏的神经网络。玩家是生成器和鉴别器。第一个是生成数据,第二个必须检查照片是真实的还是假的。
第一步,生成器创建一个新图像。然后鉴别器验证生成的照片是否真实。此时,GAN 计算了两个损失,用于生成器和鉴别器。生成器了解他的图像有多好,鉴别器了解他的验证有多好。
ESRGAN 是具有 vgg19 权重的预训练模型。不要重新发明轮子。(艺术家 DALL-E)
如何为您的目的准备 ESRGAN
首先,您必须将数据集上传到 Google 云端硬盘。在本教程中,我将使用来自 Kaggle 的名为 CalebA 的数据集。该数据集包含超过 20 万张名人面部图像。分辨率为 218×178,具有 3 个通道。
如果你想使用相同的数据集,我建议只上传 10000 张图像。
不过,您可以使用任何您想要的东西!
笔记本
ESRGAN 需要显存容量大的 GPU,所以在教程中,我使用了 Google Colab。您可以在其中更改运行时类型,单击运行时并在硬件加速器中选择GPU。
资料库
现在我们需要使用已实施的 ESRGAN 克隆存储库
!git clone https://github.com/eriklindernoren/PyTorch-GAN%cd PyTorch-GAN/
并安装要求。
!sudo pip3 install -r requirements.txt%cd implementations/esrgan/
加载数据中
然后,我们可以通过命令将 Google Drive 与 Google Colab 连接起来:
from google.colab import drivedrive.mount('/content/drive')
我使用 patool lib 将文件从我的 rar 提取到 Google Colab。
!pip install patoolimport patoolibpatoolib.extract_archive("/content/drive/MyDrive/name_of_your_file.rar", outdir="/content/PyTorch-GAN/data")
重要的 outdir
必须"/content/PyTorch-GAN/data"
测试数据集
一个好的做法是拥有一个测试数据集。数据未用于训练模型。要创建测试集,我们可以将一些数据传输data/name_of_your_folder
到data/test
文件夹。
首先我们必须创建一个新文件夹
!mkdir -p /content/PyTorch-GAN/data/test
之后,我们将一些图像移动到test
文件夹中。
import osfrom glob import globpaths = glob("/content/PyTorch-GAN/data/name_of_your_folder/*")samples = 5 # count of photos to movefor no, path in enumerate(paths[:samples]): os.replace(path, f"/content/PyTorch-GAN/data/test/{no}.jpg")
如果上传的图片数量太大。您可以使用:
import osfrom glob import globpaths = glob("/content/PyTorch-GAN/data/name_of_your_folder/*")samples = 1000 # count of photos to leftfor no, path in enumerate(paths): if no > samples: os.remove(path)
训练
让我们训练神经网络吧!
为了训练 ESRGAN 模型,我们必须编写一个带参数的命令:
!python3 esrgan.py --dataset_name 10k --n_epochs 20 --checkpoint_interval 250
可用参数:
--dataset_name
您的文件夹名称/content/PyTorch-GAN/data
--n_epochs
纪元数(默认 200)
--hr_height
输出高度(默认 256)
--hr_width
输出宽度(默认 256)
--channesl
输入通道(默认 3)
--checkpoint_interval
如果你有一个小数据集,我建议将它设置为 250。(默认 5000)
您可以在此处找到其余参数。
在文件夹中,'/content/PyTorch-GAN/implementations/esrgan/images/training
您可以找到训练过程中保存的图像。
测试
为了测试我们的模型,我们需要一张图片。我们使用之前传输到文件夹的图像test
。
from glob import globpaths = glob("/content/PyTorch-GAN/data/test/*")print(path)
/content/PyTorch-GAN/data/test/0.jpg/content/PyTorch-GAN/data/test/1.jpg/content/PyTorch-GAN/data/test/2.jpg/content/PyTorch-GAN/data/test/3.jpg/content/PyTorch-GAN/data/test/4.jpg
我们可以使用以下命令运行模型:
!python3 test_on_image.py --image_path /content/PyTorch-GAN/data/test/0.jpg --checkpoint_model /content/PyTorch-GAN/implementations/esrgan/saved_models/generator_1.pth
可用参数:
--image_path
你的形象名称/content/PyTorch-GAN/data/test/0.jpg
--checkpoint_model
您训练有素的生成器的名称/content/PyTorch-GAN/implementations/esrgan/saved_models/generator_X.pth
X 替换为最后训练的 epoch 的数量。
您可以在中找到生成的图像/content/PyTorch-GAN/implementations/esrgan/images/outputs/
如果你想将图像复制到你的谷歌云写
!sudo cp -r /content/PyTorch-GAN/implementations/esrgan/images/outputs/sr-name_of_image.jpg /content/drive/MyDrive/
结论
GAN 模型的想法是惊人的,两个神经网络在每个时代一起发挥更好 – 。GANUse a neural network to teach a neural network
模型有越来越多的类型,其中一种在教程 ESRGAN 中使用。这些神经网络准备好处理图像并使它们变得更好。这是一个强大的模型,但它也需要大量的计算能力。下面你可以看到 5 个 epoch 和 10000 个训练数据后的结果。它们并不理想,但是如果您将训练过程运行更多的 epoch,结果将会非常棒!去尝试一下!
我希望你喜欢我的教程!
请继续关注未来的教程!
谢谢你!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站
esrgan is released under a CC-BY-NC-ND-4.0 license.ESRGAN – https://arxiv.org/abs/1809.00219author – Xintao Wang, Ke Yu, Shixiang Wu, Jinjin Gu, Yihao Liu, Chao Dong, Chen Change Loy, Yu Qiao, and Xiaoou Tang.