• <sub id="pqc61"><p id="pqc61"></p></sub><sub id="pqc61"></sub>
    在线精品视频一区二区,亚洲中文字幕无码一久久区,正在播放肥臀熟妇在线视频,国内精品视频一区二区三区八戒 ,国产毛片三区二区一区,国产精品一区中文字幕,丰满少妇被猛烈进出69影院,国产成人无码
    您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    人工智能 正文
    發私信給何之源
    發送

    0

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    本文作者: 何之源 2017-01-13 10:58
    導語:風格遷移(Style Transfer)是深度學習眾多應用中非常有趣的一種。

    雷鋒網注:本文作者何之源,復旦大學計算機科學碩士在讀,研究人工智能計算機視覺方向。本文由雷鋒網編輯整理自作者知乎專欄,獲授權發布。

    一、風格遷移簡介

    風格遷移(Style Transfer)是深度學習眾多應用中非常有趣的一種,如圖,我們可以使用這種方法把一張圖片的風格“遷移”到另一張圖片上:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    然而,原始的風格遷移(點擊查看論文)的速度是非常慢的。在GPU上,生成一張圖片都需要10分鐘左右,而如果只使用CPU而不使用GPU運行程序,甚至需要幾個小時。這個時間還會隨著圖片尺寸的增大而迅速增大。

    這其中的原因在于,在原始的風格遷移過程中,把生成圖片的過程當做一個“訓練”的過程。每生成一張圖片,都相當于要訓練一次模型,這中間可能會迭代幾百幾千次。如果你了解過一點機器學習的知識,就會知道,從頭訓練一個模型要比執行一個已經訓練好的模型要費時太多。而這也正是原始的風格遷移速度緩慢的原因。

    二、快速風格遷移簡介

    那有沒有一種方法,可以不把生成圖片當做一個“訓練”的過程,而當成一個“執行”的過程呢?答案是肯定的。可看快速風格遷移(fast neural style transfer):Perceptual Losses for Real-Time Style Transfer and Super-Resolution

    快速風格遷移的網絡結構包含兩個部分。一個是“生成網絡”(原文中為Transformation Network),一個是“損失網絡”(Loss Network)。生成網絡接收一個圖片當做輸入,然后輸出也是一張圖片(即風格遷移后的結果)。如下圖,左側是生成網絡,右側為損失網絡:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    訓練階段:首先選定一張風格圖片。訓練的目標是讓生成網絡可以有效生成圖片。目標由損失網絡定義。

    執行階段:給定一張圖片,將其輸入生成網絡,輸出這張圖片風格遷移后的結果。

    我們可以發現,在模型的“執行”階段我們就可以完成風格圖片的生成。因此生成一張圖片的速度非常塊,在GPU上一般小于1秒,在CPU上運行也只需要幾秒的時間。

    三、快速風格遷移的Tensorflow實現

    話不多說,直接上我的代碼的Github地址(點擊可看)

    還有變換效果如下。

    原始圖片:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    風格遷移后的圖片:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    以上圖片在GPU(Titan Black)下生成約需要0.8s,CPU(i7-6850K)下生成用時約2.9s。

    關于快速風格遷移,其實之前在Github上已經有了Tensorflow的兩個實現:

    但是第一個項目只提供了幾個訓練好的模型,沒有提供訓練的代碼,也沒有提供具體的網絡結構。所以實際用處不大。

    而第二個模型做了完整的實現,可以進行模型的訓練,但是訓練出來的效果不是很好,在作者自己的博客中,給出了一個范例,可以看到生成的圖片有很多噪聲點:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    我的項目就是在OlavHN/fast-neural-style的基礎上做了很多修改和調整。

    四、一些實現細節

    1、與Tensorflow Slim結合

    在原來的實現中,作者使用了VGG19模型當做損失網絡。而在原始的論文中,使用的是VGG16。為了保持一致性,我使用了Tensorflow Slim對損失網絡重新進行了包裝。

    Slim是Tensorflow的一個擴展庫,提供了很多與圖像分類有關的函數,已經很多已經訓練好的模型(如VGG、Inception系列以及ResNet系列)。

    下圖是Slim支持的模型:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    使用Slim替換掉原先的網絡之后,在損失函數中,我們不僅可以使用VGG16,也可以方便地使用VGG19、ResNet等其他網絡結構。具體的實現請參考源碼。

    2、改進轉置卷積的兩個Trick

    原先我們需要使用網絡生成圖像的時候,一般都是采用轉置卷積直接對圖像進行上采樣。

    這篇文章指出了轉置卷積的一些問題,認為轉置卷積由于不合理的重合,使得生成的圖片總是有“棋盤狀的噪聲點”,它提出使用先將圖片放大,再做卷積的方式來代替轉置卷積做上采樣,可以提高生成圖片的質量,下圖為兩種方法的對比:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    對應的Tensorflow的實現:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    以上為第一個Trick。

    第二個Trick是文章 Instance Normalization: The Missing Ingredient for Fast Stylization 中提到的,用 Instance Normalization來代替通常的Batch Normalization,可以改善風格遷移的質量。

    3、注意使用Optimizer和Saver

    這是關于Tensorflow實現的一個小細節。

    在Tensorflow中,Optimizer和Saver是默認去訓練、保存模型中的所有變量的。但在這個項目中,整個網絡分為生成網絡和損失網絡兩部分。我們的目標是訓練好生成網絡,因此只需要去訓練、保存生成網絡中的變量。在構造Optimizer和Saver的時候,要注意只傳入生成網絡中的變量。

    找出需要訓練的變量,傳遞給Optimizer:

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    五、總結

    總之是做了一個還算挺有趣的項目。代碼不是特別多,如果只是用訓練好的模型生成圖片的話,使用CPU也可以在幾秒內運行出結果,不需要去搭建GPU環境。建議有興趣的同學可以自己玩一下。

    關于訓練,其實也有一段比較坎(dan)坷(teng)的調參經歷,下次有時間再分享一下,今天就先寫到這兒。謝謝大家!

    雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知

    深度學習實踐:如何使用Tensorflow實現快速風格遷移?

    分享:
    相關文章

    專欄作者

    復旦大學計算機科學碩士,方向為人工智能,計算機視覺。
    當月熱門文章
    最新文章
    請填寫申請人資料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說
    主站蜘蛛池模板: 久久er99热精品一区二区| 久久www免费人成_网站| 干屄视频| 国产精品午夜爆乳美女视频| 少妇高潮大叫好爽| 国产高清精品在线播放| 亚洲精品美女一区二区| 丁香六月婷婷久久综合| 敦煌市| 蜜桃av无码免费看永久| 一级做a爰片在线播放| 中文字幕人乱码中文| 宾馆人妻4P互换视频| 欧美性受xxxx黑人猛交| 久久精品国产亚洲成人av| 超清AV在线播放不卡无码| 久久人体视频| 最新国产精品亚洲| 亚洲国产日韩在线视频| 国产精品无码AV在线播放| 波多野结衣网站| 波多野结av在线无码中文免费| 青草内射中出高潮| 热久久这里是精品6免费观看| 亚洲最大的成人网| 中文字幕人妻中文AV不卡专区| 国产丝袜一区二区三区在线不卡| 我被公睡做舒服爽中文字幕| 亚洲1234区| 最新午夜男女福利片视频| 99热这里只有精品综合久久| 农夫在线精品视频导航| 94人妻少妇偷人精品| 中文字幕乱偷无码av先锋蜜桃| 三级三级三级a级全黄三电影| 白丝美女办公室高潮喷水视频 | 国产日韩亚洲不卡高清在线观看| 欧美黑人XXXX性高清版| 小鸡入水蜜桃免费观看电视剧| 国模精品视频一区二区三区| 国产精品自在拍99|