You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Uzemiu 18da4e7017
commit
2 years ago
..
doc commit 2 years ago
docImg commit 2 years ago
images commit 2 years ago
models commit 2 years ago
service commit 2 years ago
static commit 2 years ago
test commit 2 years ago
.gitignore commit 2 years ago
README.md commit 2 years ago
app.py commit 2 years ago
models.py commit 2 years ago
myTransfer.py commit 2 years ago
requirements.txt commit 2 years ago
transfer.py commit 2 years ago
utils.py commit 2 years ago

README.md

dipfa

说明

本项目使用flask作为后端采用网页的形式进行展示交互

环境

python3.7+

开始

pip install -r requirements.txt
python app.py # 默认在 127.0.0.1:5000

如果打算使用 GPU由于 cuda 版本不同pytorch 和 torchvision 需要自行下载,建议从以下网站找到对应版本下载 whl 文件安装
https://download.pytorch.org/whl/torch/
https://download.pytorch.org/whl/torchvision/

import torch
torch.cuda.is_available() # 返回 True 才能使用 GPU

如果 GPU 显存不够,可以直接修改 myTransfer.py 和 models.py设置 device = 'cpu'

风格迁移说明

models下包含风格迁移的模型文件下载地址,需运行 models.bat 和 myModels.bat 下载
其中models.bat 下载固定风格任意内容的模型myModels.bat 下载任意风格任意内容的模型。
任意风格任意内容迁移的代码、研究与报告见项目 StyleTransfer。

- models
  - COCO2014_1000
    - *.png
  - metanet_base32_style300000.0_tv1e-06_tagnohvd.pth
  - metanet_base32_style300000.0_tv1e-06_tagnohvd_transform_net.pth
  - candy.t7
  - feathers.t7
  - *.t7

myModels.bat 受限于服务器带宽,下载所有文件需要约 30 min。
为了减少下载时间:

  1. 如果本地已经有完整的 COCO2014可以运行 genCOCO2014_1000.py 脚本生成数据集
    如果没有,可以运行 getCOCO2014_1000.bat 下载,
    也可以从这里下载,解压并运行 genCOCO2014_1000.py 脚本
    需要将 genCOCO2014_1000.py 的这行改成自己数据集的路径
src = "../../COCO2014/train2014"
  1. 目前已经将 vgg19 改成了 pretrained=True通过 torchvision 下载,所以项目初次运行会先进行下载。
    如果下载不了的话可以找其他的源下载,并修改代码,
    或者运行 getVgg19.bat 从服务器获取,享受极(慢)速(度)(约 20 min)
vgg19 = models.vgg19(pretrained=False)
vgg19.load_state_dict(torch.load(${模型路径}))

style transfer 如图,左侧为内容图,右侧为风格图。对于一张风格图,第一次运行会花费额外的时间(取决于设备)。 之后风格图不变,更换内容图,进行迁移需要约 5-8s。

后端文档说明

采用 sphinx 自动生成
起始页面: ./doc/_build/html/index.html

测试说明

./test 下是对每一个 service 的测试,其中 main.py 运行全部的测试showImg 为 True 会显示图片,否则不会。
批量测试前建议把这两个函数注释掉,后面单独测试,否则有概率爆内存。

# noiseBlur_test.py
def test_harmonic_blur():
    res = noiseBlurService.harmonic_blur([blur], {'ksize': 3})
    display('harmonic_blur', res)

def test_low_pass_filter():
    res = noiseBlurService.low_pass_filter([blur], {'threshold2': 200})
    display('low_pass', res)