深度學習助你變身美妝達人

許多人印象中人工智慧深度學習這些名詞和美妝應該八竿子打不著關係,對吧?但位於美國洛杉磯的創企 Mira 可不這麼想,這家公司決定用人工智慧技術幫助廣大愛美女士,比如獲取化妝靈感,購買合適的美妝產品等。

放眼全球,美妝博主的吸金能力令人側目

在隨機和數十位美妝人士詳聊後,Mira 團隊了解到目前女性消費者在尋找合適的化妝產品和美妝方法時,遇到的最大困難是沒有權威且可信的聲音能針對她們個人的美容需求做出指導。

在本文我們就聊聊 Mira 的技術團隊如何用深度學習和計算機視覺技術發現切中這個問題要害的實例:找到講解人類具體眼型和面部膚色的美妝大咖、圖片和視頻等信息。沿著這種方式, Mira 團隊藉助三個簡單但強大的知識——幾何變換、triplet 損失函數和遷移學習,只用最小限度的人類輸入數據就能解決種種困難的美妝推斷問題。

我們有不同的眼型和面部膚色

眼部分類示意圖

愛化妝的女士都知道,找到適合自己眼睛的美妝產品和方法是很困難的——每個人的眼型和面部膚色都不一樣。即便是同一種眼妝(比如煙熏妝),根據眼型不同,所用的化妝方法也大不相同。雖然像 Birchbox 等推出了一些有用的化妝指南,但 Mira 團隊經過調查發現,美妝愛好者們通常還是喜歡聽聽專業且可信的建議,尤其是和自己眼型相似的人的化妝建議,她們對這些建議的重視程度甚至都超過了美容專家的意見。

但是,假如現在根據自己的眼部特徵以及自己其它獨特的面部特徵,就能讓自己知道怎麼化妝、買什麼化妝品呢?

解決圖像問題

我們把問題形式化一下:根據一組面部照片,以及少許數量的人工標記的照片(標記了眼睛顏色、眼瞼形狀等),找到兩個眼睛之間的視覺相似性度量(「這個妹妹我曾見過的」就是這個意思),然後用分類器捕捉人工標記的屬性。本文先重點講解如何確定眼睛之間的相似度,後面會詳細解釋如何進行分類任務。

原始圖像並不是很適合計算視覺相似性或者進行分類任務。因為它們包含的很多相似性都是表面上的(比如畫的狀很相似,由於強光才造成膚色看起來不同),而這些和人物真正的眼部結構及面部膚色並沒有關係。而且,原始圖像一般都處於高維空間,這就需要大量的有標記訓練數據用於分類任務。

如上圖,如果僅直接比較圖像像素,人物的眼睛都高度相似,但仔細注意會發現,雖然人物的眼影、光線和視線方向一致,但她們的眼睛顏色和面部膚色卻各不相同。

處理原始圖像的困難所在:雖然上圖兩人的眼睛大不相同,但初始數據比較起來卻很相似

那麼 Mira 的首要任務就是要獲得眼部照片的低維和密集的數學表達形式,也就是我們所說的「嵌套」(embeddings),它只會捕捉任務所需的圖像品質(嵌套是一種分類特徵,以連續值特徵表示。通常,嵌套是指將高維度向量映射到低維度的空間。)。這樣以來,「嵌套」應當忽略這些信息:

  • 眼睛姿勢/視線方向
  • 具體的光線狀況(當然還有強大的濾鏡這些)
  • 不管是臉部畫了什麼樣的妝

通過投影變化進行圖像歸一化處理

我們可以通過一個簡單的預處理步驟——投影變化刪除一整個類別的表面相似性

雖然裁減過的眼部照片會出現很多明顯的結構性差異(比如眼睛不在照片中心,或者由於頭部傾斜的原因出現旋轉等),但投影變化能讓我們「扭曲」照片,這樣就能保證相同的眼部標誌處於相同的坐標。

Scikit-image 上有篇文檔對這部分的操作解釋的很好。

http://scikit-image.org/docs/dev/auto_examples/xx_applications/plot_geometric.html?

scikit-image.org

藉助一丁點的線性代數原理,我們就可以將一張圖像「扭曲」,這樣一組點會映射為一個新的理想的形狀。旋轉和拉伸圖像的過程如下所示:

使用投影變化,可以將上面的圖像進行扭曲處理,上圖中的 4 個紅點會組成一個矩形,從而將紅點圍住的文本「拉直」。Mira 團隊在將眼部照片進行正常化處理時,應用了同樣的方法。

研究人員接用 dlib 檢測出臉部標記(如果你對Dlib感興趣,戳右邊:Dlib目標檢測實戰 - 集智課堂),剪裁照片中的眼部部位,將其「扭曲」處理,確保它們對齊和一致。這步操作能讓他們專註於讓「嵌套」不受人物頭部姿勢和傾斜角度的影響。

圖像歸一化:檢測出面部標誌,剪裁眼部圖像,然後用投影轉換將眼部圖像「扭曲」至標準位置。

圖像預處理流程中的圖像樣本

用 triplet 損失函數進行表示學習

「扭曲」處理後的圖像進行直接比較時,仍會表現出一些表面相似性,包括視線方向和相似的化妝等。深度學習技術就是解決這個問題的藥方!

研究人員訓練了一個卷積神經網路,用眼部照片輸入它後會輸出向量,相比不同人之間,同一個人眼部照片輸出的向量更具相似性。神經網路會學習輸出每個人眼在不同環境下的穩定持續的表示形式。

當然,這裡所以靠的正是前面所說的 triplet 損失函數,其公式如下所示:

這詳細說明了當函數將具體個體(錨點和正樣本)的兩個「嵌套」放置的位置比錨點和無關個體(負樣本)的位置更近時,模型的損失和優化目標會遞減。

模型架構示意圖

當研究人員將眼部照片應用到模型中時,他們發現生成的「嵌套」很好的指出了具有相似眼部結構和面部膚色的兩張照片。

眼部嵌套相似的照片示例

這裡所用的方法其實和谷歌的 FaceNet 很像,也就是通過對照片進行「扭曲」和一致性處理,應用 triplet 損失函數,生成臉部級別的圖像嵌套。

合併嵌套

研究人員對生成的嵌套進行了簡單調試,讓其同樣適用於支持人級的眼部表示——提取出每個幀的全部雜訊數據。

通過使用上面神經網路的預訓練權重,研究人員又採用了新的損失函數,該函數將多組嵌套的平均值放在極為相近的位置(相對於無關個體),如下所示:

使用先前神經網路的預訓練權重,研究人員可以讓網路能夠以求平均值的方式將眼部嵌套合併在一起,能看到模型快速收斂。這個過程就是常說的遷移學習。

遷移學習讓嵌套能夠合併為一個個體眼睛的更為整體的表示。雖然此時神經網路架構非常複雜了,但模型由於採用了遷移學習的原因能夠快速收斂。

最終,研究人員用數據集對模型進行了驗證,發現模型生成的嵌套能夠捕捉個體之間的很細微的相似性,如下所示:

每一行人物的眼部嵌套之間非常相似

結語

通過獲得單張照片中人眼的高質量數學表示,研究人員就能找出人物眼睛構造的相似性,這就為根據人眼為一個人匹配合適的眼妝風格打下了基礎。

Mira 技術團隊表示接下來的任務是應用幾種監督式學習方法(分類眼型、回歸眼睛顏色等),以及一些分析方法,搭建出能為人們提供化妝建議的 AI 模型。也就是說,未來妹子們不必再發愁畫什麼樣的妝最適合自己的眼睛和膚色了,更不必機械地參考標準的化妝指南,AI 會為你推薦更適合你自己的美妝術。

集智會持續關注 Mira 團隊的進展狀況,第一時間分享他們的新成果。

註:本文所有代碼和結果的實現用到了 NumPy,SciPy,Matplotlib,Chainer,dlib 和 SqueezeNet 架構。


參考資料:

medium.com/mathematical


推薦閱讀:

阿爾法狗再進化,人工智慧能否取代人類?
2018年人工智慧將如何刺激印度經濟
未來會是什麼樣?人工智慧電視走向猜想
DeX-Platform 助力工業機器人應用解決方案開發
dingdang-robot:一個開源的中文智能音箱項目

TAG:人工智慧 | 景略集智 | 美妝 |