0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種用神經(jīng)網(wǎng)絡從真實照片中生成蘋果Memoji表情的方法

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-11-05 15:19 ? 次閱讀

在今年六月份舉行的WWDC18大會上,蘋果介紹了全新的升級版“Animoji”——Memoji,用戶可以選擇不同的發(fā)型、五官和膚色來定制自己專屬的表情符號,例如選擇不同的膚色、發(fā)型甚至雀斑,并且有多種顏色。

但是,選擇畢竟是有限的,在多種樣式中對比查找也有一定難度,那么是否有一種算法可以根據(jù)照片生成Memoji呢?

在這篇博文中,我們將介紹一種用神經(jīng)網(wǎng)絡從真實照片中生成蘋果Memoji表情的方法。具體來說,我測試了用于人臉識別的網(wǎng)絡VGG16 Face,將真實照片與Memoji進行對比。之后我用它選擇各種特征,為新目標創(chuàng)造Memoji表情。本文原作者為Pat Niemeyer,以下是論智的編譯。

上圖是神經(jīng)網(wǎng)絡生成的兩個結(jié)果。在實際操作過程中,我們的工作會受到以下幾點因素的影響:

人像卡通化

第一個問題就是:某人的“卡通版本”是什么樣的??ㄍ嬐ǔ糯竽橙俗蠲黠@的特征,但是類似發(fā)型之類的其他特征區(qū)別不是很明顯,并且發(fā)型的類型非常多。經(jīng)過訓練辨認人臉的神經(jīng)網(wǎng)絡會以抽象方式捕捉到某人的發(fā)型信息,從而進行轉(zhuǎn)化。反過來說,這也意味著從抽象信息中生成發(fā)型并不是一個理想的好方法。

膚色和發(fā)色

在不同光線條件下推測照片中人物的膚色非常困難,在我的測試中,網(wǎng)絡通常會選擇膚色更淺的區(qū)域,并且不能區(qū)分現(xiàn)實和非現(xiàn)實情況。同樣,雖然測試設(shè)備在分辨暗色和亮色頭發(fā)的任務中表現(xiàn)不錯,但是當照片中的頭發(fā)顏色更鮮艷,這一方法或多或少地可能失敗。

這里推薦一篇文章,其中用到的對人臉特征和膚色進行規(guī)范化的工具非??幔篠ynthesizing Normalized Faces from Facial Identity Features。

No API

想用Memoji做實驗遇到的最大挑戰(zhàn)就是,目前沒有可用的API能夠程序化創(chuàng)造它們(沒有直接的方法可以讓我們在iOS中自動進行創(chuàng)造)。所以,當我們想搜索可能的Memoji作為生成過程的一部分時,這一過程變得極為低效。理想狀態(tài)下,我們想用一個通用算法徹底調(diào)整各特征的組合,而不是獨立處理,但這在簡單的實驗上是無法做到的。

照片選擇

選擇哪張照片作為參考材料對結(jié)果有很大的影響,在有些情況下,一些照片會比其他的生成更好的結(jié)果。理想的照片應該是裁剪合理、臉朝向前方、最具代表性的照片。對于每一特征,我都會根據(jù)至少四張人臉圖像進行打分。

網(wǎng)絡設(shè)置

VGG

VGG是圖像識別中常用的卷積神經(jīng)網(wǎng)絡架構(gòu),VGG Face是該架構(gòu)經(jīng)過人臉識別訓練后的工具。它的創(chuàng)作者已將完全訓練后的網(wǎng)絡開源,大大方便了我們的實驗,因為從零訓練一個這樣的網(wǎng)絡通常需要大量數(shù)據(jù)和計算時間。

VGG Face

Torch

另外在測試時,我用到了Torch科學計算框架。Torch提供了運行VGG模型所需要的環(huán)境,并且基于Lua提供了腳本環(huán)境,同時還有用于數(shù)學計算的庫和基礎(chǔ)搭建模塊,可用于神經(jīng)網(wǎng)絡的圖層。

Torch可以自動下載VGG Face模型,并且只需幾行代碼就能運行一張圖片?;A(chǔ)流程如下:

-- Load the network

net = torch.load('./torch_model/VGG_FACE.t7')

net:evaluate()

-- Apply an image

img = load_image(my_file)

output = net:forward(img)

其中下載圖像和對圖像規(guī)范化的步驟代碼可以在源代碼中找到。

圖層

如上圖所示,VGG有很多不同類型的圖層,首先是一個能保存RGB圖像數(shù)據(jù)的Tensor,它應用了多種卷積、池化、權(quán)重和其他類型的變換,隨著每個圖層學習更多抽象特征,數(shù)據(jù)的“形狀”和維度都在變化。最終網(wǎng)絡會在最后一層生成一個一維的、有2622個元素的預測向量。該向量表示真人與網(wǎng)絡訓練結(jié)果匹配成功的概率。

在我們的案例中,我們不關(guān)心這些預測結(jié)果,而是想利用網(wǎng)絡比較自己數(shù)據(jù)集中的抽象人臉。為了做到這一點,我們可以利用預測圖層下的圖層的輸出,該圖層包括了4096個元素向量,對人臉特征進行組合定制。

output = net.modules[selectedLayer].output:clone()

雖然VGG16的標準是16層的框架,但實際上在Torch中實施后生成的是具有40個模塊的設(shè)置。

相似度

接下來,我們會向網(wǎng)絡中輸入成對的圖片,然后用一種簡單的相似度尺度比較它們的輸出。其中比較兩個大型數(shù)字向量的方法是利用點積:

torch.dot(output1, output2)

這就生成了一個表示向量在高維空間中“對齊”程度的標量值。

對于這一測試,我們想將生成的Memoji和多張參考圖像對比,生成最終結(jié)果。所以我只需將每一對圖像的值進行正則化,取平均分數(shù)。

sum = 0

for i = 1, #refs do

localref = refs[i]

local dotself = torch.dot(ref , ref)

sum = sum + torch.dot(ref, target) / dotself

end

...

return sum / #refs

正則化表示將一張圖像和它本身相比的分數(shù)為1,那么之后的分數(shù)越接近于1,說明相似度越大。

除此之外,我們還能用到很多其他類型的衡量尺度。常用的兩種可能是歐幾里得距離或計算兩輸入之間的平均方差。

首次測試——The Lineup

首先我想知道,這一人臉網(wǎng)絡能否在所有照片上生成對應的Memoji。首先,我隨機收集了63張Memoji圖像,大部分是蘋果的設(shè)計原型。

之后我選擇了一個Memoji,然后讓網(wǎng)絡選出前三名相似度最高的表情。

結(jié)果非常不錯!不僅僅它能找到完全一樣的Memoji(得分為1),第二第三名看起來也很相像。

真實照片

現(xiàn)在我們要進行“真實性”檢測:我們讓網(wǎng)絡根據(jù)真實相片找到相似的Memoji,結(jié)果如下:

由于只能在有限的數(shù)據(jù)集中選擇,所以結(jié)果并不如我們期待的那樣好,可以看到分數(shù)都很低。

生成過程

接下來,我嘗試讓網(wǎng)絡挑選特征創(chuàng)造全新的Memoji。正如上文提到的,在iOS中并沒有能自動創(chuàng)建Memoji的途徑,所以我決定編寫腳本促進Memoji的生成。

我將手機電腦連接,用QuickTime Player的錄制功能將這一過程保留下來。

但這一方法并不理想。首先,操作起來很復雜,光發(fā)型就有93種,運行一遍需要大量時間。更重要的是,我們每次只能評估一個特征的不同。理論上,我們可以不斷地重復選擇樹,進行迭代,知道網(wǎng)絡認為沒有什么變化時才能停止。但是這種方法也不完美,很有可能只是一個“部分最小值”。

另外,照片中人物頭像細微的移動就會影響分數(shù)。最后,我發(fā)現(xiàn)了一個簡單的解決方法。

結(jié)果

在文章未完成前,我其實沒有采用網(wǎng)絡得出的川普中的發(fā)型,而是手動選擇了一個分數(shù)最高的,覺得那個更適合他。但是最后我還是堅持展示出所有網(wǎng)絡得出的結(jié)果。

所以,有的時候排名前三的將結(jié)果并不總是相似的。例如,以下就是川普發(fā)型的排名:

但是,奧巴馬耳朵的排名卻很靠譜,又大到小分數(shù)逐漸降低:

不過眼睛的選擇卻有些不同:

但是川普的眼睛就比較一致了:

發(fā)色

前面說到,頭發(fā)的顏色因為光線問題會難以確定。川普和奧巴馬的頭發(fā)還比較好確定,但是有些情況下,網(wǎng)絡總會把很亮的顏色看作灰色:

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡

    關(guān)注

    42

    文章

    4733

    瀏覽量

    100410
  • 人臉識別
    +關(guān)注

    關(guān)注

    76

    文章

    4002

    瀏覽量

    81659

原文標題:用神經(jīng)網(wǎng)絡根據(jù)照片創(chuàng)建專屬Memoji表情

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【PYNQ-Z2試用體驗】神經(jīng)網(wǎng)絡基礎(chǔ)知識

    學習和認知科學領(lǐng)域,是一種模仿生物神經(jīng)網(wǎng)絡(動物的中樞神經(jīng)系統(tǒng),特別是大腦)的結(jié)構(gòu)和功能的數(shù)學模型或計算模型,用于對函數(shù)進行估計或近似。神經(jīng)網(wǎng)絡由大量的人工
    發(fā)表于 03-03 22:10

    一種基于經(jīng)優(yōu)化算法優(yōu)化過的神經(jīng)網(wǎng)絡設(shè)計FIR濾波器的方法介紹

    定程度上改善了傳統(tǒng)方法的局限性,但這些方法自身也存在著些不足。之后,曾喆昭等人提出了一種基于余弦基
    發(fā)表于 07-08 07:16

    人工神經(jīng)網(wǎng)絡實現(xiàn)方法有哪些?

    人工神經(jīng)網(wǎng)絡(Artificial Neural Network,ANN)是一種類似生物神經(jīng)網(wǎng)絡的信息處理結(jié)構(gòu),它的提出是為了解決些非線性,非平穩(wěn),復雜的實際問題。那有哪些辦法能實現(xiàn)
    發(fā)表于 08-01 08:06

    如何構(gòu)建神經(jīng)網(wǎng)絡?

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預測的計算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡神經(jīng)網(wǎng)絡包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反
    發(fā)表于 07-12 08:02

    分享一種400×25×2的三層BP神經(jīng)網(wǎng)絡

    本文首先簡單的選取了少量的樣本并進行樣本歸化,這樣就得到了可供訓練的訓練集和測試集。然后訓練了400×25×2的三層BP神經(jīng)網(wǎng)絡,最后對最初步的模型進行了誤差分析并找到了一種效果顯著的提升
    發(fā)表于 07-12 06:49

    一種基于綜合幾何特征和概率神經(jīng)網(wǎng)絡的HGU軸軌識別方法

    摘要故障診斷是保證水輪發(fā)電機組安全運行的重要環(huán)節(jié)。軸心軌跡辨識是HGU故障診斷的一種有效方法。提出了一種基于綜合幾何特征和概率神經(jīng)網(wǎng)絡(CGC-PNN)的HGU軸軌識別
    發(fā)表于 09-15 08:18

    隱藏技術(shù): 一種基于前沿神經(jīng)網(wǎng)絡理論的新型人工智能處理器

    ,而且計算量較小。利用所提出的片上模型結(jié)構(gòu),即權(quán)重生成和“超級掩碼”擴展相結(jié)合,Hiddenite 芯片大大減少了外部存儲器訪問,提高了計算效率。深層神經(jīng)網(wǎng)絡一種復雜的人工智能機器學習體系結(jié)構(gòu),需要
    發(fā)表于 03-17 19:15

    卷積神經(jīng)網(wǎng)絡模型發(fā)展及應用

    十余年來快速發(fā)展的嶄新領(lǐng)域,越來越受到研究者的關(guān)注。卷積神經(jīng)網(wǎng)絡(CNN)模型是深度學習模型中最重要的一種經(jīng)典結(jié)構(gòu),其性能在近年來深度學習任務上逐步提高。由于可以自動學習樣本數(shù)據(jù)的特征表示,卷積
    發(fā)表于 08-02 10:39

    基于人工免疫網(wǎng)絡神經(jīng)網(wǎng)絡集成方法

    提出基于人工免疫網(wǎng)絡神經(jīng)網(wǎng)絡集成方法AINEN。在用Bagging生成神經(jīng)網(wǎng)絡集成之后,將人工免疫網(wǎng)絡
    發(fā)表于 04-10 08:49 ?18次下載

    一種基于RBF神經(jīng)網(wǎng)絡的傳感器故障診斷方法

    針對傳感器故障, 提出了一種基于RBF 神經(jīng)網(wǎng)絡的集成故障診斷方法。RBF 神經(jīng)網(wǎng)絡建立傳感器故障模型, 對系統(tǒng)的狀態(tài)和故障參數(shù)進行在線估
    發(fā)表于 07-14 11:58 ?13次下載

    一種基于傅里葉基神經(jīng)網(wǎng)絡的頻譜分析方法

    該文提出了一種遞推最小二乘法訓練傅里葉基神經(jīng)網(wǎng)絡權(quán)值的頻譜分析方法。其主要思想是采用遞推最小二乘法訓練傅里葉基神經(jīng)網(wǎng)絡權(quán)值,根據(jù)權(quán)值獲得信
    發(fā)表于 11-11 15:52 ?16次下載

    BP神經(jīng)網(wǎng)絡的電路最優(yōu)測試集的生成設(shè)計

    BP神經(jīng)網(wǎng)絡的電路最優(yōu)測試集的生成設(shè)計 1 引言   人工神經(jīng)網(wǎng)絡是基于模仿生物大腦的結(jié)構(gòu)和功能而構(gòu)成的一種信息處理系統(tǒng)。國際著名 的神經(jīng)網(wǎng)絡
    發(fā)表于 02-02 10:35 ?1268次閱讀
    BP<b class='flag-5'>神經(jīng)網(wǎng)絡</b>的電路最優(yōu)測試集的<b class='flag-5'>生成</b>設(shè)計

    一種改進的深度神經(jīng)網(wǎng)絡結(jié)構(gòu)搜索方法

    為提升網(wǎng)絡結(jié)構(gòu)的尋優(yōu)能力,提岀一種改進的深度神經(jīng)網(wǎng)絡結(jié)構(gòu)搜索方法。針對網(wǎng)絡結(jié)構(gòu)間距難以度量的問題,結(jié)合
    發(fā)表于 03-16 14:05 ?3次下載
    <b class='flag-5'>一種</b>改進的深度<b class='flag-5'>神經(jīng)網(wǎng)絡</b>結(jié)構(gòu)搜索<b class='flag-5'>方法</b>

    cnn卷積神經(jīng)網(wǎng)絡模型 卷積神經(jīng)網(wǎng)絡預測模型 生成卷積神經(jīng)網(wǎng)絡模型

    cnn卷積神經(jīng)網(wǎng)絡模型 卷積神經(jīng)網(wǎng)絡預測模型 生成卷積神經(jīng)網(wǎng)絡模型? 卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network
    的頭像 發(fā)表于 08-21 17:11 ?1173次閱讀

    人工神經(jīng)網(wǎng)絡模型是一種什么模型

    人工神經(jīng)網(wǎng)絡(Artificial Neural Networks,簡稱ANNs)是一種受生物神經(jīng)網(wǎng)絡啟發(fā)而產(chǎn)生的數(shù)學模型,用于模擬人腦處理信息的方式。它由大量的節(jié)點(或稱為神經(jīng)元)相
    的頭像 發(fā)表于 07-04 16:57 ?664次閱讀