看了一篇李飞飞组的论文 Perceptual Losses for Real-Time Style Transfer and Super-Resolution。
论文地址为:https://arxiv.org/pdf/1603.08155.pdf))
想去找找代码复现一下。
原文没有提供代码,就只有找找别人按照论文细节实现的代码。不过但是论文是2016年的,距离现在2023年已经很久了,所以找到的一些别人复现的代码的pytorch版本都比较老,难以使用。
不过还好找到了这个代码
https://github.com/pytorch/examples/blob/main/fast_neural_style/README.md
所以照着里面的指引可以很快利用其预训练模型去生成风格化的原图。
配环境也相对比较简单,选择适合自己CUDA版本的尽量新一点的pytorch即可。
conda create -n style python=3.10 -y
conda activate style
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
但是想要自己训练某个风格的预训练模型的时候遇到了一点问题。
主要是readme里面写着使用 COCO 2014 Training作为训练集,于是我下载了该数据集,放在项目的根目录下,文件夹名字为train2014,但是调用的时候却出现了一个问题,报错大致为:
FileNotFoundError: Couldn't find any class folder in ./train2014。
主要是因为用了下面这句代码来加载训练集,
train_dataset = datasets.ImageFolder(args.dataset, transform)
但是ImageFolder这个类需要在数据集的大文件夹下再创建有子类文件夹。
一开始还以为需要去将这13G的图片按照类型放入各自的子文件夹中,比如cat/dog之类的,还找了一下有没有相应的,但是后面一想,这也不是分类问题呀,在训练过程中并不需要类别的ground truth,所以就继续去GitHub上寻找与该问题相关的issue,最后找到了:
https://github.com/pytorch/examples/issues/1039
这里面显示这其实是一个小bug,解决办法是在train2014文件夹下,将所有图片都放进一个子文件夹内,我将该子文件夹命名为no_label,然后--dataset还是使用相对路径 ./train2014 即可。