[download_code]
准备
此代码基于pytorch。它已经在Ubuntu 14.04 LTS上进行了测试。
依赖关系:
CUDA后端:
下载VGG-19:
sh models/download_models.sh
编译cuda_utils.cu
(makefile
为您的机器调整PREFIX
以及NVCC_PREFIX
):
make clean && make
用法
快速开始
使用提供的脚本生成所有(examples/
)结果,只需在Matlab或Octave运行
run('gen_laplacian/gen_laplacian.m')
然后在Python中:
python gen_all.py
最终输出在examples/final_results/
。
基本用法
- 给定具有语义分割掩码的输入和样式图像,以下文件名格式分别将它们放入
examples/
:examples/input/in<id>.png
,examples/style/tar<id>.png
和examples/segmentation/in<id>.png
,examples/segmentation/tar<id>.png
; - 使用
gen_laplacian/gen_laplacian.m
Matlab 计算消光拉普拉斯矩阵。输出矩阵将具有以下文件名形式:gen_laplacian/Input_Laplacian_3x3_1e-7_CSR<id>.mat
;
注意:请确保内容图像分辨率与Matlab中的Matting Laplacian计算和Torch中的样式传输一致,否则结果将不正确。
- 运行以下脚本以生成分段中间结果:
th neuralstyle_seg.lua -content_image <input> -style_image <style> -content_seg <inputMask> -style_seg <styleMask> -index <id> -serial <intermediate_folder>
- 运行以下脚本以生成最终结果:
th deepmatting_seg.lua -content_image <input> -style_image <style> -content_seg <inputMask> -style_seg <styleMask> -index <id> -init_image <intermediate_folder/out<id>_t_1000.png> -serial <final_folder> -f_radius 15 -f_edge 0.01
可以传递-backend cudnn
和-cudnn_autotune
两者Lua脚本(步骤3和4),以潜在地提高速度和内存使用情况。libcudnn.so
必须在你的LD_LIBRARY_PATH
。这需要cudnn.torch。
图像分割
注意:在论文中,我们使用从DilatedNet修改的自动场景分割算法生成所有比较结果。手动分割可以实现更多样化的任务,因此我们提供了掩模examples/segmentation/
。
我们使用的蒙版颜色(您可以ExtractMask
在两个*.lua
文件中添加更多颜色):
颜色变量 | RGB值 | 十六进制值 |
---|---|---|
blue |
0 0 255 |
0000ff |
green |
0 255 0 |
00ff00 |
black |
0 0 0 |
000000 |
white |
255 255 255 |
ffffff |
red |
255 0 0 |
ff0000 |
yellow |
255 255 0 |
ffff00 |
grey |
128 128 128 |
808080 |
lightblue |
0 255 255 |
00ffff |
purple |
255 0 255 |
ff00ff |
例子
以下是算法的一些结果(从左到右分别是输入,样式和输出):