1. 程式人生 > >人臉識別哪家強?四種API對比,揭曉開發人臉識別用到發的技術和工具

人臉識別哪家強?四種API對比,揭曉開發人臉識別用到發的技術和工具

人臉識別究竟如何工作?

深入分析之前,首先讓我們探究一下人臉識別的工作原理。

Viola-Jones的人臉識別

2001年,Paul Viola和Michael Jone開始了計算機視覺的革命,當時的人臉識別技術並不成熟,識別準確度較低,速度也很慢。直到提出了Viola-Jones人臉識別框架後,不僅成功率大大提高,而且還能實施進行人臉識別。

自從上世紀90年代開展了各項人臉識別、目標識別挑戰賽,這類技術得到了迅猛發展。

在這裡給大家推薦一個python系統學習q群:250933691有免費開發工具以及初學資料,(人工智慧,資料分析,爬蟲,神經網路)每天有老師給大家免費授課,歡迎一起交流學習

深度卷積神經網路

2010年,ImageNet視覺識別挑戰賽開始舉辦,前兩年,大部分參賽隊伍都用Fisher Vectors和支援向量機的結合。但2012年,一切都變了。

多倫多大學的團隊(Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton)第一次在目標物體識別任務上使用了深度卷積神經網路,並拿到冠軍。他們使用的方法錯誤率為15.4%,而第二名的錯誤率為26.2%。到了2013年,前5名的隊伍全部都開始用深度卷積神經網路。

所以,神經網路到底怎麼工作的呢?下面的視訊會給你答案:

亞馬遜、谷歌、IBM、微軟現在在用什麼?

目前為止,各大公司仍然使用深度卷積神經網路或者結合其他深度學習技術進行人臉識別。

亞馬遜:aws.amazon.com/cn/rekognition/faqs/

谷歌:www.youtube.com/watch?v=OcycT1Jwsns&feature=youtu.be&t=2m41s

IBM:www.ibm.com/cloud/watson-visual-recognition

微軟:docs.microsoft.com/en-us/azure/cognitive-services/face/overview

這四種工具看起來都差不多,但是結果還有些許不同。首先我們從價格看起。

價格

亞馬遜、谷歌和微軟三家的價格模式類似,都是用量越多收費越少。但是IBM不同,當你的免費額度用完後,每個API介面的價錢都是一樣的。四種工具中,微軟的免費額度是最高的,每月可處理30000張圖片。

價格對比

現有以下三種情況:

A:小型創業公司每月處理1000張圖片

B:數字生產商每月處理10萬張圖片

C:資料中心每月處理1000萬張圖片

動手試試

本文所用程式碼可在我的GitHub中找到:github.com/dpacassi/face-detection

建立影象資料集

要做人臉識別,首先就要建立資料集。本文所用到的影象是從pexels網站上下載的,你可以直接到我的GitHub中下載。

編寫基礎測試框架

說是“框架”,實際上我的自定義程式碼只有兩種類別。然而,這兩種類別很容易地就幫我分析了原始影象資料,在不同的任務上也只需要少量程式碼。

FaceDetectionClient中記錄了圖片儲存的資訊、四種工具的細節以及所有處理過的影象。

比較四種SDK

以下是四種工具支援的語言:

inter-rater 可信度

在讓計算機進行人臉識別之前,我先記錄下了自己所觀察到的圖片中人臉數量。同時,我還找了三位同時對圖片進行識別。

什麼是人臉?

我在進行手動標記時,只要露出四分之一臉就算一個人臉,而我的同事們有的會把不明顯的也算作人臉,或者看到眼睛、鼻子就算一張臉。所以每個人的判斷標準不同。

對這張圖,我們四人有不同的結論,分別是10張、13張、16張和16張人臉。所以我打算取平均值,14。

比較結果

圖中可以看出,微軟智慧達到17.55%的人臉檢測率,為什麼成功率如此低?首先,圖片資料集中的確有一些故意刁難識別器的影象,另外要知道,機器的能力比人類還差得遠,想提高人臉識別的效率,還有很大的進步空間。

雖然亞馬遜的工具能檢測出最多的人臉,但是谷歌和微軟的處理時間明顯更快。

另外,在人臉相對較小的圖片中,同樣還是亞馬遜表現得更好:

在這張圖片中,亞馬遜檢測出了10個人臉,而谷歌為4,IBM和微軟都是0。

不同角度和不完整人臉

看了上面的例子,可能會覺得IBM不中用。IBM的作用在普通圖片上一般般,但是在難度更大的圖片上,IBM的能力就很大了。尤其是在不常見的角度進行人臉識別或者殘缺人臉識別。例如下面三張圖片的人臉只有IBM識別了出來:

邊界框

沒錯,各家的邊界框也有差別。亞馬遜、IBM和微軟都會返回只含有人臉的邊界框。而谷歌不光會圈起來人臉,會連帶整個頭部一起選中。

谷歌

微軟

看出差別了嗎?

誤報率

雖然我的資料集很小(只有33張照片),但是有兩張圖沒有模型識別出人臉。

亞馬遜和谷歌都只識別出了上圖中紋身中的頭像,而微軟識別失敗。只有IBM正確識別到了前面吉他手的人臉。恭喜IBM!

這張照片,谷歌在同一區域檢測出了兩張人臉。莫非看到了人眼看不到的東西?(細思極恐)

結語

雖然每種工具都有自己的有缺點,但總的來說,亞馬遜、谷歌和IBM還不錯,微軟就很一般了,它的分數最低。

在這裡給大家推薦一個python系統學習q群:250933691有免費開發工具以及初學資料,(人工智慧,資料分析,爬蟲,神經網路)每天有老師給大家免費授課,歡迎一起交流學習