介绍
这个项目用Pytorch来实现了论文"Perceptual Losses for Real-Time Style Transfer and Super-Resolution"。 同时, 我们对原论文中的一些结构进行了修改,让它可以在安卓设备上实时的运行。(我们在骁龙845上进行了测试,当输入图片大小为256x256时,运行所花费的时间为30ms)
image
原图 论文结果 我们修改后模型的结果
video
原视频 风格视频(运行在骁龙845)
#####download pretrain model
风格 | 正常的模型 | 修改后的模型 |
---|---|---|
udnie | google drive | google drive |
之后我们会提供更多的模型。
模型结构
需要的环境
- Python3
- PIL
- Pytorch
- torchvision
- cv2 (opencv-python)
- onnxruntime (可选)
项目使用指南 (。•ᴗ-)_
-
准备工作
-
下载本项目,并检查是否满足相应的环境。
-
下载训练数据集并把它放到data文件夹下。 与论文里不同, 我们选择了 Pascal VOC 2012 来代替原论文中的 Microsoft COCO 。 因为Microsoft COCO 太大了, 需要花费更多的时间去下载 。
如果你使用的是 Pascal VOC 2012, 当你解压该数据集后, 你会得到文件夹 VOCdevkit, 把 VOCdevkit/VOC2012/JPEGImages 下的所有图片放到本项目的 data 文件夹下即可。
如果你不想使用 data 文件夹, 你可以在训练时使用 train.py 的参数 dataset 去指明训练数据集的位置。 如果对于这种用法你还不是太清楚, 我们会在后面的部分做更多的介绍。
-
下载与训练好的 VGG16 并把它放到 pretrain_models 文件夹下。
-
-
如何训练
-
其他
-
当你训练完之后, 你可以用 checkout.py 去测试你的训练结果。 使用方法和 train.py 类似。
python checkout.py --model_path=./models/style-transfer/xxx.pth
./models/style-transfer/xxx.pth 是你训练得到的模型的路径
如果你想了解 checkout.py 的更多参数信息, 你可以在代码中找到。
-
如果你想把它部署到移动设备上, 你可以用 pytorch2onnx.py 把模型文件转化为 onnx 形式, 再转化为可以在移动端运行的格式。 你可以用 checkout.py 去验证转换得到的 onnx 文件是否正确。
我使用 ncnn 在安卓设备上进行部署。 如果你也想使用ncnn, 你可以用这个工具, 把onnx文件转化为ncnn可以使用的格式。
在安卓端我还有一些问题没有解决, 当解决了这些问题之后, 将会提供安卓相关的代码。
-