基於深度卷積神經網路進行人臉識別的原理是什麼?
這裡的人臉識別包括但不限於:人臉檢測,人臉對齊,身份驗證識別,和表情、年齡識別。
CS小白提問,求輕噴。不求多詳細,但求各位大佬講一下基本的過程就好,如果能夠推薦一些相關論文,不勝感激
我這裡簡單講下OpenFace中實現人臉識別的pipeline,這個pipeline可以看做是使用深度卷積網路處理人臉問題的一個基本框架,很有學習價值,它的結構如下圖所示:
1、Input Image -&> Detect
輸入:原始的可能含有人臉的圖像。
輸出:人臉位置的bounding box。
這一步一般我們稱之為「人臉檢測」(Face Detection),在OpenFace中,使用的是dlib、OpenCV現有的人臉檢測方法。此方法與深度學習無關,使用的特徵是傳統計算機視覺中的方法(一般是Hog、Haar等特徵)。
對人臉檢測這一步感興趣的可以參考下列資料:
- dlib的實現:http://blog.dlib.net/2014/02/dlib-186-released-make-your-own-object.html
- openCV的實現:Face Detection using Haar Cascades
2、Detect -&> Transform -&> Crop
輸入:原始圖像 + 人臉位置bounding box
輸出:「校準」過的只含有人臉的圖像
對於輸入的原始圖像 + bounding box,這一步要做的事情就是要檢測人臉中的關鍵點,然後根據這些關鍵點對人臉做對齊校準。所謂關鍵點,就是下圖所示的綠色的點,通常是眼角的位置、鼻子的位置、臉的輪廓點等等。有了這些關鍵點後,我們就可以把人臉「校準」,或者說是「對齊」。解釋就是原先人臉可能比較歪,這裡根據關鍵點,使用仿射變換將人臉統一「擺正」,盡量去消除姿勢不同帶來的誤差。這一步我們一般叫Face Alignment。
在OpenFace中,這一步同樣使用的是傳統方法,特點是比較快,對應的論文是:
- https://pdfs.semanticscholar.org/d78b/6a5b0dcaa81b1faea5fb0000045a62513567.pdf
3、Crop -&> Representation
輸入:校準後的單張人臉圖像
輸出:一個向量表示。
這一步就是使用深度卷積網路,將輸入的人臉圖像,轉換成一個向量的表示。在OpenFace中使用的向量是128x1的,也就是一個128維的向量。
我們可以先看一下VGG16的模型:
VGG16是深度學習中一個比較簡單的基本模型。輸入神經網路的是圖像,經過一系列卷積後,全連接分類得到類別概率。
在通常的圖像應用中,我們可以去掉全連接層,用計算的特徵(一般就是卷積層的最後一層,e.g. 圖中的conv5_3)來當作提取的特徵進行計算。但如果對人臉識別問題同樣採用這樣的方法,即,使用卷積層最後一層做為人臉的「向量表示」,效果其實是不好的。如何改進?我們之後再談,這裡先談談我們希望這種人臉的「向量表示」應該具有哪些性質。
在理想的狀況下,我們希望「向量表示」之間的距離就可以直接反映人臉的相似度:
- 對於同一個人的人臉圖像,對應的向量的歐幾里得距離應該比較小。
- 對於不同人的人臉圖像,對應的向量之間的歐幾里得距離應該比較大。
這種表示實際上就可以看做某種「embedding」。在原始的VGG16模型中,我們使用的是softmax損失,沒有對每一類的向量表示之間的距離做出要求。所以不能直接用作人臉表示。
舉個例子,使用CNN對MNIST進行分類,我們設計一個特殊的卷積網路,讓最後一層的向量變為2維,此時可以畫出每一類對應的2維向量表示的圖(圖中一種顏色對應一種類別):
上圖是我們直接使用softmax訓練得到的結果,它就不符合我們希望特徵具有的特點:
- 我們希望同一類對應的向量表示儘可能接近。但這裡同一類(如紫色),可能具有很大的類間距離。
- 我們希望不同類對應的向量應該儘可能遠。但在圖中靠中心的位置,各個類別的距離都很近。
那麼訓練人臉特徵表示的正確姿勢是什麼?其實有很多種方法。一種方法就是使用「center loss」。centor loss實際上是在softmax的loss上再加入一個損失,這個損失對每一類規定了一個「中心」點,每一類的特徵應該離這個中心點比較近,而不同類的中心點離的比較遠。加入center loss後,訓練出的特徵大致長這樣:
這樣的特徵表示就比較符合我們的要求了。center loss的原始論文在這裡:http://ydwen.github.io/papers/WenECCV16.pdf 。上面這兩幅圖同樣是從這篇論文中截下來的。
順帶一提,除了center loss外。學習人臉特徵表示的方法還有很多,如triplet loss(論文地址:A Unified Embedding for Face Recognition and Clustering)。triplet loss直接這樣的用三元組(A的圖像1,A的圖像2,B的圖像)來訓練網路。去掉了最後的分類層,強迫神經網路對相同的人臉圖像(三元組中的同一人A)建立統一的表達。
4、實際應用
輸入:人臉的向量表示。
有了人臉的向量表示後,剩下的問題就非常簡單了。因為這種表示具有相同人對應的向量的距離小,不同人對應的向量距離大的特點。接下來一般的應用有以下幾類:
- 人臉驗證(Face Identification)。就是檢測A、B是否是屬於同一個人。只需要計算向量之間的距離,設定合適的報警閾值(threshold)即可。
- 人臉識別(Face Recognition)。這個應用是最多的,給定一張圖片,檢測資料庫中與之最相似的人臉。顯然可以被轉換為一個求距離的最近鄰問題。
- 人臉聚類(Face Clustering)。在資料庫中對人臉進行聚類,直接K-Means即可。
5、後記
以上給大家介紹了OpenFace中處理人臉問題的pipeline。需要特別指出的是,人臉相關的問題是一個比較大的方向,一篇文章顯然是說不清楚的,這裡只是基於OpenFace,對比較重要的方法還有名詞做了一個解釋。在OpenFace中,為了速度的考慮,提取人臉特徵之前的Face Detection和Face Alignment就是使用的傳統方法。實際上也可以換用精度更高的深度學習相關方法,比如在中科院山世光老師開源的人臉識別引擎seetaface/SeetaFaceEngine中,Face Alignment使用就是一個基於autoencoder網路的方法。另外,學習人臉特徵同樣有適合不同場景的不同方法,這些都是要進一步學習的。
以上。大家有什麼問題可以在評論中提出~
本質上是模式識別,把現實的東西抽象成計算機能夠理解的數字。
如果一個圖片是256色的,那麼圖像的每一個像素點,都是0到255中間的一個值,這樣你可以把一個圖像轉換成一個矩陣。
如何去識別這個矩陣中的模式?用一個相對來講很小的矩陣在這個大的矩陣中從左到右,從上到下掃一遍,每一個小矩陣區塊內,你可以統計0到255每種顏色出現的次數,以此來表達這一個區塊的特徵。這樣通過這一次「掃描」,你得到了另一個由很多小矩陣區塊特徵組成的矩陣。
這一個矩陣比原始的矩陣要小吧?那就對了!
然後對這個小一點的矩陣,再進行一次上面的步驟,進行一次特徵「濃縮」,用另一個意思來講,就是把它抽象化。
最後經過很多次的抽象化,你會將原始的矩陣變成一個 1 維乘 1 維的矩陣,這就是一個數字。
而不同的圖片,比如一個貓,或者一個狗,一個熊,它們最後得到的這個數字會不同。於是你把一個貓,一個狗,一個熊都抽象成了一個數字,比如 0.34, 0.75, 0.23,這就達到讓計算機來直接辨別的目的了。
人臉,表情,年齡,這些原理都是類似的,只是初始的樣本數量會很大,最終都是通過矩陣將具體的圖像抽象成了數字,因為計算機只認識數字。
但是抽象的函數,會有所不同,達到的效果也會不同。我是菜鳥,對這個也很感興趣,有什麼不對請大佬指正。
推薦一篇幫助理解 CNN 的文章:
Understanding Convolutional Neural Networks for NLP你有沒有發現Facebook研發出了一種能夠在你的照片中識別出你朋友的神之魔力? 之前,Facebook讓你在照片里點擊你的朋友,並輸入他們的名字來標註出你的朋友。現在,只要你上傳了一張照片,Facebook就魔力般的為你標註出你的每一個朋友:
Facebook基於你之前的標註,自動標註出你照片中的人。我不確定這到底是有幫助性的還是非常陰險恐怖的。
這種技術被稱為人臉識別。你的朋友被標記了幾次之後,Facebook的演算法就能夠識別你朋友的臉。 這是一項非常驚人的黑科技——Facebook的人臉識別準確率達到了98%,幾乎與人類做的一樣好!讓我們來了解一下現代人臉識別是如何工作的! 但是,識別你的朋友這太容易了。 我們可以最大化擴展這項技術,來解決一個更具挑戰性的問題——區分Will Ferrell(著名演員)和Chad Smith(著名搖滾音樂家)!
一個是Will Ferrell,另一個是Chad Smith。我保證他們不是同一個人!
首先,要認識到人臉識別是由一系列的幾個相關問題組成的:
首先,找到一張圖片中的所有人臉
第二,對於每一張臉來說,無論光線明暗或面朝別處,它依舊能夠識別出是同一個人的臉。
第三,能夠在每一張臉上找出可用於與他人區分的獨特之處,比如說眼睛有多大,臉有多長等等。
最後,將這張臉的特點與已知的所有人臉進行比較,以確定這個人的姓名。
作為人類,你的大腦總是在一瞬間自動做出了這些判斷。實際上,人類在識別人臉這方面做得太好了,以至於他們會在日常物品中同樣去「找臉」:
計算機不能進行這種高級普遍化(generalization)(至少現在還不行...),所以我們必須分別教給他們,這個過程中的每一步是怎麼做到的。
我們需要構建一個流水線(pipeline),一個單獨完成每個步驟並把結果發送給下一個步驟的流水線。換句話說,我們會將好幾個機器學習演算法連接到一起:
一個基礎的探測人臉的流水線是怎樣工作的
人臉識別——分步講解
讓我們一步一步地解決這個問題。 對於每個步驟,我們將學習一個不同的機器學習演算法。 我並不會完全解釋每一個的演算法,否則這篇文章就變成了一本教科書。但你會學到每個步驟的精髓,以及如何在Python中使用OpenFace和dlib來構建一個你自己的面部識別系統。
第一步:找出所有的面孔
我們流水線的第一步是面部檢測。顯然,在我們區分人臉之前,我們必須要照片中找到他們才行!
如果你在過去10年里使用過相機,你可能已經見過正在運行中的面部檢測功能:
面部檢測是相機很好的一個功能。 當相機可以自動拾取人臉時,它可以確保相機在拍攝時對焦到所有人臉。 不過,我們使用它另有其因——我們需要找到想要傳遞到流水線下一步的圖像區域。
2000年初的時候, 當Paul Viola和Michael Jones 發明了一種能夠快速在廉價相機上運行的一種臉部檢測方法之後(譯者註:這種演算法也可以用來訓練檢測其他的物品,但是最經常還是被用於人臉的檢測,其英文名稱為Viola–Jones object detection framework),面部檢測在成為了主流。然而現在,更可靠的解決方案出現了。 我們將使用2005年發明的一種稱為「方向梯度直方圖(Histogram of Oriented Gradients)」的方法,或簡稱HOG。
要在一張圖片中找到臉,我們首先將圖像轉換為黑白,因為我們並不需要顏色數據來找到臉:
然後,我們將查看圖片中的每一個像素。 對於單個像素,我們要查看直接圍繞著它的像素:
我們的目標是找出並比較當前像素與直接圍繞它的像素的深度。 然後我們要畫一個箭頭來代表圖像變暗的方向:
看這個像素和它周圍的像素,圖像向右上方變得越來越暗。
如果你對圖片中的每一個像素重複這個過程,最終每個像素會被一個箭頭取代。這些箭頭被稱為梯度gradients,它們能顯示出圖像上從明亮到黑暗的流動過程:
這可能看起來非常隨機,但其實我們有非常好的理由用梯度來代替像素。如果我們直接分析像素,同一個人明暗不同的兩張照片將具有完全不同的像素值。但是如果只考慮亮度變化方向direction的話,明暗圖像將會有同樣的結果。這使得問題變得更容易解決!
但是保存每個像素的梯度太過細節化了,我們最終很有可能「一葉障目不見泰山missing the forest for the trees」。如果我們能從更高的角度上觀察基本的明暗流動,我們就可以看出圖像的基本規律,這會比之前更好。
為了做到這一點,我們將圖像分割成一些16x16像素的小方塊。在每個小方塊中,我們將計算出每個主方向上有多少個梯度(有多少指向上,指向右上,指向右等)。然後我們將用指向性最強那個方向的箭頭來代替原來的那個小方塊。
最終的結果是,我們把原始圖像變成了一個非常簡單的表達形式,這種表達形式可以用一種簡單的方式來捕獲面部的基本結構:
原始圖像被表示成了HOG形式,以捕獲圖像的主要特徵,無論圖像明暗度如何。
為了在這個HOG圖像中找到臉部,我們要所需要做的,就是找到我們的圖像中,與已知的一些HOG樣式中,看起來最相似的部分。這些HOG樣式都是從其他面部訓練數據中提取出來的:
使用這種技術,我們現在可以輕鬆地在任何圖片中找到臉部:
如果你想使用Python和dlib嘗試這一步,這些代碼顯示了如何生成和查看HOG圖像的表示。
第二步:臉部的不同姿勢
哇,我們把圖片中的臉部孤立出來了。 但現在,我們要處理的問題就是,對於電腦來說,面朝不同方向的同一張臉,是不同的東西:
人類可以很輕鬆地識別出到兩個圖片都是Will Ferrell,但電腦會認為這兩張圖片是兩個完全不同的人。
為了解決這一點,我們將試圖扭曲每個圖片,使得眼睛和嘴唇總是在圖像中的樣本位置(Sample Place)。 這將使我們在接下來的步驟中,更容易比較臉部之間的不同。
為此,我們將使用一種稱為臉部標誌點估計(Face Landmark Estimation)的演算法。 很多方法都可以做到這一點,但這次我們會使用由Vahid Kazemi和Josephine Sullivan在2014年發明的方法。
這一演算法的基本思想是,我們找到人臉上普遍存在的68個特定點(稱為Landmarks)——下巴的頂部,每隻眼睛的外部輪廓,每條眉毛的內部輪廓等。接下來我們訓練一個機器學習演算法,能夠在任何臉部找到這68個特定點:
我們將在每一張臉上定位的68個Landmarks。這張照片是由在OpenFace工作的CMU的Brandon Amos創造的。
這是在測試圖片上定位68個標誌點的結果:
友情提示:你也可以使用這一技術來實現自己的Snapchat實時3D臉部過濾器!
現在,我們知道了眼睛和嘴巴在哪兒,我們將圖像進行旋轉,縮放和切變,使得眼睛和嘴巴儘可能靠近中心。我們不會做任何花哨的三維扭曲,因為這會讓圖像失真。我們只會使用那些能夠保持圖片相對平行的基本圖像變換,例如旋轉和縮放,(稱為仿射變換):
現在無論臉部怎樣扭曲變形,我們都能將眼睛和嘴巴向中間挪動到大致相同的位置。這將使我們的下一步更加準確。
如果你想自己使用Python和dlib來嘗試完成這一步的話,這裡有一些代碼幫你尋找臉部標誌點和圖像變形。
步驟3:給臉部編碼
現在我們要面臨最核心的問題了——如何區分臉部。這才是事情變得非常有趣的地方!
最簡單的人臉識別方法,就是直接把我們在步驟2中發現的未知人臉,與我們已經標註了人臉圖片作比較。當我們發現未知的面孔與一個以前標註過的面孔看起來及其相似的時候,它必須是同一個人。這似乎是一個很好的主意,對嗎?
實際上這種方法有一個巨大的問題。像Facebook這種擁有數十億用戶和數萬億張照片的網站,是不可能去循環比較每張先前標記的臉的,這浪費的時間太長了。他們需要在毫秒內識別人臉,而不是幾個小時。
我們需要的是一種從每張人臉上都可以提取一些基本特性的方法。然後,我們可以用同樣的方式測量未知的面孔,並找到與已知的臉最相近的測量。例如,我們可以測量每個耳朵的大小,眼睛之間的間距,鼻子的長度等。如果你曾經看過像CSI這樣的犯罪類型的電視劇,那麼你就知道我在說什麼了。
測量人臉的最可靠的方法
好的,那麼我們應該測量面部的哪些數值,來建立我們的已知臉部資料庫呢?耳朵的大小?鼻子的長度?眼睛的顏色?還有什麼?
事實證明,對於我們人類來說一些顯而易見的測量值(比如眼睛顏色),並沒有對計算機產生太大的影響。研究人員發現,最準確的方法是讓計算機自己找出測量值並自己收集。深度學習比人類更好地了解臉部的哪些部分是重要的測量值。
所以,解決方案是訓練一個深度卷積神經網路(就像我們在第3章做的那樣)。但是,並不是像上次那樣訓練我們的網路來識別圖片對象,我們將訓練它為臉部生成128個測量值。
每次訓練要觀察3個不同的臉部圖像:
1.載入一張已知的人的面部訓練圖像
2.載入同一個人的另一張照片
3.載入另外一個人的照片
然後,演算法查看它自己為這三個圖片生成的測量值。再然後,它稍微調整神經網路,以確保它為第1張和第2章生成的測量值接近,而第2張和第3張生成的測量值略有不同。
在為幾千個不同的人的數百萬圖像重複該步驟數百萬次之後,神經網路學習了如何可靠地為每個人生成128個測量值。同一個人的任何十張不同的照片應該給出大致相同的測量值。
機器學習專業人士把每個面孔上的128個測量值稱為「嵌入(Embedding)」。將複雜的原始數據(如圖片)縮減為可由計算機生成的一個數列的方法在機器學習(特別是語言翻譯)中出現了很多次。我們正在使用的這種方法是由Google的研究人員在2015年發明的,但其實這是許多類似的方法之一。
給我們的臉部圖像編碼
這個通過訓練卷積神經網路來輸出臉部嵌入的過程,需要大量的數據和計算機應用。即使使用昂貴的Nvidia Telsa顯卡,它也需要大約24小時的連續訓練,才能獲得良好的準確性。
但一旦網路訓練完成,它可以生成任何面孔的測量值,即使它從來沒有見過這些面孔!所以這種訓練只需一次即可。幸運的是,OpenFace上面的大神已經做完了這些,並且他們發布了幾個訓練過可以直接使用的網路,。謝謝Brandon Amos和他的團隊!
所以我們需要做的,就是通過他們的預訓練網路來處理我們的臉部圖像,以獲得128個測量值。這是我們測試圖像的一些測量值:
那麼,這128個數字到底測量了臉部的哪些部分?我們當然不知道,但是這對我們並不重要。我們關心的是,當看到同一個人的兩張不同的圖片時,我們的網路需要能得到幾乎相同的數值。
如果你想自己嘗試這個步驟,OpenFace提供了一個lua腳本,它可以生成一個文件夾中所有圖像的嵌入,並將它們寫入csv文件。點此查看如何運行。
第4步:從編碼中找出人的名字
最後這一步實際上是整個過程中最簡單的一步。我們要做的就是找到資料庫中,與我們的測試圖像的測量值最接近的那個人。
你可以通過任何基本的機器學習分類演算法來達成這一目標。我們並不需要太花哨的深度學習技巧。我們將使用一個簡單的線性SVM分類器,但實際上還有很多其他的分類演算法可以使用。
我們需要做的是訓練一個分類器,它可以從一個新的測試圖像中獲取測量結果,並找出最匹配的是哪個人。分類器運行一次只需要幾毫秒,分類器的結果就是人的名字!
所以讓我們試一下我們的系統。首先,我使用Will Ferrell, Chad Smith 和 Jimmy Falon每人20張照片的嵌入來訓練分類器:
嗯…就是這些訓練數據!
接下來,我在YouTube著名的Will Ferrell和Chad Smith的視頻的每一幀上運行這個分類器:
它真的有效!它在不同的姿勢的臉部依然有效- 甚至是側臉!
你自己做一遍
讓我們回顧一下我們的步驟:
1.使用HOG演算法給圖片編碼,以創建圖片的簡化版本。使用這個簡化的圖像,找到圖像中看起來最像通用HOG面部編碼的部分。
2.通過找到臉上的主要標誌點,找出臉部的姿態。一旦我們找到這些標誌點,就利用它們把圖像扭曲,使眼睛和嘴巴居中。
3. 把上一步得到的面部圖像放入到神經網路中,神經網路知道如何找到128個特徵點測量值。保存這128個測量值。
4.看看我們過去測量過得的所有臉部,找出哪個人的測量值和我們的臉部測量值最接近。這就是你要找的匹配的人!
現在你知道這一切都是如何運行的了,這裡是如何使用OpenFace在你自己的電腦上運行整個人臉識別系統的說明.
歡迎關注巡洋艦的深度學習實戰課程, 手把手帶你進行深度學習實戰, 課程涵蓋機器學習,深度學習, 深度視覺, 深度自然語言處理, 以及極具特色的深度強化學習,看你能不能學完在你的領域跨學科的應用深度學習驚艷你的小夥伴,成為身邊人眼中的大牛。
學習中......感覺看看mmlab的人臉相關paper就可以解決大部分的疑惑了(當然是要看懂啦)。
像人臉身份,表情,年齡,性別識別這些分類問題就直接利用CNN(提取特徵+分類)就可以十分簡單粗暴並做的很好,當然需要一些人臉檢測+對齊+裁剪等預處理或至少是人臉檢測+Data Augmentation,and各種風騷的網路結構和超大資料庫。人臉驗證的話除了人臉身份識別,再加上個verification loss就很強了,本質上還是利用CNN的提取特徵能力和優化目標的設計。又或者,像騰訊那樣有比別人更多數據,更fancy的網路結構,就能做的更好。
接下來人臉對齊其實就是人臉特徵點檢測和仿射變換。特徵點檢測其實opencv, dlib都有68個特徵點檢測。mmlab第一次用CNN做人臉5點檢測,效果棒,並貌似已經用於各種相機app特效。原理還是看paper比較實在。
人臉檢測看上去是一個回歸問題,回歸出四個坐標點的框框,但好多都是把檢測當成分類問題做了吧,比如滑動窗口和region proposal,跟ground truth的IoU大的就看成是人臉,小的是非人臉,用CNN提取特徵然後訓練出一個分類器看是不是人臉。人臉檢測有現成的非深度學習的工具,貌似object detection的各種RCNN比較火。
這個問題太大,一兩句話說不清楚,建議自己看深度學習相關論文和介紹。
對工程研究,原理(How)往往來自於別的領域,CNN的圖像識別是啟發自視覺神經(一種被研究的最透徹的神經結構)研究的發現,人民發現人的視覺就是這麼工作的,然後試著用它在機器上實現,當有足夠快的電腦和多的數據時,人們興奮的發現可以做高質量的圖像識別。
原理的解釋通常要晚一些。但是抽象的解釋並不難:把信息一層層的抽象,最底下是像素,中間是各種特徵,越往上越抽象(邊,圓,鬍子,高鼻樑...)。
研究科學不光是看論文:你拿一副照片貼著眼睛看,慢慢拿遠大概可以幫助理解。
說一點 圖像經常用卷積網路是因為比如
1 1 0
1 1 0
0 0 0
和
0 0 0
0 1 1
0 1 1
是一種東西,用普通的演算法可能這是倆東西,卷積處理這倆就一樣了
怎麼算,是數學
為什麼正確,是玄學對一幅圖像,利用卷積神經網路進行特徵提取,具體是,採樣層和池化層交替進行,保證了計算量少,有效特徵充分,層數越多,提取的特徵越具有全局性,識別率越高。
同小白,深度學習的方法可能不好理解。
個人建議如果想理解這個過程,可以回去看一下傳統的方法,基本上就是卷積核,特徵點幾個東西,隨便看一本數字圖像的書看個大概就能明白。
傳統的那套效果現在比不上深度學習的方法但是有理論支持,方便理解。
可以看下Google facenet的論文,GitHub上面還有源碼。facenet論文後面的參考文獻也看一下,幾乎脈絡就理清了。知乎上面只能講點科普性的概念,建議直接去看論文。
最簡單的情況可以是input layer + convolutional layer(提取features)+flattening + maxpooling。可以參照這個連接的具體演示:http://scs.ryerson.ca/~aharley/vis/conv/flat.html
知乎上已經有很多資料了,貼一個 @機器之心 以前的回答,我覺得應該可以幫助到題主。
CNN(卷積神經網路)是什麼?有入門簡介或文章嗎? - 知乎四個字:深度學習。
多看論文,卷積神經網路學起來也並不是很難的。結合相關代碼學起來比較方便一些
推薦閱讀:
※NLP(自然語言處理)界有哪些神級人物?
※微軟的 Cortana 語音助手說話語調極為逼真像人,這是怎麼做到的?
※如果你是圖靈測試者,你會問機器什麼問題?
※機器學習、深度學習等人工智慧技術在工業界的應用狀況是怎樣的?人力供需狀況如何?
※CVPR 2017 有什麼值得關注的亮點?