风格迁移模型压缩 第三期

2019-01-23  本文已影响0人  nonoka

1 安装bazel

        Bazel是google推出的一款工程编译工具,并且已经将其开源。

        Bazel可以快速地构建可靠的代码,谷歌的大多数软件都是由它来构建,因此,在谷歌的开发环境里,它主要负责处理代码构建相关问题:大规模数据构建问题,共享代码库问题,从源代码构建的软件的相关问题。

        Bazel支持多种语言并且跨平台,还支持自动化测试和部署、具有再现性(Reproducibility)和规模化等特征。Bazel在谷歌大规模软件开发实践能力方面起着至关重要的作用。简单来说,Bazel类似于make。

1.1 Ubuntu18.04

未安装JDK8

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

已安装JDK8

echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install bazel
sudo apt-get upgrade bazel

1.2 CentOS

  1. Download the corresponding .repo file from Fedora COPR and copy it to /etc/yum.repos.d/.
  2. Run the following command:
yum install bazel

2 模型导出

        模型导出使用export.py文件,只需修改其中模型的输出路径,并且根据自己的文件位置传入正确的参数即可,导出成功后,在设定的输出文件夹中可以得到pb格式的模型文件,其大小与原来ckpt.data文件相同。

python export.py --model_file models/your_model.ckpt --model_name your_model_name

3 模型量化

git clone https://github.com/tensorflow/tensorflow
cd tensorflow
sudo bazel build tensorflow/tools/graph_transforms:transform_graph 
sudo bazel-bin/tensorflow/tools/graph_transforms/transform_graph --in_graph=/your/.pb/file  --outputs="output_node_name"  --out_graph=/the/quantized/.pb/file  --transforms='quantize_weights' 

4 模型调优

TotalVariation

Total Variation Regularization. To encourage spatial smoothness in the output image yy, we follow prior work on feature inversion [6,20] and super- resolution [48,49] and make use of total variation regularizer ℓTV(y)ℓTV(y).

        在读杨培文的博文《风格迁移三部曲》时发现了其提到了一个TV Loss,说是为了平滑图像。它的计算方法很简单:

\Large{V_\text{aniso}(y)=\sum_{i,j}|y_{i+1,j}-y_{i,j}|+|y_{i,j+1}-y_{i,j}|}

        将图像水平和垂直平移一个像素,与原图相减,然后计算绝对值的和,就是Total Variation。本来是想自己实现一个tv_loss,然后改进现有的风格迁移算法,但在现有代码中搜索时发现,原作者已经实现好了tv_loss,只是在yml的配置文件中,给tv_loss设置的权重为0,即没有使用这项损失。由于不知道tv_loss该设为多少,打算通过多次实验试出最佳值。

上一篇下一篇

猜你喜欢

热点阅读