1. 程式人生 > >【蜂口 | AI人工智慧】人臉風格化——龍鵬 深度學習與人臉影象應用連載(九)

【蜂口 | AI人工智慧】人臉風格化——龍鵬 深度學習與人臉影象應用連載(九)

本次我們接著上一節內容繼續分享,今天的分享內容是人臉風格化這個主題。同樣我們將從以下幾個方面給大家進行分享:

首先,我們會對風格化做一個簡單的介紹。風格化到底是一個什麼樣的課題?在我們這裡實際上包含了兩層內容,即通用的風格化問題和與人臉有關的風格化問題。

其次,我們將會對風格化中的核心演算法給大家做一個簡短的介紹。它主要包含了風格遷移的演算法,以及人臉的分割匹配以及融合一些演算法。

最後,我們對風格化的應用做一個簡單的總結。

現在我們正式開始我們的內容。

風格化到底是一個什麼樣的操作?我們平常所接觸的風格化大概包含三個內容:

1)風格遷移。風格遷移在幾年前,也就是15年,最早被德國的一些科學家來用來將普通的圖片轉換成梵高等藝術家的風格。所以實際上我們現在意義上所說的風格遷移就是把照片轉化為繪畫素描等藝術類的風格。

2)變臉的演算法。變臉的演算法我們應該並不陌生,像天天P圖他們經常會在青年節或者建軍節等一些節日,推出一些特殊的濾鏡。這些濾鏡通常是一些變臉的演算法,也就是我們將我們自己的人臉貼到他們設計好的一些模板上。比如說穿軍裝的小哥哥之類的。

3)人臉卡通化。人臉卡通化是一個非常有用的演算法,也就是說我們用我們自己的正面人臉影象生成一個卡通形象,這個卡通形象要保持我們人臉的一些特徵,主要是形狀等等。

通用的風格化最早是從Premiere開始大火起來。它的主要特點就是設計一些具有藝術氣質的一些模板和一些風格,然後把我們的影象處理成這樣的風格。現在有非常多類似的APP大家可以去下載嘗試。

我們再看一個變臉演算法。現在有一部清宮劇叫做延禧攻略,特別的火,所以天天P圖也順勢推出了延禧攻略劇照這樣的一個模板。這裡我們將趙麗穎的影象做了一個展示,可以看到效果還是不錯的。這就是風格化的主要內容。
在這裡插入圖片描述


下面我們對其中的演算法做一個簡單的介紹:

我們首先來說風格遷移演算法。風格遷移說法來源於下面這樣一篇文章,這是15年的德國科學家的一篇文章:A Neural Algorithm of Artistic Style.

在說它具體演算法之前,我們先說一下它的核心思想,也就是它的操作的一個流程,我們以下面這張圖為例:
在這裡插入圖片描述
首先,我們要給定一個參考的風格。右面大圖圖的左下角就是我們的參考的風格,然後我們提供一個待轉換風格的圖片,也就是我們自己拍攝的圖片,也就是左面這張圖。有了這兩張圖之後,我們把它們進行融合,就得到了右邊的大圖,也就是我們最終的結果,即我們風格化之後的結果,這就是風格遷移。

那風格遷移中的核心演算法是什麼?它的主要原理就是通過分離並重新組合圖片的內容和風格。
在這裡插入圖片描述


我們看上面這張圖,圖片左側有兩張小圖,上面那張就是那個風格圖,也就是我們的藝術作品,下張圖就是我們的內容圖,也就是我們自己的圖。這就是各自指的就是圖片的內容和圖片的風格。

我們可以看到經過神經網路,它分別對風格和內容進行了重建。在不斷地重建的過程中,最後對它們進行組合,就得到我們最終的結果。

那我們重建這樣的一個影象,它使用一個什麼樣的優化目標呢?主要包含兩個:

第一個是我們的畫素內容損失,是這樣一個函式:
在這裡插入圖片描述
F跟P就是我們的參考圖和我們的最終的結果圖,它們是在畫素空間來進行計算。這樣的一個內容損失實際上就是讓我們重建之後的圖,也就是我們風格化之後的圖,要與我們自己提供的那張圖的內容是匹配的,也就是說我們希望它能夠保證保持它的內容。

第二個是風格損失。這裡使用Gram矩陣來進行風格損失的一個表徵,Gram矩陣實際上表徵的不同的feature map的融合。

這就是Gram的矩陣:
在這裡插入圖片描述
Gram矩陣就限制了我們最終的結果圖,要與我們的藝術風格圖也要保持一致。有了這樣的兩個損失函式之後,我們對他們進行一個加權,最終就得到我們的最終的優化目標。基於這樣的一個優化目標,就得到我們的風格遷移的結果。這是來源於最早的一篇文章,也是目前效果來說處於頂尖的文章。

除了風格遷移之外,我們看看我們的變臉演算法。所謂變臉演算法就是我們剛才所說的天天P圖,將我們的人臉轉化為模板,比如延禧攻略或者說穿軍裝的小哥哥等等。

這樣的一個變臉演算法,它的核心流程是:

我們要對我們的人臉的關鍵點進行檢測,然後將人臉進行對齊,對齊之後,我們實際上利用了前面所說的這風格遷移演算法,把我們的內容圖跟我們最開始的圖進行一個風格的遷移,在這樣的一個約束情況下,就得到了我們的正面姿態的結果,然後我們對影象進行分割,最後我們又重新對其進行影象融合。
在這裡插入圖片描述
我們看上面的這張圖,它展示了一個完整的流程。左邊輸入圖,我們首先經過人臉關鍵點檢測對齊之後,然後經過中間的神經網路的一個風格遷移之後,我們再進行重新的人臉對齊,最後進行妥善的融合,就得到我們最終的結果。

我們的圖是自己拍攝的一張圖,然後我們的這個風格圖實際上是尼古拉斯的一張圖片,這裡並沒有給出原始的尼古拉斯的那張風格圖,大家感興趣可以去線下看相關的論文。總之他的思想就是我們輸入影象A,也就是我們自己的圖,把它的姿態和表情作為我們的內容,然後把輸入的影象B,也就是我們要轉換成風格的那張圖作為風格。

那這個演算法裡面比較核心的就是我們的風格遷移,風格遷移實際上是如下面這張圖的操作,它通過類似於一個金字塔的框架來不斷重建我們的風格遷移的結果。
在這裡插入圖片描述
核心的思想與前面所說的風格遷移差不多。它的損失函式也是一個內容函式加風格函式。大家如果對這個函式感興趣,對這個優化目標感興趣,可以線下再去深入的瞭解。

最後,我們說一下我們的卡通影象。卡通影象的生成,它一般包含了幾個操作,例如人臉檢測以及對人臉的各個部位的分割,然後再進行匹配,融合。
在這裡插入圖片描述
上面這張圖展示的是騰訊天天P圖實驗室在早幾年做的一個演算法,它實際上也被用在了天天P圖這個產品裡面。我們看看它的流程:

我們先輸入一張圖進行人人臉測關鍵點檢測之後,接下來要對他的性別以及是否佩戴眼鏡等等做一個檢測。隨後我們用這個人臉分割演算法,把人臉分割成幾個區域,包括眼睛嘴巴頭髮等等。得到這些區域之後,我們分別對它進行特徵的提取,在提取到特徵之後,與我們所建立的庫裡面相對應的人臉的部位進行最近鄰的匹配,匹配到這些部位之後,我們查詢到對應的卡通影象的一個子元素,然後利用支援向量迴歸的方法,再去對這些元素進行一個內容的重新的調整。這一步實現了一個更好的藝術化的設計,最後得到我們輸出的結果。

實際上現在有很多更新的方法,包括使用GAN來進行這樣一個風格遷移。以後有機會我會給大家做更多的介紹。人臉的風格化主要就包含這些內容。

最後,我們對那個風格化的應用做下簡單的總結。

這個人臉風格化的濾鏡,它主要還是應用在社交方面,就是我們生成一些風格化的濾鏡。這些濾鏡非常的好玩有趣,我們會把它分享給朋友。尤其是在特殊的時刻,比如說像現在延禧攻略這個電視劇非常火的情況下,我們做一些這樣的濾鏡來展示我們的社交行為。其次我們也可以嘗試用這樣的方法來進行一些動漫產品的藝術創作,只是目前這樣的方法的魯棒性還不是非常強,但我相信以後一定會有這樣的一天到來。
在這裡插入圖片描述
上面這張圖左面的是我們看的權力的遊戲,我利用自己的證件照生成了一張布蘭的一張圖。右邊的是今天用一個APP生成的一張社交圖。可以看到,實際上更多的應用還是在風格化這方面。風格化濾鏡可以做一些有意思的社交展示個性。

感謝您的閱讀,更多精彩盡在蜂口小程式~瞭解一下?
獲取免費內容,歡迎V信fengkou-IT勾搭~