機器學習:利用卷積神經網絡實現圖像風格遷移 (一)

相信很多人都對之前大名鼎鼎的 Prisma 早有耳聞,Prisma 能夠將一張普通的圖像轉換成各種藝術風格的圖像,今天,我們將要介紹一下Prisma 這款軟件背后的算法原理。就是發表于 2016 CVPR 一篇文章,

“ Image Style Transfer Using Convolutional Neural Networks”

算法的流程圖主要如下:

這里寫圖片描述

總得來說,就是利用一個訓練好的卷積神經網絡 VGG-19,這個網絡在ImageNet 上已經訓練過了。

給定一張風格圖像 a 和一張普通圖像 p,風格圖像經過VGG-19 的時候在每個卷積層會得到很多 feature maps, 這些feature maps 組成一個集合 A,同樣的,普通圖像 p 通過 VGG-19 的時候也會得到很多 feature maps,這些feature maps 組成一個集合 P,然后生成一張隨機噪聲圖像 x, 隨機噪聲圖像 x 通過VGG-19 的時候也會生成很多feature maps,這些 feature maps 構成集合 GF 分別對應集合 AP, 最終的優化函數是希望調整 x 讓 隨機噪聲圖像 x 最后看起來既保持普通圖像 p 的內容, 又有一定的風格圖像 a 的風格。

content representation

在建立目標函數之前,我們需要先給出一些定義: 在CNN 中, 假設某一 layer 含有 Nl 個 filters, 那么將會生成 Nl 個 feature maps,每個 feature map 的維度為 Ml , Ml 是 feature map 的 高與寬的乘積。所以每一層 feature maps 的集合可以表示為 FlRNl×Ml , Flij 表示第 i個 filter在 position j 上的 activation。

所以,我們可以給出 content 的 cost function:

Lcontent(p,x,l)=12ij(Flij?Plij)

style representation

為了建立風格的representation,我們先利用 Gram matrix 去表示每一層各個 feature maps 之間的關系,GlRNl×Nl , Glij 是 feature maps i,j 的內積:

Glij=kFlikFljk

利用 Gram matrix,我們可以建立每一層的關于 style 的 cost :

El=14N2lM2li,j(Glij?Alij)2

結合所有層,可以得到總的cost

Lstyle(a,x)=l=0LwlEl

最后將 content 和 style 的 cost 相結合,最終可以得到:

Ltotal(p,a,x)=αLcontent(p,x)+βLstyle(a,x)

α,β 表示權值,在建立 Lcontent 的時候,用到了 VGG-19 的 conv4_2 層,而在建立 Lstyle 的時候,用到了VGG-19 的 conv1_1, conv2_1, conv3_1, conv4_1 以及 conv5_1。

下一篇博客里,我們將介紹基于 TensorFlow 的代碼實現。

轉載于:https://www.cnblogs.com/mtcnn/p/9412430.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255627.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jquery中attr和prop的區別

在高版本的jquery引入prop方法后,什么時候該用prop?什么時候用attr?它們兩個之間有什么區別?這些問題就出現了。 關于它們兩個的區別,網上的答案很多。這里談談我的心得,我的心得很簡單: ?對于…

博客園自定義樣式

碎碎念: 已經很長時間沒有更新過博客了,分析一下,一個是太懶了。。。所以很久沒整理一下了。還有就是嫌棄博客園默認的博客界面真的太丑了,作為顏控的我真的無法忍受啊。個人比較喜歡用makedown來編寫博客,但是博客園自…

【CSS】——cascading stylesheets層疊式樣式表

目錄 0、CSS介紹 1、CSS語句組成 2、CSS選擇器的選擇方式 1)CSS選擇器的方式和選擇器大全: 2)常見的三種方式: 3、添加CSS方式 1)外部樣式表 html調用css代碼 css文件 html文件 展示 2)內部樣式表…

四 Apache Axis2 部署 WebService

最新版本1.7.4發布日期2016-10-21 Axis2官網下載如下文件: axis2-1.6.2-bin:二進制的axis axis2-1.6.2-docs:幫助文檔 axis2-1.6.2-war:axis.war 文件 axis2-eclipse-codegen-plugin-1.6.2:Eclipse axis client 插件 a…

安裝OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 開發環境配置

因為讀研期間的研究方向是圖像處理,所以淺墨這段時間閉門研究了很多OpenCV和圖像處理相關的知識與內容。眼看自己積累到一定的程度了,于是決定開始開設這個OpenCV系列專欄,總結自己所學,也分享知識給大家。 好了,這篇文…

powerdesigner中如何在自動生成建表SQL時添加模式名schema

1、在主菜單中選擇“模型”→“users and roles”→“users”,新增一個user,其中"name"字段就是要添加的模式名。 2、在新增表時,在表屬性的“general”頁簽中選擇"owner",選擇剛才新增的user,即可…

spark 免密碼登錄- ssh 指定非22端口

vi /etc/profile在profile 文件最后一行加入命令: export SPARK_SSH_OPTS"-p 7315" #注:7315 是ssh 端口轉載于:https://www.cnblogs.com/chengjunhao/p/8336086.html

【django學習】——Django介紹和實戰(開發簡易版博客網頁)

目錄 0、視頻鏈接 1、環境配置 2、django基本命令 1)常見命令 2)數據庫相關的Django命令 3、Django項目 1)Django創建項目 2)項目目錄介紹 3)運行初始化的Django項目 4、Django應用 1)Django項目和Djan…

求最大子數組03

題目: 返回一個二維整數數組中最大聯通子數組的和。 要求: 1. 輸入一個二維整形數組,數組里有正數也有負數。 求所有子數組的和的最大值。要求時間復雜度為O(n)。 2.程序要使用的數組放在一個叫 input.txt 的文件中, 文件格式是: 數組的行…

warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.

使用VS2005以上版本(VS2005、VS2008、VS2010)編譯在其他編譯器下正常通過的C語言程序,你可能會遇到類似如下的警告提示:引用內容 warning C4996: strcpy: This function or variable may be unsafe. Consider using strcpy_…

糾錯——【Singleton array array(0.2) cannot be considered a valid collection.】

# 將數據集按照比例劃分為訓練集和測試集 def split_datas(datas,labels,random_state1,train_size0.9,test_size0.1):train_data, test_data, train_label, test_label sklearn.model_selection.train_test_split(datas,labels,random_staterandom_state,# 作用是通過隨機數來…

Android Studio 模擬器 不要皮膚,效果更好

新建或者編輯虛擬機時,皮膚選擇“No Skin”即可,第二張圖片就是無皮膚的效果,看著更爽啊。 轉載于:https://www.cnblogs.com/toSeeMyDream/p/6265501.html

SqlServer自定義排序

在實際項目中,有時會碰到數據庫SQL的特殊排序需求,舉幾個例子,作為參考。 1、自定義優先級 一種常見的排序需求是指定某個字段取值的優先級,根據指定的優先級展示排序結果。比如如下表: Create TABLE Fruit (id INT ID…

JAVA 筆記(三)

NullPointerException:空指針異常 原因:數組已經不再指向堆內存了。而你還用數組名去訪問元素。對于查找問題,如果找到就返回其索引值,如果找不到就要返回一個負數(一般是負一)這是必須的,否則如果找不到&a…

ERROR: SampleCB() - buffer sizes do not match 解決方法

筆記本有內置攝像頭。Windows7驅動已經安裝成功&#xff0c;利用QQ測試攝像頭正常。但是利用OpenCV簡單的攝像頭操作后&#xff0c;就會出現ERROT: SampleCB() - buffer sizes do not match的問題。下面是代碼&#xff1a; #include<iostream> #include <opencv2/co…

安裝Wamp后 Apache無法啟動的解決方法

安裝Wamp后 Apache無法啟動的解決方法&#xff0c;網上的解決方案可以說是五花八門&#xff0c;有些說了一大推&#xff0c;一點作用都起不到。 其實解決方法只需兩步&#xff1a; 1、安裝路徑不能包含有中文&#xff0c;這個我不知道為什么&#xff0c;總之如果安裝路徑中包含…

MySQL的my.cnf文件(解決5.7.18下沒有my-default.cnf)

官網說&#xff1a;從5.7.18開始不在二進制包中提供my-default.cnf文件。參考&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html 經過測試&#xff0c;在5.7.18版本中&#xff0c;使用tar.gz安裝時&#xff0c;也就是壓縮包解壓出來安裝這種&…

【Not all parameters were used in the SQL statement】

在添加游標的時候&#xff0c;添加preparedTrue cursor mydb.cursor(preparedTrue) 感謝博主&#xff1a; 【已解決】Python MySQL: Not all parameters were used in the SQL statement - MoonYear530 - 博客園一、事故緣起 今天構造了一個超過 50 多個參數的 SQL 插入語句…

opencv 文件模塊 解析

OpenCV包括以下幾個模塊&#xff0c;具體功能是&#xff1a; 1、CV&#xff1a;主要的OpenCV函數 2、CVAUX&#xff1a;輔助的&#xff08;實驗性的&#xff09;OpenCV函數 3、CXCORE&#xff1a;數據結構與線性代數支持 4、HIGHGUI&#xff1a;圖像界面函數 5、ML&#xff1a;…

解決Android Studio報錯:DefaultAndroidProject : Unsupported major.minor version 52.0

問題描述 今天使用Android Studio 2.0打開我之前的項目時&#xff0c;編譯報了如下錯誤&#xff1a; Error:Cause: com/android/build/gradle/internal/model/DefaultAndroidProject : Unsupported major.minor version 52.0 其中build.gradle文件內容如下所示&#xff1a; // …