自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

真會玩,程序員用AI認雙胞胎兒子!“這個樹莓派版人臉識別系統(tǒng),沒我認得準(zhǔn)”

人工智能 人臉識別
本文介紹了外國程序員使用軟件利用AI系統(tǒng)Raspberry Pi識別雙胞胎兒子的實驗,并試圖探究在面部識別方面,機器的發(fā)展是否已經(jīng)超過人類大腦。

到了 2021 年,人們普遍認為,通過學(xué)習(xí)算法和人工智能研究,機器在很多方面都優(yōu)于人類。長期以來,機器一直主導(dǎo)著制造業(yè)和供應(yīng)鏈領(lǐng)域,甚至開始涉足更復(fù)雜的任務(wù),比如自動駕駛,甚至撰寫高難度綜合類文章。但是,在面部識別方面,機器的發(fā)展真的已經(jīng)超過人類大腦了嗎?

13 年前,當(dāng)我的同卵雙胞胎兒子出生時,我和妻子很容易認出哪一個是 Nicolas,哪一個是 Alexander。在舊金山加利福尼亞太平洋醫(yī)學(xué)中心的新生兒重癥監(jiān)護室(NICU)陪伴了他們 8 周后,我們知道如何將他們的個人行為與名字相匹配。我們很早就學(xué)到了大多數(shù)同卵雙胞胎父母都會掌握的東西:一個人是誰,不僅取決于他的長相,還取決于他走路、說話的方式,以及在與世界互動時的各種行為舉止的差異。處理這個廣泛的數(shù)據(jù)集使人類能夠立即識別出我們所認識的人,包括同卵雙胞胎。

[[381825]]

圖|Alexander 和 Nicolas

隨著從識別罪犯到幫助我們購物等各個方面的廣泛應(yīng)用,面部識別在新聞中被稱為“矩陣式的銀彈”(Matrix-like silver bullet),我一直在想,當(dāng)數(shù)據(jù)集只呈現(xiàn)出非常微小的差異時,機器在辨別人臉方面能夠做到什么地步?比如識別同卵雙胞胎。

深入探討差異

隨著兒子們一天天長大,我們詳細地討論了他們基因組成的獨特性質(zhì)——本質(zhì)上說,他們是從同一個受精卵中克隆而來的(注:這有一個頻率非常高的“克隆”(“coolness”)因素,因為他們是《星球大戰(zhàn)》中克隆人軍隊的忠實粉絲)。對他們來說,他們是完全相同的人,從相同的藍圖中創(chuàng)造出來。當(dāng)然,它們之間是有區(qū)別的,這些區(qū)別使得我偶爾會將他們弄混淆,而且我猜測,機器也會分不清。相同的 DNA 是一回事,但是基因的內(nèi)在表現(xiàn)和所處環(huán)境的影響,在人類隨著時間變化和發(fā)展中起著重要作用。

舉個例子,我最近購買了一部帶有指紋識別器的手機,我問我的兒子們是否想做一個小實驗:一個將指紋錄入,然后另一個用自己的手指去解鎖,這顯然是行不通的。事實證明,多種環(huán)境因素(其中只有一種是基因)驅(qū)使了子宮內(nèi)的“指紋”形成,因此雙胞胎通常具有不同的指紋。

為了幫助回答有關(guān)“人類或機器誰更擅長識別同卵雙胞胎”的問題,我決定設(shè)計一個比指紋讀取器稍微復(fù)雜的實驗,并邀請我的“小科學(xué)家們”(我的兒子)接受培訓(xùn)以提供幫助。

構(gòu)建實驗

對于這個項目,我想構(gòu)建一個盡可能便宜的計算機系統(tǒng),該系統(tǒng)能夠運行執(zhí)行和訓(xùn)練機器學(xué)習(xí)與面部識別模型所需的所有軟件。我選擇樹莓派(Raspberry Pi)是因為它具有極高的成本效益,其外圍支持并且能夠運行標(biāo)準(zhǔn)的 Linux 發(fā)行版以及所有編譯軟件所必需的工具。

我現(xiàn)在已經(jīng)擁有一些用于其他項目的 Raspberry Pi,因此我測試了三個,看哪種最適合該應(yīng)用程序。Pi Zero 可以正常工作,但在分析視頻提要的幀并編譯所有必需的軟件時,它耗時 48 小時(是的,編譯該軟件需要 2 天)。對于任何想要運行類似環(huán)境的人,我強烈推薦 Pi 4b(8GB 型號),因為它具有更快的處理器,多個內(nèi)核和擴展內(nèi)存。我們測試的三個 Pi 的詳細細節(jié)和形狀因子如下所示。該設(shè)置過程的其余部分假定使用 Pi 4b(8GB)。

圖 | Pi Zero,Pi 3b+ 和 Pi 4b- 刻度鉛筆

這個項目還需要一個網(wǎng)絡(luò)攝像頭。我已經(jīng)有一個 Logitech USB 網(wǎng)絡(luò)攝像頭,該攝像頭運行良好,無需安裝驅(qū)動程序。任何現(xiàn)代的 Logitech 或類似的網(wǎng)絡(luò)攝像頭都可以使用。

設(shè)置:步驟 1

設(shè)置Pi的第一步是將 Raspberry Pi OS 閃存到 micro SD 卡上并進行一些基本配置。為此,將 Raspberry Pi 成像器下載并安裝到工作站上。安裝完成后,插入 micro SD 卡(通常使用適配器),啟動成像儀,選擇操作系統(tǒng)和 SD 卡,然后選擇“寫入(Write)”。對于 OS(操作系統(tǒng)),請選擇 Raspberry PI OS(32位),這是 Debian Linux 的端口,具有設(shè)置機器學(xué)習(xí)環(huán)境所需的一切要素。SD 卡寫入并驗證后,請勿將其移除,將其重新插入 Pi 之前,還需要進行三個附加配置:設(shè)置 WiFi,SSH 和視頻輸出。

  •  WiFi:啟動 Pi 時,需要將其連接到本地網(wǎng)絡(luò)。創(chuàng)建一個名為 wpa_supplicant.conf 的文件,并將其放在 SD 卡的頂層。確保文件格式為純文本,并以 .conf 結(jié)尾。保存文件之前,添加你地理位置的兩個字母的國家/地區(qū)代碼以及 WiFi 網(wǎng)絡(luò)的 SSID 和 PSK(保留雙引號)。

  •  SSH:由于我們將 Pi 設(shè)置為無頭運行(沒有監(jiān)視器),因此我們需要一種連接到它進行管理和配置的方法——使用 SSH。要啟用 Linux SSH 守護程序并自動進行,請將一個名為 ssh 的文件放置在 SD 卡的頂層,該文件不包含任何內(nèi)容且沒有文件擴展名。
  •  視頻:我們將在沒有顯示器連接的情況下啟動 Pi,但仍希望在對其進行遠程控制時啟用視頻,因此即使沒有被檢測到,我們也必須強制 HDMI 處于活動狀態(tài)。編輯 SD 卡頂層的名為 config.txt 的文件,然后取消 hdmi_force_hotplug = 1 行的注釋。

現(xiàn)在彈出 micro SD 卡,將其插入 Pi,連接到電源并打開。大約一分鐘后,Pi 應(yīng)已完全啟動,并應(yīng)連接到你的 WiFi 網(wǎng)絡(luò)。檢查 WiFi 路由器以獲取 Pi 的 IP 地址。

現(xiàn)在,通過打開終端(在 Mac 上)或使用 Putty(在 Windows 上)和 SSH 將 IP 地址作為用戶名“Pi”(默認密碼為“raspberry”)來驗證你可以連接到 Pi。

設(shè)置:步驟 2

安裝過程的第二步是安裝和編譯所有必需的軟件。為了執(zhí)行面部識別任務(wù),我決定使用 OpenCV(開源計算機視覺庫)和 Dlib。OpenCV 和 Dlib 具有許多優(yōu)化算法,包括面部識別,已在工業(yè)界和學(xué)術(shù)界廣泛應(yīng)用,受到了良好的尊重和支持,并且具有用于 Python 編程語言的接口,這些接口可用于驅(qū)動模型訓(xùn)練和識別程序?;ヂ?lián)網(wǎng)上有許多在 Raspberry Pi 上設(shè)置 OpenCV 和 Dlib 的示例,但是我找不到任何簡潔而全面的內(nèi)容,因此創(chuàng)建了一個簡單的包裝程序來安裝所有的必備軟件并編譯 OpenCV 和 Dlib 源代碼。要下載和執(zhí)行此包裝程序,請執(zhí)行以下操作:

  •     以 pi 用戶的身份通過 SSH 連接到 Pi,并確保你位于 pi 用戶的主目錄中:cd~
  •     在Github上克隆我們的Raspberry Pi面部識別存儲庫的副本:git clone https://github.com/tomalessi/pi-facial-recognition.git
  •     執(zhí)行安裝腳本(大約需要 1 個小時):pi-facial-recognition / pi-setup.sh

設(shè)置:步驟 3

Pi 現(xiàn)在已經(jīng)準(zhǔn)備好拍照和訓(xùn)練面部識別模型。為此,我們需要查看 Pi 上的窗口環(huán)境,以便通過 VNC Viewer 連接到它。你需要在 Pi 上啟用 VNC 服務(wù)器,并在你的工作站上下載一個客戶端。請按照以下步驟操作:

  •  Pi 設(shè)置:SSH 到 PI,執(zhí)行命令 sudo raspi-config,向下滾動到界面選項 →VNC 并啟用它。啟用此功能后,你需要重新啟動。
  •  工作站設(shè)置:從 RealVNC 下載并為你的平臺安裝 VNC Viewer(免費下載)。安裝完成后,使用其 IP 地址設(shè)置從 VNC Viewer 到 Pi 的新連接,并確保你可以登錄。成功登錄后,你將會看到 Raspberry Pi OS 的背景。

進行面部識別

面部識別過程涉及 3 個步驟:拍照,訓(xùn)練模型,然后分析實時視頻。這 3 個任務(wù)都可以使用 face-req.py Python 程序執(zhí)行,該程序已從上面的 Github 存儲庫中彈出(注意:這是第一個修訂版,沒有很多錯誤處理功能-如果你希望我們進行改進,請?zhí)峤?PR)。拍攝照片,訓(xùn)練模型和分析視頻的步驟如下所示。這三個假設(shè)你都已通過 VNC 登錄到 Pi,并打開了一個終端窗口。

  •  通過執(zhí)行以下命令并在觀看實時視頻后按空格鍵來拍照:python pi-facial-recognition / face-req.py -c photo -n Tom 通過將 -n 參數(shù)替換為另一個參數(shù)來繼續(xù)為他人拍照名稱。在終端窗口中按 ctrl + c 退出。
  •  訓(xùn)練模型:python pi-facial-recognition / face-req.py -c train。分析每張照片,然后將結(jié)果序列化以用于分析視頻時,大約需要 10 秒鐘。
  •  分析視頻并應(yīng)用面部識別模型:python pi-facial-recognition / face-req.py -c analyze。大約十秒鐘后,應(yīng)該開始直播視頻。識別出的所有面孔將被標(biāo)記為該人的名字,否則面孔將被標(biāo)記為無法識別。按“q”退出。
  •  清理環(huán)境并重新開始,請執(zhí)行以下操作:python pi-facial-recognition / face-req.py -c clean。

實驗結(jié)果

完全設(shè)置好環(huán)境后,我拍攝了 3 張自己的頭像,3 張 Nicolas 的頭像和 3 張 Alexander 的頭像,然后用這些照片訓(xùn)練面部識別機器學(xué)習(xí)系統(tǒng)(一張正面,一張向左,另一張向右)。在執(zhí)行這些測試的當(dāng)天,除了當(dāng)前照片外,沒有對任何照片進行任何修正。訓(xùn)練完系統(tǒng)后,我們輪流站在鏡頭前確定機器是否可以識別。

注意:我們嘗試了另一種實驗,即以不同角度拍攝 10 張照片,但這并沒有改變結(jié)果,可能是因為我們使用的是面向梯度直方圖(HOG)的面部識別方法,它只適用于正面照片。

結(jié)果:測試 1

測試 1 是我本人和 Alexander,機器識別正確。

結(jié)果:測試 2

測試 2 是我和 Nicolas。機器再次正確識別了。我開始思考自己最開始的猜測是錯誤的——也許機器會勝利。

結(jié)果:測試 3

測試 3 是本次的“重頭戲”——我們?nèi)齻€人一起。然后機器故障了!顯然,沒有兩個 Nicolas。我們發(fā)現(xiàn),如果孩子們四處走動,識別會來回切換,但是機器很少能同時識別雙胞胎。不科學(xué)的是,大約有 5% 的時間,它能同時正確識別雙胞胎和我自己。

結(jié)果:測試 4

我想看看機器學(xué)習(xí)模型對 3 歲時的雙胞胎照片的識別效果如何——照片被舉到鏡頭前。我必須給這臺機器一些肯定,它確實在照片中(第一次)正確地識別了 Nicolas(雖然沒有識別出 Alexander),我把照片的方向和距離在鏡頭上稍微移動了一下,然后它錯誤地識別了 Alexander,無法識別 Nicolas。不過,這已經(jīng)是很好的結(jié)果,畢竟從 3-10 歲,孩子們的臉已經(jīng)發(fā)生了很多變化。

Alexander(左),Nicolas(右)

Alexander(左),Nicolas(右)

結(jié)果:測試 5

我嘗試了一張較新的彩色照片(孩子可能已經(jīng) 4 歲),機器再次出現(xiàn)故障。它錯誤地識別出兩個 Nicolas。

對于最后的測試,我想看看這些照片的年齡限制在機器完全無法識別之前應(yīng)該為多少。我用了一張雙胞胎一歲左右的照片。機器正確地識別了我,但沒有識別出雙胞胎。

注意:即使是一張 12 歲的靜態(tài)照片,我和我妻子也很容易馬上分辨雙胞胎。

實驗結(jié)論

這里的第一個結(jié)論是顯而易見的。一個人花 75 美元就能構(gòu)建一個能夠運行現(xiàn)代面部識別和機器學(xué)習(xí)算法的功能完備的計算機系統(tǒng)(如果你不介意有點慢,有的甚至只需 10 美元)。暫且不提更復(fù)雜的識別雙胞胎的任務(wù),這臺機器在現(xiàn)場視頻中識別非雙胞胎的成功率為 100%。該系統(tǒng)訓(xùn)練的每一個非雙胞胎都能獲得 100% 的識別成功率(我們做了其他非雙胞胎測試,這里沒有顯示)。同時,出于個人隱私方面的考慮,這確實讓我躊躇不前。這項技術(shù)功能強大,非常容易使用,而且很可能部署在我們?nèi)粘I钪袩o法預(yù)料的地方——我們需要確保這項技術(shù)不會被濫用。

第二個結(jié)論是,在我們生命的前 13 年中,我們的面部特征會持續(xù)發(fā)生巨大變化,這使得年輕人的面部識別變得困難。該機器能夠從舊照片中識別雙胞胎,即使他們還在“蹣跚學(xué)步”,也給我留下了深刻的印象。老實說,這太棒了!除了我和我的妻子,沒有人可以看我們孩子的舊照片并確定誰是誰。

最后,最重要的是,我觀察到機器很難識別同卵雙胞胎,即使是像我孩子這樣有明顯差異的雙胞胎。該系統(tǒng)識別時確實很費勁,尤其是當(dāng)一對雙胞胎或一個在視頻幀內(nèi)移動時–經(jīng)常出現(xiàn)標(biāo)識錯誤。從這些簡單的測試中,我們得出結(jié)論:就目前而言,人類在面部識別方面比機器要好得多。這不足為奇,因為 600 萬年來我們一直在進化和完善我們的感官。我不能告訴你為什么我能輕易地分辨出我的孩子之間的區(qū)別,我只知道這很容易。機器或許終將趕上我們,但不是現(xiàn)在。

下一步的打算

我的兒子們想在 Pi 上內(nèi)置一些其他功能,以控制門上的鎖,或在他們進入臥室時打招呼,但是根據(jù)我們的結(jié)果,我們首先需要提高Pi的能力來區(qū)分他們(以免一方接觸到另一方的寶藏)。

為了提高系統(tǒng)的準(zhǔn)確性,我想嘗試一些不同的面部識別技術(shù),比如利用 Dlib 支持的卷積神經(jīng)網(wǎng)絡(luò)(CNN)(盡管 Raspberry Pi 受其計算能力的限制),或者讓 Pi 調(diào)用 GCP、AWS 或 Azure 中的公共服務(wù)進行面部識別。

學(xué)術(shù)界對雙胞胎面部識別的研究也越來越多,因此技術(shù)肯定會繼續(xù)改進,以解決我們在此處指出的一些現(xiàn)有缺陷——我和我的兒子們肯定會關(guān)注這個領(lǐng)域。 

 

責(zé)任編輯:龐桂玉 來源: AI數(shù)據(jù)派
相關(guān)推薦

2015-08-21 10:12:51

Windows HelWindows 10

2019-04-26 13:26:00

預(yù)測股票深度學(xué)習(xí)股票

2023-09-14 14:58:28

2017-03-13 09:10:53

科技新聞早報

2019-10-16 22:14:30

數(shù)字雙胞胎技術(shù)物聯(lián)網(wǎng)IOT

2023-09-08 16:41:53

AI模型

2018-03-21 05:59:19

物聯(lián)網(wǎng)數(shù)字化IoT

2020-08-19 09:25:32

Python人臉識別人工智能

2019-06-25 13:47:50

人臉識別AI人工智能

2021-11-03 10:49:33

人臉識別人工智能技術(shù)

2018-05-11 14:10:17

Python人臉識別

2019-04-25 13:30:14

Linux文件分身

2022-03-02 11:31:56

數(shù)字孿生建筑物聯(lián)網(wǎng)

2019-03-24 20:30:18

樹莓派Linux

2021-06-28 10:06:21

開源文本識別pyWhat

2016-11-29 07:53:57

科技新聞早報計算機

2020-08-13 10:01:49

工具代碼開發(fā)

2022-05-06 10:21:22

Python人臉識別

2019-05-31 08:55:24

2021-03-09 11:20:05

人臉識別人工智能AI
點贊
收藏

51CTO技術(shù)棧公眾號