每年 5 月 31 日是世界控煙日,百度使用了目標檢測、動作識別,、人臉檢測等 AI 技術,基于 PaddlePaddle 做了一個「AI 控煙」項目,。
百度工程師用 PaddlePaddle 訓練出一套模型,,能夠對吸煙人群進行識別和適當提示。當攝像頭捕捉到正在吸煙的同學,,就會投射到大屏幕上,。圖為李彥宏和某個員工的對話,對話員工的頭像正是周圍某個吸煙員工的「吸煙照」,,而且其面部用表情包替換了,。
這是一個基于 AI 技術完成的項目,使用了目標檢測,、動作識別,、人臉檢測等 AI 技術。其大致流程可以這樣描述:
項目流程示意圖
訓練與預測
我們可以借這個項目來了解一個 AI 控煙這樣的應用是如何完成的,。項目的實現(xiàn)可以分為訓練階段,、預測階段兩部分。
我們先來看訓練,,主要是對吸煙動作識別的訓練,。這里用到的是動作識別技術,也叫做人體動作識別,,是圖像分類技術的一個細分領域,,通過對圖像中的人物動作來判斷其行為,主要可以分為視頻識別和靜態(tài)圖像識別,。兩種技術都會有自己的應用場景,,其中視頻識別會對計算資源的要求比較高,,更多使用在一些對實時性要求比較高的場景,比如安防領域會基于實時監(jiān)控中是否出現(xiàn)搶劫或求救行為來自動完成報警,。而基于靜態(tài)圖像的動作識別則可以面向一些實時性不那么高的場景,,可以用較低的計算成本來完成。
本文的控煙項目根據(jù)其采集圖片數(shù)據(jù)的行為來看,,應該是基于靜態(tài)圖像的動作識別,。具體到訓練過程,首先是樣本數(shù)據(jù)的獲取,,這也是所有深度學習問題的起點,。在這個項目中需要搜集的是戶外情況下用戶的吸煙圖片,并將每張圖像中的吸煙者標注出來,。第二步是訓練吸煙動作識別的模型,,即通過標注好的數(shù)據(jù)來讓機器學習到什么樣的動作可能是吸煙,從而在有新的圖像出現(xiàn)時能夠判斷其是吸煙行為的可能性,,模型訓練過程是一系列復雜的工作,。
最后是模型的評估工作,需要讓模型去判斷新的圖像是否是存在吸煙行為,,并記錄其表現(xiàn),,在滿足一定評估指標后,才能停止優(yōu)化,。經(jīng)過這樣一系列流程,,我們會得到一個符合業(yè)務目標的吸煙動作識別模型。
得到動作識別模型之后,,我們就可以進行預測環(huán)節(jié)了,。預測的具體的流程是這樣:首先我們需要將吸煙動作識別模型部署在服務器上,讓其具備能夠在生產(chǎn)環(huán)境中接收數(shù)據(jù)以及輸出結果的能力,,有了這個基礎,,我們就能夠將攝像頭采集的圖像數(shù)據(jù)輸入模型,經(jīng)過模型的判斷后再向大屏幕輸出吸煙者的圖像,。
但是事實上,,項目中輸出的內容并不僅僅是吸煙動作,其實是一個整體圖像中抽取出的吸煙者所在的圖像部分,,還要依賴于目標檢測技術,。目標檢測是計算機視覺領域三大任務之一(另外兩個是圖像分類、和圖像分割),,該技術可以識別一張圖片的多個物體,,并可以定位出不同物體(給出邊界框)。這種技術的應用場景非常廣泛,,比如無人駕駛,、安防等領域都很依賴這種技術,。在此項目中,通過目標檢測,,機器會先將攝像頭采集的數(shù)據(jù)進行人體目標識別并將有人的圖像區(qū)域裁剪出來并傳輸給吸煙動作識別模型,,如果這部分圖像被判斷為吸煙,就會輸出到展示端,。
參與者被上傳到大屏幕的圖像中,,人物的面部是被表情包替換的,這又是如何實現(xiàn)的呢,?這個操作涉及的是人臉檢測技術,它其實是圖像檢測的一個細分垂類,,簡單來說就是能夠知道一個圖像中是否存在人臉,,以及如果存在那么其所在圖像區(qū)域是什么。人臉檢測技術是人臉識別技術方向的關鍵環(huán)節(jié),,也是人臉識別流程的第一步,,除了能檢測圖像區(qū)域內是否存在人臉外,人臉圖像中展示的特定信息(比如是否帶眼鏡,、是否有胡須),、以及面部表情(比如是否微笑、是否悲傷)都屬于人臉檢測技術的范疇,。
人臉檢測技術是一個應用場景非常廣泛的技術,,在我們的日常生活中非常普遍,比如手機拍照時我們會發(fā)現(xiàn)系統(tǒng)會定位每個人臉并將其框出來,,比如女生最愛的一些修圖軟件,,可以自動完成瘦臉或是其他一些特效,都是在人臉檢測技術的基礎上進行加工的,。該技術在本文介紹的控煙項目中也是一樣的使用場景:如果一個用戶被判斷為吸煙,,那么系統(tǒng)就會檢測圖像中是否存在人臉,如果有就在其所在的區(qū)域用一個表情包來替換,,這樣就達到了我們看到的效果,。
以上三項技術都涉及到深度學習的開發(fā)工作,他們背后都是由百度的深度學習引擎進行支持的,,這個我們會在文章的下一個部分進行說明,。
從活動對外視頻上看,被投放到屏幕的上吸煙員工(雖然面部被處理,,但是現(xiàn)場通過體型服飾等特征還是容易被認出來)絕大多數(shù)會快速終止其吸煙行為,,出現(xiàn)這樣的結果在社會學中是有理論依據(jù)的,曾有學者做過實驗,,對于阻止那些需要道德約束的不良行為,,有交互的提示會比靜態(tài)的提示有效很多,,比如飯店中禁止吸煙的標識即使擺在吸煙者的面前,對其的約束力也遠遠比不上服務員親自出面提示,,真正的問題在于并不是所有場合都能有這樣一個勇敢的「服務員」來充當這個「有交互的提示者」,,而這個項目讓我們看見了通過 AI 技術來打造這樣一個無處不在、任何時間都可以發(fā)出警告的提示者的可能,。
「幕后玩家」-深度學習引擎
深度學習引擎被認為是 AI 時代的操作系統(tǒng),,就好比 PC 時代的 windows 或者移動時代的 Android。深度學習引擎大致可以表述為這樣:深度學習引擎是一套幫助開發(fā)者完成各種深度學習模型訓練任務的解決方案,。通過這樣的解決方案,,可以讓深度學習的研發(fā)工作者把更多的精力放在解決業(yè)務問題而非一些復雜、工作量巨大的基礎編程工作,。此外,,一個良好的深度學習引擎可以讓模型的訓練工作更加快速高效,節(jié)省更多的時間和計算資源成本,,這對于有大規(guī)模業(yè)務需求的企業(yè)級用戶來說,,就顯得非常重要。這項技術會連接 AI 產(chǎn)業(yè)鏈底層的硬件計算資源以及上層的各種應用層面的 AI 技術,,處在一個非常關鍵的位置,,是科技巨頭的必爭之地。
還是拿剛才提到的 AI 控煙項目舉例子,,這里面依賴了三種 AI 技術能力,,而這三項技術能力有著共同的源頭—百度的自研深度學習引擎 PaddlePaddle。其中吸煙動作的識別是通過采集,、標注圖像中的吸煙行為后,,基于 PaddlePaddle 框架直接訓練出來的,據(jù)官方說法,,大概使用了數(shù)萬張樣本數(shù)據(jù),,經(jīng)過 40 多輪模型訓練得到了一個準確率在 80% 左右的模型;圖像中人物檢測和提取使用的是 PaddlePaddle 中開源的 SSD 目標檢測算法,;確定人臉位置使用的人臉檢測的技術接口,,但接口背后的人臉檢測模型也是基于 PaddlePaddle 框架訓練得到的。
SSD 目標檢測:https://github.com/PaddlePaddle/models/blob/develop/ssd/README.cn.md
人臉檢測:http://ai.baidu.com/tech/face/detect
這個項目主要采用的 SSD 模型是目標檢測領域效果最好的算法之一,,有著檢測速度快且檢測精度高的特點,。如下展示了 SSD 網(wǎng)絡的整體結構:
圖中每個矩形框代表一個卷積層,最后兩個矩形框分別表示匯總各卷積層輸出結果和后處理階段,。在預測階段,,網(wǎng)絡會輸出一組候選矩形框,每個矩形包含:位置和類別得分,。圖中倒數(shù)第二個矩形框即表示網(wǎng)絡的檢測結果的匯總處理,。由于候選矩形框數(shù)量較多且很多矩形框重疊嚴重,,這時需要經(jīng)過后處理來篩選出質量較高的少數(shù)矩形框,主要方法有非極大值抑制(Non-maximum Suppression),。
從 SSD 的網(wǎng)絡結構可以看出,,候選矩形框在多個特征圖上生成,不同的特征圖具有的感受野不同,,這樣可以在不同尺度掃描圖像,,相對于其他檢測方法可以生成更豐富的候選框,從而提高檢測精度,;另一方面 SSD 對 VGG16 的擴展部分以較小的代價實現(xiàn)對候選框的位置和類別得分的計算,,整個過程只需要一個卷積神經(jīng)網(wǎng)絡完成,所以速度較快,。
目前主流的深度學習引擎有十余種,,其背后是各個科技巨頭(如 TensorFlow-谷歌、CNTK-微軟,、MXNET-亞馬遜,、Pytorch-臉書等)的支持,,而 PaddlePaddle 是目前唯一一個由中國企業(yè),,即百度,研發(fā)和支持的項目,,目前正處于快速發(fā)展中,。