日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

谷歌大脑团队任意图像风格化迁移论文详解,模型还可以跑在您本地浏览器里...

發布時間:2023/12/20 HTML 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谷歌大脑团队任意图像风格化迁移论文详解,模型还可以跑在您本地浏览器里... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像風格化遷移是一個很有意思的研究領域,它可以將一張圖的風格遷移到另外一張圖像上,由此還誕生了Prisma和Ostagram這樣的商業化產品。本文,我們將介紹谷歌大腦團隊的一篇很有影響力的論文:?Exploring the structure of?a real-time, arbitrary neural artistic stylization network,該論文提出了一種任意內容、任意風格的圖像風格化遷移算法。我們還將算法demo整合進了aizoo.com,歡迎進入網址在線體驗。

在深度學習引進圖像風格遷移之前,圖像風格化一般稱作圖像紋理合成或者圖像文理遷移。在2015年,Leon Gatys等學者開始將深度學習引入到圖像風格合成領域,從那時起,圖像風格化遷移這個名字才開始用起來。從2015年到2017年,圖像風格化遷移領域經過了火箭般的發展。其發展路線主要有以下三個階段:

  • 單內容單風格模型

  • 任意內容單風格模型

  • 任意內容、任意風格模型

  • 有意思的是,圖像風格遷移領域基本是沿著這三個階段一脈相承的發展下來的,每一代算法都有借鑒前一個階段的算法成果。真正做到了前人的成果,后人的階梯。

    雖然本文寫作與2020年2月6日,但今天我們要重點介紹的該論文是谷歌大腦團隊2017年8月發布的。我們參考Reiichiro大神于2018年開源的代碼和模型,我們很快的就將他部署到了我們的網站aizoo.com。但是我并不清楚該算法的原理和細節,為了弄明白這篇論文,我仔細閱讀了該論文以及其參考文獻中的部分經典、高被引參考論文,結合谷歌開源的代碼,我才算是真正搞懂了這篇文章。對于如果要研究圖像風格化遷移的新手,直接看懂這篇文章還是蠻困難的。所以本文將用清晰、簡潔的方式介紹這篇論文提到核心的算法。

    正如上面提到,圖像風格化遷移領域的發展是一脈相承的,該論文也使用了之前兩個階段的其他論文中的很多方法,所以,我們先對圖像風格遷移領域的發展歷程進行簡單的介紹。

    01

    單內容單風格模型

    故名思義,這種模型就是對每一張內容圖片和每一張風格圖片,都需要單獨建模,一般是對一張隨機噪聲圖,不斷的迭代優化,使生成圖的風格類似于給定的風格圖,內容卻與給定的內容圖像一致。

    Gatys等學者發表的Image Style Transfer Using Convolutional Neural Networks是圖像風格化遷移領域的開山之作。該論文主要使用預訓練的VGG網絡來提取特征,一般我們認為VGG這類圖像分類網絡,其淺層會更多的保存圖像的紋理信息,而深層更多的是圖像的語義特征。所以,如果兩張圖片內容相似,他們的高層特征的歐式距離會比較小;如果兩張圖像的紋理相似,那么它們的低階特征有相同的空間特性

    所以,多數圖像風格化模型,都會使用VGG等圖像識別模型的特征來計算紋理相似性和內容相似性,并且一般都會使用VGG等網絡的多個卷積層提取的特征來計算風格損失,并使用一個較深的卷積層提取的特征來計算內容損失。如下圖所示,對于風格圖像S、內容圖像C、生成的風格化遷移圖像X,分別輸入VGG網絡,并在如圖所示的四個卷積層的特征來計算風格損失,使用relu3_3的輸出的特征來計算內容損失。

    對于圖像風格損失,一般會將提取到的特征轉換為Gram矩陣,用Gram矩陣來表示紋理信息。Gram矩陣計算方法就是將每個卷積層輸出的特征向量(一般為WxHxC維),reshape成WHxC的矩陣,然后該二維矩陣的轉置與自身相乘,得到一個CxC的矩陣,使用這個矩陣表示該層的風格。

    則第j層的風格損失定義如下:

    總的風格損失定義如下:

    內容損失為內容圖像和生成的風格化圖像的特征之間的均方誤差,第j層內容損失定義為:

    總的內容損失如下:

    最終的損失為風格損失和內容損失的一個加權和(其中λ為內容損失的權重),而網絡的優化方向,就是最小化總的損失。

    單內容、單風格模型,很明顯不實用,因為我們總不能讓用戶每次輸入一張內容圖和風格圖,都用GPU迭代幾分鐘才給出結果吧。雖然工程上并不實用,但是該類算法提出使用VGG等預訓練模型的特征進而計算風格損失和內容損失,后面的風格化算法損失函數計算方式基本沿襲于此。

    02

    任意內容單風格模型

    這類模型是對圖像風格遷移網絡進行訓練,圖像風格遷移網絡一般是自編碼器架構(AutoEncoder),輸入任意一張內容圖,模型可以直接輸出風格化的圖片。該類算法需要對一張特定風格圖進行訓練,在推理的時候,可以對任意內容進行風格化,這類網絡的推理速度也比較快。

    但該類模型依舊有缺陷,因為對每個風格都需要建模,如果要做成產品,假設有1千個風格圖,就要訓練一千個模型,這樣存儲、調用起來仍舊不方便。

    雖然后來有學者提出了單模型多風格的模型,一個典型的論文是A Learned Representation For Artistic Style,模型結構如上圖所示,一個風格遷移模型可以存儲幾十種不同的風格,但仍舊不能做到風格隨意切換。但這篇論文提出的一個條件實例歸一化方法(conditional instance normalization),對下面要重點介紹的文章是一個非常大的啟發。

    還記得我們經常用的Batch Normalization嗎?其原理非常簡單,對于每個卷積層中每個通道的特征,我們計算其均值和標準差,然后對每個通道的每個數值減去均值,除以標準差,然后乘以一個可學習的參數γ,再加上一個可學習的偏置β。該論文提出使用這個γ和β來做作為風格圖像的特征向量,即使用這γ和β值來作為風格遷移網絡的部分BN層的γ和β值,進而控制風格遷移網絡生成符合特定風格的圖像。

    該文章提出可以存儲N個不同風格圖像的γ和β矩陣,每次生成不同風格的圖像時,只需要切換不同的風格對應的γ和β矩陣,就可以生成不同風格的風格遷移圖。

    03

    任意內容任意風格模型

    后來,有學者提出了任意圖像的風格化,其有多種不同的方法,下面我們介紹一下本文要重點介紹的論文,也就是谷歌大腦團隊提出的——Exploring the structure of a real-time, arbitrary neural artistic stylization network.

    還記得上面剛提到的條件實例歸一化方法嗎,谷歌大腦團隊提出,如果訓練一個風格預測網絡,讓它來生成每個風格圖像的特征向量(也就是要強加給風格遷移網絡的γ和β),然后輸送給圖像生成模型不就完事了嗎?只要這個風格預測網絡性能足夠強,就可以做到任意風格的圖像生成了。

    這里有一定會讓大家比較迷惑的地方,也是讓筆者一開始自己百思不得其解的地方。我們通常所見的一個模型的結果作為另一個模型的一個輸入,一般是與其他特征進行通道拼接、或者通道逐元素相加,而本篇論文,則是把一個模型的輸出,作為另外一個模型的部分BN層中的γ和β參數。這是本文一個非常特別的地方。明晰了這一點,本片文章就很好理解了。

    下面是論文的主體結構圖:

    其中風格轉換網絡是一個AutoEncoder架構的網絡,不過這個網絡只有兩個下采樣層。下表是風格轉換網絡的結構組成。

    其中每個Residual block(殘差快)由兩個卷積層和一個shortcut組成,而Upsampling(上采樣層)則是由一個最近鄰差值(2倍上采樣)和一個卷積層組成。但別忘了最重要的,每個卷積層的后面都有BN層,其中前三個卷積層是普通BN層,而后面5個殘差塊中的十個卷積層以及兩個上采樣中的兩個卷積層,還有最后一個卷積層,都是使用上文提到的條件實例歸一化的,也就是這13個歸一化層的β和γ來自于風格預測網絡。

    其中風格預測網絡是Inception V3模型,不過并不是完整的Inception V3模型,而是只使用其截止到名稱為“mixed 6e”的上半部分模型,該部分作為風格預測網絡的Backbone網絡,然后對輸出進行一個全局平均池化,再使用一個1x1的卷積層將通道數降低為100,其實這個100就可以作為一個風格圖像的特征了。

    但是,等等,不是說風格預測網絡的輸出是上述13個卷積層對應的歸一化參數β和γ嗎?是的,所以這個100個通道的卷積層,還要分別再接出來26個1x1的卷積層(分別是13個卷積層的γ和13個卷積層的β矩陣,所以一共26個卷積層),這26個1x1卷積層的通道數目,對應風格遷移網絡中相應層的通道數。26個卷積層輸出的結果才是最終送到風格轉換模型的β和γ向量。下表是風格生成網絡的結構圖,其中最后的Matrix multiply其實是1x1的卷積層,這點還是通過看源碼看到的。

    明白了網絡的完整的拓撲結構,對這篇文章就算有個清晰的理解了。對于訓練,就很容易理解了。其損失同樣是上文提到的,通過VGG網絡提取的特征來計算風格損失和內容損失,優化器優化這個總的加權損失就可以了。

    該論文在8萬張藝術畫和6千張視覺紋理圖上訓練,最后作者還驗證了,風格預測網絡,在網絡從未見過的風格圖片上,仍然具有很好的風格建模能力。這點非常類似與人臉識別模型,一個識別模型在成千上萬的人臉圖片上訓練好了,對于未見過的人臉,也需要對其進行很好的建模,而不能瞎預測。

    而一旦訓練好了風格預測模型以及風格生成模型,網絡就可以任意輸入一張內容圖片,以及一張風格圖片,網絡就可以很快的生成一張風格化的圖片了。

    其實文章介紹到這里,最難理解的地方就介紹完了,下面是關于將模型通過TensorFlow.js部署到瀏覽器里面的一些技術細節

    由于Inception v3模型比較大,Reiichiro將模型進行了蒸餾,使用Mobilenet v2替換Inception v3模型作為風格預測網絡,并將圖像風格遷移網絡中部分的卷積層替換為了深度可分離卷積層。從而降低了兩個模型的大小。


    模型名稱
    模型大小(MB)推理時間(s)
    圖像風格轉換模型Inception v336.3
    0.439
    Mobilenet v29.6
    0.047
    圖像風格生成模型標準卷積結構7.9
    2.51
    深度可分離卷積結構2.4
    0.90

    下面我們實現的操作頁面,您可以在瀏覽器輸入aizoo.com/style-transfer.html進行體驗。

    我們默認使用小的模型,在圖中右側控制欄,有個“使用大模型”可選項,您可以選擇大模型,大模型更‘鮮艷“一些。不過40多M的模型下載可能需要幾秒鐘,而且運算量也要大很多,所以相比小模型,速度會慢很多。


    ????? ?最后,說一下學習風格化算法和這篇論文的感悟。

    因為我之前并沒有深入研究過圖像風格話算法,但我為了介紹這個可以跑在瀏覽器里的算法,仔細看了這篇文章,讀了幾篇其他作者寫的綜述性介紹文章,又閱讀了幾篇該論文里面提到的部分參考文獻,最重要的,是看了源碼,才把一些很難想通的點看明白了。所以,開始一個新的研究方向,或許以下三點是入門的一個很好的點:

    1)閱讀綜述性的論文和博客,找出文中重點提到的經典論文;

    2)閱讀該方向經典的論文,以及經典論文所參考的部分高被引文獻;

    3)閱讀部分經典論文的開源代碼;

    其中,閱讀代碼可能是理解一篇論文最重要的,就像目標檢測中的SSD或者Yolo論文,如果看論文,或許有很多點是看不很明白的,只有看代碼,或者真正自己通過寫代碼實現這個算法,才能徹底搞懂它。

    最后,歡迎關注我們的公眾號AIZOO,如果您想體驗跑在您瀏覽器的圖像風格化算法,敬請訪問aizoo.com,更多好玩的人工智能算法,在里面等你哦。

    參考文獻

  • Image Style Transfer Using Convolutional Neural Networks?

  • A Learned Representation For Artistic Style

  • Neural Style Transfer: A Review

  • Porting Arbitrary Style Transfer to the Browser??

  • https://magenta.tensorflow.org/blog/2018/12/20/style-transfer-js/

  • AIZOO,打造中國最大的深度學習和人工智能社區,歡迎關注我們,也歡迎添加下方小助手的微信,邀請您加入我們的千人深度學習愛好者社區。

    歡迎掃描下方的二維碼添加小助手微信,邀請您加入我們的微信交流群。

    群里有多位清北復交、BAT、AI獨角獸大牛和眾多深度學習er在一起愉快的交流技術,有任何問題,都可以咨詢大家,歡迎你的加入哦。

    ?添加小助手微信,邀您進AIZOO技術交流群

    好文!點在看,實在不行點個贊~

    總結

    以上是生活随笔為你收集整理的谷歌大脑团队任意图像风格化迁移论文详解,模型还可以跑在您本地浏览器里...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。