這個是在去年微博里面非常流行的,在git_hub上的代碼是https://github.com/fzliu/style-transfer
比如這是梵高的畫
這是你自己的照片
然后你想生成這樣
怎么實現呢在基於windows的caffe上,很簡單。
1 首先在 https://github.com/fzliu/style-transfer 把代碼下載下來,另外主要這個代碼基於pycaffe的,需要將pycaffe編譯好。
最好是在電腦上裝一個python progressbar包 ,在windows cmd下輸入 pip install progressbar
2 解壓style-transfer-master文件夾,運行\scripts 下的download_models.sh 就會下載模型,
在model文件夾下會出現caffenet、vgg16、vgg19、googlenet等文件夾,但是有時候model文件夾里面還是沒有.model文件,一般來說.model文件有幾十到幾百M不等。
我們可以打開download_models.sh,按照里面的鏈接直接下載。
3 運行代碼
下面是運行代碼的格式: python style.py -s <style_image> -c <content_image> -m <model_name> -g 0
在windows下 切換到style.py 所在的目錄,輸入代碼如下
python style.py -s images/style/starry_night.jpg -c images/content/nanjing.jpg -m vgg19 -g 0
可見上面例子中,style-image對應starry_night.jpg 即風格圖像, content_image對應自己的照片nanjing.jpg, 模型選擇vgg19, g 0對應選擇默認的GPU,如果是g -1則為CPU
然后回車就能運行,得到上述結果了。
下面是運行的示意圖:
可以看到,選擇GPU、然后加載圖像和模型成功后就開始跑了,左側是顯示運行進度,已經是6%,還需要54分鍾左右,由於圖像比較大,時間比較長。
4 更改style.py 中
parser.add_argument("-l", "--length", default=1024, type=float, required=False, help="maximum image length")
def transfer_style(self, img_style, img_content, length=1024, ratio=1e5,
n_iter=512, init="-1", verbose=False, callback=None): 可以設置圖像輸出的尺寸大小,例如你自己的照片圖像大小是1024*500 ,更改輸出length=1024,可以獲得與原始圖像一致的尺寸。
不更改的話,程序中默認輸出是512寬度,和輸入原始圖像一致的寬長比。
我自己的實驗結果
原始圖像:
輸出的效果: