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.

79 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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/
```python
import torch
torch.cuda.is_available() # 返回 True 才能使用 GPU
```
如果 GPU 显存不够,可以直接修改 myTransfer.py 和 models.py设置 device = 'cpu'
### 风格迁移说明
<code>models</code>下包含风格迁移的模型文件下载地址,需运行 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 下载, \
也可以从[这里](http://images.cocodataset.org/zips/train2014.zip)下载,解压并运行 genCOCO2014_1000.py 脚本 \
需要将 genCOCO2014_1000.py 的这行改成自己数据集的路径
```python
src = "../../COCO2014/train2014"
```
2. 目前已经将 vgg19 改成了 pretrained=True通过 torchvision 下载,所以项目初次运行会先进行下载。 \
如果下载不了的话可以找其他的源下载,并修改代码,\
或者运行 getVgg19.bat 从服务器获取,享受极(慢)速(度)(约 20 min)
```python
vgg19 = models.vgg19(pretrained=False)
vgg19.load_state_dict(torch.load(${模型路径}))
```
![style transfer](docImg/style_transfer.png)
如图,左侧为内容图,右侧为风格图。对于一张风格图,第一次运行会花费额外的时间(取决于设备)。
之后风格图不变,更换内容图,进行迁移需要约 5-8s。
### 后端文档说明
采用 sphinx 自动生成 \
起始页面: ./doc/_build/html/index.html
### 测试说明
./test 下是对每一个 service 的测试,其中 main.py 运行全部的测试showImg 为 True 会显示图片,否则不会。\
批量测试前建议把这两个函数注释掉,后面单独测试,否则有概率爆内存。
```python
# 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)
```