康凱 360雲計算git
女主宣言github
在中央美院2019屆研究生畢業做品展中,迎來了一位特殊的畢業生,她的年齡只有1歲零10個月,可是她的畫做卻同其餘同窗的做品一道參加了展覽。這是什麼狀況呢?下來跟隨做者一塊兒去認識下夏語冰同窗,同時學習下快速成爲一名有藝術水準畫家的妙招吧。算法
PS:豐富的一線技術、多元化的表現形式,盡在「360雲計算」,點關注哦!docker
1ubuntu
一個畫家的誕生bash
在藝術領域,尤爲是繪畫中,人類經過在圖像的內容和風格之間構成複雜的相互做用,掌握了創造獨特視覺體驗的技能。到目前爲止,該過程的算法基礎仍然是未知的,而且不存在具備相似能力的工程項目。然而在其餘視覺感知的相關領域,例如物體檢測和人臉識別,由深度神經網絡爲基礎的計算機視覺模型帶來了近乎甚至超越人類的表現。爲了更快的運行起服務,咱們會使用一些預訓練好的深度神經網絡模型和一臺已經安裝配置好 NVIDIA driver, CUDA Toolkit 10 和 nvidia-docker2 的 GPU 工做站。Style Transfer 能夠幫助咱們創造出和藝術家做品相比幾乎肉眼沒法區分的藝術圖像,模型會將一幅肖像或風景畫與一副或幾幅藝術家做品圖像的風格相結合,從而獲得一張風格遷移的全新藝術做品。具體效果如上所示,以 Figure 1 莫奈的《日出·印象》爲例,Figure 3 的內容和原始圖像 Figure 2 相近,除此以外天空中還呈現了 Figure 1 中的橙黃色和草綠色,而繪畫筆法上也繼承了莫奈的筆觸,畫面的總體色調和 Figure 1 一致。能夠看出,算法對提供繪畫素材的風景圖片和提供繪畫風格素材的《日出·印象》二者的處理方式是不一樣的,對前者着重保留畫面內容,對後者則是要剔除掉其內容而保留繪畫風格。服務器
2網絡
繪畫面臨的問題框架
在咱們正式開始以前,咱們還須要完成工做環境的準備和安裝,包括運行軟件所須要的類庫,框架和軟硬件依賴。首先,由於咱們不想花費數小時甚至數週來進行訓練和測試。咱們會將圖形處理單元 GPU 與傳統 CPU 一塊兒使用,以加速咱們的深度學習算法並將等待時間縮短到幾分鐘。先簡單介紹下 nvidia-docker , nvidia-docker2.0 是一個簡單的包,它主要經過修改 docker 的配置文件來讓 docker 使用 NVIDIA Container runtime; nvidia-container-runtime 纔是真正的核心部分,它在原有的 docker 容器運行時 runc 的基礎上增長一個 prestart hook, 用於調用 libnvidia-container 庫。curl
它們之間的關係能夠經過下面這張圖關聯起來:
工具介紹完畢,如今咱們只須要安裝 Docker,nvidia-docker2 和相應的 GPU 驅動程序。其他的依賴項將包含在 Docker 鏡像中,經過編輯 Dockerfile 以完成鏡像構建,並保證啓動的不一樣容器的環境一致性。
3
準備繪畫工具
如今咱們只須要一個地方來運行咱們的項目。公司線上的全部 GPU 資源都是由幾個不一樣區域的 k8s 集羣統一管理,經過編輯 yml 配置文件來完成 Pod 正常的調度到 GPU 機器上的需求。可是開發環境我更傾向於選擇雲主機,好比私有云的 GPU 服務器,公有云 P2 AWS EC2 實例,開發環境裏的 GPU 工做站,不管哪一種實例,都能幫助咱們在幾個小時以內快速落地應用。接下來咱們須要安裝 NVIDIA 驅動程序和 nvidia-docker2, 我整理了一個安裝腳本:#!/bin/bash
# Install NVIDIA drivers 418.87sudo apt-get install --no-install-recommends -y gcc make libc-devwget -P /tmp http://cn.download.nvidia.com/tesla/418.87/NVIDIA-Linux-x86_64-418.87.00.runsudo sh /tmp/NVIDIA-Linux-x86_64-418.87.00.run --silent
# Install nvidia-docker2curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listapt update && apt install nvidia-docker2sudo pkill -SIGHUP dockerd
# Testdocker run --runtime=nvidia --rm nvidia/cuda:9.0-devel-ubuntu16.04 nvidia-smi
若是一切正常,您將得到如下輸出:
4
To Draw You Must Close Your Eyes And Sing
沒錯,這又是一句畢加索說過的話, 想要畫畫你必須學會閉眼歌唱。
終於到最後一步部署機器學習算法了,演示項目地址在這裏:
https://github.com/albarji/neural-style-docker.git
構建鏡像
docker build . -t neural-style:dev-0.0.1
開始畫圖
./scripts/fake-it.sh goldengate.jpg monat.jpg如今,您只需將生成的圖像下載下來欣賞,或者將不一樣 stage 生成的做品組裝成 GIF。Eurek!
5
References and Notes