0
本文作者: AI研習(xí)社-譯站 | 2018-08-24 10:44 |
本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 Use your eyes and Deep Learning to command your computer?—?A.I. Odyssey part. 2,作者為 Julien Despois。
翻譯 | 陶玉龍、老趙 校對(duì) | Lamaric 審核 | Lamaric
你有沒(méi)有過(guò)這樣的經(jīng)歷,當(dāng)你在吃東西的時(shí)候,發(fā)現(xiàn)自己沒(méi)有多余的手來(lái)調(diào)節(jié)電影的音量,或者調(diào)節(jié)屏幕的亮度?在本文,我們將看到如何使用最先進(jìn)的人工智能技術(shù)來(lái)解決這個(gè)問(wèn)題,通過(guò)眼球運(yùn)動(dòng)把相應(yīng)命令下達(dá)到你的計(jì)算機(jī)。
注:在你閱讀完本文之后,我邀請(qǐng)你繼續(xù)閱讀那些后續(xù)專(zhuān)為實(shí)現(xiàn)細(xì)節(jié)而寫(xiě)的帖子(https://medium.com/@juliendespois/a-i-odyssey-part-2-implementation-details-f126f18bd320#.t4gpenon3)。
引言
我們想要實(shí)現(xiàn)什么
這個(gè)項(xiàng)目的目標(biāo)是用我們的眼睛來(lái)觸發(fā)計(jì)算機(jī)上的動(dòng)作。這是一個(gè)非常綜合的問(wèn)題,所以我們首先需要明確我們想要實(shí)現(xiàn)的內(nèi)容。
例如,我們可以檢測(cè)眼睛什么時(shí)候朝向特定的角落,然后從那個(gè)角度進(jìn)行工作。然而,這是非常有限的,并不是很靈活,加上它需要我們對(duì)角落組合。所以作為替代,我們使用遞歸神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)識(shí)別完整的眼球運(yùn)動(dòng)。
數(shù)據(jù)
我們不想使用外部數(shù)據(jù)集進(jìn)行工作,作為替代的,我們自己制作數(shù)據(jù)集。我們?cè)谀P偷挠?xùn)練和預(yù)測(cè)階段用了相同的數(shù)據(jù)源以及處理方式,這對(duì)于我們這個(gè)項(xiàng)目而言具有非常大的益處。
毫無(wú)疑問(wèn),從我們的眼睛中提取信息的最有效的方法是使用專(zhuān)用的特寫(xiě)鏡頭。借助于這樣的硬件,我們可以直接跟蹤瞳孔中心,從而做出各種各樣的令人驚嘆的數(shù)據(jù)資料。
我不想使用外部相機(jī),所以我決定使用我筆記本電腦破舊的720P攝像頭。
工作流程
在我們直接進(jìn)入技術(shù)討論之前,讓我們回顧一下這個(gè)過(guò)程的步驟。這里是我提出的流程:
用攝像頭拍一張照片并找到眼睛。
對(duì)圖像進(jìn)行預(yù)處理并提取重要的特征(你是想說(shuō)是利用神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)嗎?)。
保持最后幾幀特征提取的運(yùn)行記錄。
基于運(yùn)行記錄實(shí)現(xiàn)眼球動(dòng)作的預(yù)測(cè)。
我們將使用管道法處理圖像。
我們將通過(guò)本文下述步驟來(lái)實(shí)現(xiàn),讓我們開(kāi)始吧!
獲取眼睛圖片
探測(cè)眼睛
直接通過(guò)攝像頭,對(duì)圖像降采樣并將其轉(zhuǎn)換為灰度圖像(多顏色通道會(huì)產(chǎn)生大量冗余信息),這會(huì)使得接下來(lái)的操作更加快速,有助于模型實(shí)時(shí)運(yùn)行。
對(duì)于探測(cè),我們將使用 HAAR Cascades(Haar 基于特征的級(jí)聯(lián)分類(lèi)器)(http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html),因?yàn)樗鼈兛旖荩ㄟ^(guò)簡(jiǎn)單調(diào)整,我們可以得到良好結(jié)果,但在直接探測(cè)眼睛時(shí)會(huì)導(dǎo)致許多誤報(bào)。為了消除這些影響,我們?cè)趫D像中檢測(cè)人臉而不是眼睛,然后可以在人臉上找到眼睛。
一旦獲得含有眼睛的邊界框,我們可以從最初的全尺寸攝像頭抓拍中提取圖像,這樣就不會(huì)丟失任何信息了。
預(yù)處理數(shù)據(jù)
一旦找到了雙眼,我們就需要為我們的數(shù)據(jù)集處理它們。 要做到這一點(diǎn),我們可以簡(jiǎn)單地將雙眼重塑為固定正方形,24px 大小,并使用直方圖歸一化來(lái)消除陰影。
提取眼睛的步驟
然后我們可以直接使用標(biāo)準(zhǔn)化圖片作為輸入,但我們有機(jī)會(huì)做更多有用的工作。 我們計(jì)算當(dāng)前幀和前一幀中眼睛之間的差異來(lái)代替使用眼睛圖像。 這是一種非常有效的動(dòng)作編碼方式,這是我們最終需要的。
**注意除了下面的 GIF 之外的所有圖表,我將使用眼睛圖片來(lái)表示眼睛差異,因?yàn)槠聊簧系牟町惪雌饋?lái)很糟糕。**
標(biāo)準(zhǔn)化幀與幀差異之間的比較
現(xiàn)在我們已經(jīng)處理了雙眼,我們可以選擇將它們分別視為同一類(lèi)的兩個(gè)代表,或者將它們一起使用,就像它們是單個(gè)圖像一樣。 我選擇后者,因?yàn)榧词寡劬?yīng)該遵循完全相同的運(yùn)動(dòng),兩個(gè)輸入都會(huì)使模型更加健壯。
*盡管如此,我們要做的還是比將圖像拼接在一起更聰明一點(diǎn)。
把雙眼合在一起
創(chuàng)建數(shù)據(jù)集
記錄
我已經(jīng)分別為兩個(gè)單獨(dú)的動(dòng)作記錄了 50 個(gè)樣本(一個(gè)看起來(lái)像“gamma”,另一個(gè)看起來(lái)像“Z”)。 我試圖改變樣本的位置、比例和速度,以幫助模型的推廣。 我還添加了 50 個(gè)“idle”的例子,其中包含大致一般的無(wú)圖案的眼睛動(dòng)作和靜止幀。
動(dòng)作示例 - 'gamma'、'mount'、'Z'、'idle'
不幸的是,150 個(gè)樣本對(duì)于這樣的任務(wù)來(lái)說(shuō)很小,所以我們需要用新樣本來(lái)擴(kuò)充數(shù)據(jù)集。
數(shù)據(jù)擴(kuò)充
我們可以做的第一件事就是修復(fù)任意序列長(zhǎng)度—100 幀。從那里,我們可以減慢較短的樣本,加快較長(zhǎng)的樣本。因?yàn)樗俣炔荒芏x運(yùn)動(dòng),所以這是可能的。
與此同時(shí),因?yàn)樵?00幀的窗中可以隨時(shí)檢測(cè)到低于100幀的序列,我們可以增加填充示例。
用于滑動(dòng)窗口填充低于100幀的樣本。
通過(guò)這些技術(shù),我們可以擴(kuò)充數(shù)據(jù)集大約到 1000—2000 個(gè)示例。
最終數(shù)據(jù)集
......
想要繼續(xù)閱讀,請(qǐng)移步至我們的AI研習(xí)社社區(qū):https://club.leiphone.com/page/TextTranslation/756
更多精彩內(nèi)容盡在 AI 研習(xí)社。
不同領(lǐng)域包括計(jì)算機(jī)視覺(jué),語(yǔ)音語(yǔ)義,區(qū)塊鏈,自動(dòng)駕駛,數(shù)據(jù)挖掘,智能控制,編程語(yǔ)言等每日更新。
雷鋒網(wǎng)雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng)(公眾號(hào):雷鋒網(wǎng)))
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。