使用style-transfer轉移照片藝術風格

使用style-transfer轉移照片藝術風格

來自專欄 Python學習之路5 人贊了文章

最近幾天學習了一下如何使用 Github 上的項目「style-transfer」(github.com/fzliu/style-)來轉移照片的藝術風格。用這篇文章記錄一下操作過程,即如何配置運行環境、如何使用「style-transfer」完成操作。

一、style-transfer

Github 中有一個照片風格演算法的 Python 實現,就是上述的這個項目,這個演算法發表在「A Neural Algorithm of Artistic Style」(arxiv.org/abs/1508.0657)中。先貼一下項目的 README 的 Introduction 部分:

Introduction

This repository contains a pyCaffe-based implementation of "A Neural Algorithm of Artistic Style" by L. Gatys, A. Ecker, and M. Bethge, which presents a method for transferring the artistic style of one input image onto another. You can read the paper here: arxiv.org/abs/1508.0657.

Neural net operations are handled by Caffe, while loss minimization and other miscellaneous matrix operations are performed using numpy and scipy. L-BFGS is used for minimization.

這個程序可以將一張照片的藝術風格轉移到另一張照片中,我要做的也就是經典的「油畫風格轉移」,即將梵高的《星夜》作為輸入圖片,由此讓其他圖片獲得油畫風格。

先了解程序的依賴,有

  • Python >= 2.7
  • CUDA >=6.5 (版本越高越好)
  • Caffe

關於 CUDA(Compute Unified Device Architecture,統一計算架構),NVIDIA 開發的可以允許程序使用 NVIDIA 的 GPU 進行計算的技術。它可以讓程序使用 GPU 進行計算,從而加快程序的運行速度。Caffe(Convolutional Architecture for Fast Feature Embedding) 是一個深度學習框架,Caffe 的 GPU 模式可以使用 CUDA 來進行計算。

另外,除了這三個需要安裝的軟體,還需要安裝這三個軟體所依賴的軟體或者它們的擴展。它們分別是:

  • OpenCV(開源計算機視覺庫)
  • vcForPython27(用於編譯 Python 擴展的專用編譯器)

Caffe 依賴 OpenCV,vcForPython27 是用於編譯 Python 擴展的,如程序需要用到的 numPy 等,這些擴展中含有 C/C++ 源碼,需要使用編譯器來編譯。

二、配置運行環境

(1)PYTHON 2.7

首先安裝 Python 2.7,在官網下載並安裝即可。安裝完成後將環境變數「PYTHONPATH」的值設置為 Python 的安裝目錄。

(2)OPENCV

可以直接將 cv2.pyd(Python Dynamic Module)文件放入 Python 安裝目錄的 DLLs 目錄中即可,cv2.pyd 可以在這裡下載。

(3)VCFORPYTHON27

安裝編譯 Python 擴展專用的編譯器,官網下載地址點擊這裡,按照提示安裝即可。

(4)CUDA

從官方下載後按照提示安裝即可。

(5)CAFFE

由於我是使用的是 Windows 10 系統,所以只記錄如何在 Windows 平台安裝 Caffe 了。Caffe 的 Windows 版本託管在 Github 上(github.com/BVLC/caffe/t),從 Github 項目的 README 說明中可以下載到已經編譯好的可執行文件。將文件解壓,並在「style-transfer」的 style.py 文件中的 import sys 語句下方添加這兩句將 Caffe 的所在目錄添加進 Python 搜索的路徑中。

sys.path.append("/path/to/caffe/python")sys.path.append("/path/to/caffe/python/caffe")

可以打開 Python 命令行輸入 import sys 和上述兩個語句後輸入 import caffe 測試是否能夠正常導入。

(6)安裝 CAFFE 和 STYLE-TRANSFER 的依賴

打開命令行,分別進入 Caffe 和 style-transfer 所在的目錄,使用如下命令編譯安裝 Caffe 的依賴。

python -m pip install -r requirement.txt

在我安裝過程中出現了兩個錯誤,一個是編譯時提示找不到「stdint.h」,我在網上找到了這個文件並將它放在 vcForPython27 安裝目錄的 include 目錄中就可以正常編譯了,這個文件可以在這裡找到。

第二個錯誤是在安裝 Caffe 的依賴之一—— leveldb 的時候提示「Don』t know how to compile leveldb on Windows. 」。為了解決這個問題,我將一份編譯好的 leveldb.pyd 文件直接放在了 Python 安裝目錄的 Libsite-packages 目錄中,並將 leveldb 從 Caffe 的 requirement.txt 文件中刪去,在完成剩餘的依賴安裝。現在這個 leveldb.pyd 文件可以在這裡找到。

三、運行 style-transfer

運行環境配置完成之後就可以運行 style-transfer 來轉移照片藝術風格了。先下載訓練好的模型(caffemodel 文件),運行下面的命令來下載,要先安裝有 bash 和 curl。

bash scripts/download_models.sh <model_name>

其中 <model_name> 是模型的名字。下載好模型後,運行以下命令來使用<model-name>模型將<style-image>圖片的藝術風格轉移到<content-image>指定的圖片中,這個過程將使用 GPU 0(也就是設備的第一個GPU)來計算。

python style.py -s <style-image> -c <content-image> -m <model-name> -g 0

運行結果將會輸出到程序運行結束後的提示路徑中。

附上我自己的運行結果:

風格圖片(style-image)梵高的《星夜》

風格圖片(style-image)梵高的《星夜》

內容圖片(content-image)《Twilight Epiphany》

內容圖片(content-image)《Twilight Epiphany》

輸出圖片(output-image)《星夜》風格的《Twilight Epiphany》

輸出圖片(output-image)《星夜》風格的《Twilight Epiphany》

以上。原文發布在我的個人網站(https://maphical.cn)。


推薦閱讀:

DensePose開源了,人體姿態大規模識別也很高效 | Facebook·CVPR 2018
神秘Demo首秀,冠軍Oral論文,Momenta還有這些亮點不容錯過!丨 CVPR 2018
阿里獲全球知名計算機視覺大賽第一 幫農場打造「實時防蟲牆」
詳解殘差網路

TAG:計算機視覺 | 藝術風格 | Python |