• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于卷積神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移在iOS上的應(yīng)用

      2019-12-05 03:24:20羅可昕
      關(guān)鍵詞:損失神經(jīng)網(wǎng)絡(luò)圖像

      羅可昕,邢 晨

      (浙江水利水電學(xué)院 信息與藝術(shù)工程學(xué)院,浙江 杭州 310018)

      0 引 言

      圖像風(fēng)格遷移,就是把圖像A的風(fēng)格遷移到圖像B中去,得到新的圖像C。其中C中既包含圖像B的內(nèi)容,也包含圖像A的風(fēng)格。這項技術(shù),已經(jīng)運用在我們的日常生活中,像prisma,style2paints,neuralstyler,ostagram等照片編輯軟件就是運用神經(jīng)網(wǎng)絡(luò)和風(fēng)格遷移,把普通的照片變成其他藝術(shù)風(fēng)格,從而實現(xiàn)藝術(shù)價值的提升。

      在人工智能深度學(xué)習(xí)實現(xiàn)之前,人們通常利用圖片紋理手動建模來實行風(fēng)格遷移,這樣合成的圖片往往要根據(jù)不用的場景而改變,且人工建模成本巨大。這種方法在提取圖像底層特征時,因只能提取顏色、紋理和形狀這幾種特征組合,所以最終合成的圖片效果十分粗糙,不能很好的滿足人們更高的藝術(shù)需求,同時該方法合成效率較低[1]。隨著深度學(xué)習(xí)的興起,GATYS等人提出了利用VGG卷積神經(jīng)網(wǎng)絡(luò)進行風(fēng)格遷移[2]。該方法的核心是利用卷積層提取內(nèi)容圖像和風(fēng)格圖像的中間特征值,借助梯度下降算法,利用這些特征值來合成新風(fēng)格的圖像[3]。

      如圖1所示,圖1(a)的內(nèi)容圖像是埃菲爾鐵塔,圖1(b)的風(fēng)格圖像是蒙克的名作《吶喊》,圖1(c)是由計算機生成的一張新的圖像,既保留了埃菲爾鐵塔建筑的形狀信息,也兼具《吶喊》風(fēng)格的圖片。本文基于Johnson[4]等人提出的快速圖像風(fēng)格遷移方法實現(xiàn)了基于VGG網(wǎng)絡(luò)的圖像風(fēng)格遷移,再運用Apple公司提供的轉(zhuǎn)換工具coremltools導(dǎo)出成iOS支持的coreML格式,幫助用戶可以在移動端短時間內(nèi)實現(xiàn)圖片風(fēng)格遷移合成的目的。

      圖1 圖像風(fēng)格遷移展示

      1 圖片風(fēng)格轉(zhuǎn)換算法

      1.1 基于神經(jīng)網(wǎng)絡(luò)的風(fēng)格遷移

      為了計算不同過濾器通道之間的相關(guān)性,通過計算兩個過濾器激活向量之間的點積,得到gram矩陣,公式為:

      Gl∈RNl×Nl

      總風(fēng)格損失為:

      代價函數(shù)公式可以表示如下:

      1.2 快速遷移風(fēng)格

      前文提到的算法每當(dāng)生成一張圖片時都需要進行一次風(fēng)格遷移訓(xùn)練,整個過程比較耗時。2016年,斯坦福大學(xué)的JOHNSON等人提出了快速風(fēng)格轉(zhuǎn)移算法,只需要訓(xùn)練一個網(wǎng)絡(luò)模型就可以對任意一張圖片進行風(fēng)格遷移??焖俎D(zhuǎn)移算法包含兩個網(wǎng)絡(luò)。一個為圖片轉(zhuǎn)換網(wǎng)絡(luò)(image transform network),一個為損失網(wǎng)絡(luò)(loss network)[4]。圖片轉(zhuǎn)換網(wǎng)絡(luò)是一個多層卷積神經(jīng)網(wǎng)絡(luò),它將一張輸入的原始圖片轉(zhuǎn)換成為一張生成圖片。損失計算網(wǎng)絡(luò)是一個VGG-16網(wǎng)絡(luò),用于計算圖片轉(zhuǎn)換網(wǎng)絡(luò)生成圖片對于輸入的風(fēng)格圖和原圖之間的損失大小。該算法在訓(xùn)練階段利用大量內(nèi)容圖片進行訓(xùn)練以得到某個風(fēng)格特定模型,在測試階段將將內(nèi)容圖片經(jīng)過模型就能實時得到一張經(jīng)過該風(fēng)格渲染之后的合成圖片[7]。

      如圖2所示,圖像S為風(fēng)格圖像,C為內(nèi)容圖像。圖片X為需要進行風(fēng)格遷移的圖像,將其丟入網(wǎng)絡(luò)F進行風(fēng)格遷移。K表示風(fēng)格遷移后的圖片,即風(fēng)格遷移的結(jié)果圖。右側(cè)是一個已被訓(xùn)練好的VGG-16網(wǎng)絡(luò),它能夠很好地提取輸入圖像的內(nèi)容特征和風(fēng)格特征,當(dāng)S、C以及K被輸入后,該網(wǎng)絡(luò)將提取它們的特征用于計算左側(cè)網(wǎng)絡(luò)對X進行風(fēng)格遷移后的損失[8]。

      圖2 快速風(fēng)格遷移網(wǎng)絡(luò)模型

      基于同一風(fēng)格,如果運用GATYS的模型進行圖像風(fēng)格遷移,每生成一張圖片,就相當(dāng)于要訓(xùn)練一次模型,這中間可能會迭代幾百幾千次,會造成圖像制作成本和效率上的不足。而運用JOHNSON的網(wǎng)絡(luò)技術(shù)模型,在進行圖片風(fēng)格轉(zhuǎn)換時,相對GATYS的模型,生成圖的速度快上三個數(shù)量級。原因在于:快速風(fēng)格遷移又重新訓(xùn)練了一個神經(jīng)網(wǎng)絡(luò),如圖2風(fēng)格遷移網(wǎng)絡(luò)F,這個網(wǎng)絡(luò)是一個深度殘差網(wǎng)絡(luò),每當(dāng)向該網(wǎng)絡(luò)輸入內(nèi)容圖像訓(xùn)練集,通過計算生成圖與原圖的內(nèi)容損失以及生成圖與風(fēng)格圖的風(fēng)格損失大小來判斷生成圖的質(zhì)量。通過不斷迭代計算來減少損失,反向傳播到圖片轉(zhuǎn)換網(wǎng)絡(luò)并對其進行優(yōu)化,最終得到合格的圖片風(fēng)格轉(zhuǎn)換模型。訓(xùn)練完成后,只需要輸入任意的圖像x在風(fēng)格遷移網(wǎng)絡(luò)中前向傳播一次,便可在幾秒內(nèi)內(nèi)合成出一張不錯的風(fēng)格遷移圖像;而GATYS等人提出的風(fēng)格遷移方法中不存在一個如圖2所示的風(fēng)格遷移網(wǎng)絡(luò)F,只存在圖2的右半部分,其中,K為一張白噪聲圖,對內(nèi)容圖c與風(fēng)格圖s進行合成的過程即是通過不斷地迭代K來減小風(fēng)格遷移損失的過程,迭代結(jié)束后,y便為合成后的圖像。而我們每次對一張圖像進行風(fēng)格遷移都需要經(jīng)過這樣的步驟,這無疑會耗費大量的時間。

      2 實現(xiàn)在iOS系統(tǒng)上的應(yīng)用

      2.1 Core ML簡介

      通常情況下,開發(fā)人員可以應(yīng)用python開發(fā)web service來實現(xiàn)客戶端。但自從iOS 11在2017年推出新的機器學(xué)習(xí)框架core ML之后,開發(fā)者可以直接通過core ML將已經(jīng)訓(xùn)練好的機器學(xué)習(xí)模型集成到應(yīng)用程序APP中。本文使用了Apple公司提供的一個跨框架機器學(xué)習(xí)模型,既MLModel。它可以協(xié)助開發(fā)者封裝機器學(xué)習(xí)模型的預(yù)測方法、配置和模型描述。一個MLModel文件通常情況下會包括輸入、輸出、模型各層的描述三個方面,用戶將數(shù)據(jù)封裝成為輸出文件并交付給MLModel,模型會進行結(jié)果預(yù)測并輸出預(yù)測結(jié)果的輸出文件,而后再將預(yù)測的結(jié)果轉(zhuǎn)換成為使用者需要的數(shù)據(jù)類型。

      2.2 系統(tǒng)功能的實現(xiàn)

      本文利用python和tensorflow。首先,把輸入的圖像調(diào)整成預(yù)定的格式和大小。首先定義了一個內(nèi)容損失和風(fēng)格損失,前者為風(fēng)格圖像和輸出圖像之間的距離,后者為輸入圖像和輸出圖像之間的距離。然后運用定義的總損失函數(shù)來創(chuàng)建優(yōu)化器[9],具體流程圖(見圖3)。

      圖3 定義損失函數(shù)流程圖

      當(dāng)設(shè)置了內(nèi)容損失,風(fēng)格損失和總損失函數(shù)之后,就可以將風(fēng)格轉(zhuǎn)移過程轉(zhuǎn)化為優(yōu)化問題。為了最大限度地減少全局損失,本文采用一張隨機生成的白噪聲圖片進行訓(xùn)練,迭代更新風(fēng)格化圖像[4]。在每次迭代中,將會創(chuàng)建一個輸出圖像,以便最小化相應(yīng)像素輸出圖像和輸入圖像樣式之間的距離(差異)[10]。最后輸出可視化圖像,具體流程圖(見圖4)。

      為了獲取最好的模型效果,本文選擇了不同迭代次數(shù)來獲取風(fēng)格圖片,為了防止出現(xiàn)過擬合與欠擬合的現(xiàn)象(見圖5)。

      如果直接在手機上運行模型,將會消耗大量的手機內(nèi)存,且用戶等待時間較長。所以本文選擇用apple公司提供的core ML框架來封裝已經(jīng)訓(xùn)練好的模型,以提高執(zhí)行效率。通過導(dǎo)入core ML tools轉(zhuǎn)換器,并根據(jù)對應(yīng)模型的第三方工具包converters.caffe.convert,將已經(jīng)訓(xùn)練好的模型通過調(diào)用轉(zhuǎn)換器工具將結(jié)果保存為core ML模型格式(.mlmodel),大致流程圖如圖6所示。然后在xcode上集成,實現(xiàn)其他相關(guān)視圖組件。

      圖4 訓(xùn)練過程流程圖

      圖5 不同迭代次數(shù)后得到的風(fēng)格圖

      圖6 MLmodel結(jié)構(gòu)

      用戶能夠通過該APP從相冊或者拍照獲取圖片,將該照片裁剪成預(yù)設(shè)圖片格式大小,之后利用選擇的風(fēng)格模式在后臺進行風(fēng)格轉(zhuǎn)換,最后將結(jié)果圖返回給用戶。

      2.3 系統(tǒng)功能測試

      在對移動端進行測試時,選擇電腦配置為處理器1.6 GHz Intel Core i5+4 GB內(nèi)存+1 600 MHz DDR3,并且選擇xcode9.2版本,iPhone 8plus,iOS系統(tǒng)為11.1為移動客戶端進行測試。對傳入的圖片進行測試時,能在2 s內(nèi)獲得風(fēng)格遷移圖片,測試結(jié)果(見圖7)。

      圖7 圖像合成結(jié)果

      3 結(jié) 語

      本文實現(xiàn)了在python中運用tensorFlow進行神經(jīng)風(fēng)格遷移的算法,并成功運用到移動端上。但因為系統(tǒng)后臺迭代的次數(shù)是已經(jīng)確定的,所以生成的圖片偶爾會遷移過度或者遷移風(fēng)格不夠的情況,還需改進。通過相關(guān)實驗測試,此方法能夠在iOS系統(tǒng)的手機實現(xiàn)較好的風(fēng)格遷移效果。

      猜你喜歡
      損失神經(jīng)網(wǎng)絡(luò)圖像
      改進的LapSRN遙感圖像超分辨重建
      少問一句,損失千金
      胖胖損失了多少元
      有趣的圖像詩
      神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
      電子制作(2019年19期)2019-11-23 08:42:00
      玉米抽穗前倒伏怎么辦?怎么減少損失?
      基于神經(jīng)網(wǎng)絡(luò)的拉矯機控制模型建立
      重型機械(2016年1期)2016-03-01 03:42:04
      復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用
      一般自由碰撞的最大動能損失
      基于支持向量機回歸和RBF神經(jīng)網(wǎng)絡(luò)的PID整定
      华容县| 镇原县| 石林| 星座| 潼南县| 乃东县| 乌鲁木齐市| 县级市| 湘潭县| 六枝特区| 理塘县| 天津市| 武平县| 白水县| 五河县| 邢台县| 白水县| 琼海市| 清徐县| 孙吴县| 寻乌县| 永安市| 开阳县| 北流市| 洛阳市| 安龙县| 深水埗区| 上饶县| 辽宁省| 淳化县| 墨竹工卡县| 林芝县| 江城| 二手房| 阳谷县| 宕昌县| 亚东县| 松桃| 常宁市| 富源县| 万山特区|