有趣!用計算機視覺技術與PaddlePaddle打造AI控煙專案

IT派發表於2018-06-14


每年 5 月 31 日是世界控煙日,百度使用了目標檢測、動作識別、人臉檢測等 AI 技術,基於 PaddlePaddle 做了一個「AI 控煙」專案。


640?wx_fmt=jpeg

百度工程師用 PaddlePaddle 訓練出一套模型,能夠對吸菸人群進行識別和適當提示。當攝像頭捕捉到正在吸菸的同學,就會投射到大螢幕上。圖為李彥巨集和某個員工的對話,對話員工的頭像正是周圍某個吸菸員工的「吸菸照」,而且其面部用表情包替換了。


這是一個基於 AI 技術完成的專案,使用了目標檢測、動作識別、人臉檢測等 AI 技術。其大致流程可以這樣描述:


640?wx_fmt=png

專案流程示意圖


訓練與預測


我們可以借這個專案來了解一個 AI 控煙這樣的應用是如何完成的。專案的實現可以分為訓練階段、預測階段兩部分。


我們先來看訓練,主要是對吸菸動作識別的訓練。這裡用到的是動作識別技術,也叫做人體動作識別,是影象分類技術的一個細分領域,通過對影象中的人物動作來判斷其行為,主要可以分為視訊識別和靜態影象識別。兩種技術都會有自己的應用場景,其中視訊識別會對計算資源的要求比較高,更多使用在一些對實時性要求比較高的場景,比如安防領域會基於實時監控中是否出現搶劫或求救行為來自動完成報警。而基於靜態影象的動作識別則可以面向一些實時性不那麼高的場景,可以用較低的計算成本來完成。


本文的控煙專案根據其採集圖片資料的行為來看,應該是基於靜態影象的動作識別。具體到訓練過程,首先是樣本資料的獲取,這也是所有深度學習問題的起點。在這個專案中需要蒐集的是戶外情況下使用者的吸菸圖片,並將每張影象中的吸菸者標註出來。第二步是訓練吸菸動作識別的模型,即通過標註好的資料來讓機器學習到什麼樣的動作可能是吸菸,從而在有新的影象出現時能夠判斷其是吸菸行為的可能性,模型訓練過程是一系列複雜的工作。


最後是模型的評估工作,需要讓模型去判斷新的影象是否是存在吸菸行為,並記錄其表現,在滿足一定評估指標後,才能停止優化。經過這樣一系列流程,我們會得到一個符合業務目標的吸菸動作識別模型。


得到動作識別模型之後,我們就可以進行預測環節了。預測的具體的流程是這樣:首先我們需要將吸菸動作識別模型部署在伺服器上,讓其具備能夠在生產環境中接收資料以及輸出結果的能力,有了這個基礎,我們就能夠將攝像頭採集的影象資料輸入模型,經過模型的判斷後再向大螢幕輸出吸菸者的影象。


但是事實上,專案中輸出的內容並不僅僅是吸菸動作,其實是一個整體影象中抽取出的吸菸者所在的影象部分,還要依賴於目標檢測技術。目標檢測是計算機視覺領域三大任務之一(另外兩個是影象分類、和影象分割),該技術可以識別一張圖片的多個物體,並可以定位出不同物體(給出邊界框)。這種技術的應用場景非常廣泛,比如無人駕駛、安防等領域都很依賴這種技術。在此專案中,通過目標檢測,機器會先將攝像頭採集的資料進行人體目標識別並將有人的影象區域裁剪出來並傳輸給吸菸動作識別模型,如果這部分影象被判斷為吸菸,就會輸出到展示端。


參與者被上傳到大螢幕的影象中,人物的面部是被表情包替換的,這又是如何實現的呢?這個操作涉及的是人臉檢測技術,它其實是影象檢測的一個細分垂類,簡單來說就是能夠知道一個影象中是否存在人臉,以及如果存在那麼其所在影象區域是什麼。人臉檢測技術是人臉識別技術方向的關鍵環節,也是人臉識別流程的第一步,除了能檢測影象區域內是否存在人臉外,人臉影象中展示的特定資訊(比如是否帶眼鏡、是否有鬍鬚)、以及面部表情(比如是否微笑、是否悲傷)都屬於人臉檢測技術的範疇。


人臉檢測技術是一個應用場景非常廣泛的技術,在我們的日常生活中非常普遍,比如手機拍照時我們會發現系統會定位每個人臉並將其框出來,比如女生最愛的一些修圖軟體,可以自動完成瘦臉或是其他一些特效,都是在人臉檢測技術的基礎上進行加工的。該技術在本文介紹的控煙專案中也是一樣的使用場景:如果一個使用者被判斷為吸菸,那麼系統就會檢測影象中是否存在人臉,如果有就在其所在的區域用一個表情包來替換,這樣就達到了我們看到的效果。


以上三項技術都涉及到深度學習的開發工作,他們背後都是由百度的深度學習引擎進行支援的,這個我們會在文章的下一個部分進行說明。


從活動對外視訊上看,被投放到螢幕的上吸菸員工(雖然面部被處理,但是現場通過體型服飾等特徵還是容易被認出來)絕大多數會快速終止其吸菸行為,出現這樣的結果在社會學中是有理論依據的,曾有學者做過實驗,對於阻止那些需要道德約束的不良行為,有互動的提示會比靜態的提示有效很多,比如飯店中禁止吸菸的標識即使擺在吸菸者的面前,對其的約束力也遠遠比不上服務員親自出面提示,真正的問題在於並不是所有場合都能有這樣一個勇敢的「服務員」來充當這個「有互動的提示者」,而這個專案讓我們看見了通過 AI 技術來打造這樣一個無處不在、任何時間都可以發出警告的提示者的可能。

 

「幕後玩家」-深度學習引擎


深度學習引擎被認為是 AI 時代的作業系統,就好比 PC 時代的 windows 或者移動時代的 Android。深度學習引擎大致可以表述為這樣:深度學習引擎是一套幫助開發者完成各種深度學習模型訓練任務的解決方案。通過這樣的解決方案,可以讓深度學習的研發工作者把更多的精力放在解決業務問題而非一些複雜、工作量巨大的基礎程式設計工作。此外,一個良好的深度學習引擎可以讓模型的訓練工作更加快速高效,節省更多的時間和計算資源成本,這對於有大規模業務需求的企業級使用者來說,就顯得非常重要。這項技術會連線 AI 產業鏈底層的硬體計算資源以及上層的各種應用層面的 AI 技術,處在一個非常關鍵的位置,是科技巨頭的必爭之地。


還是拿剛才提到的 AI 控煙專案舉例子,這裡面依賴了三種 AI 技術能力,而這三項技術能力有著共同的源頭—百度的自研深度學習引擎 PaddlePaddle。其中吸菸動作的識別是通過採集、標註影象中的吸菸行為後,基於 PaddlePaddle 框架直接訓練出來的,據官方說法,大概使用了數萬張樣本資料,經過 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 網路的整體結構:


640?wx_fmt=png


圖中每個矩形框代表一個卷積層,最後兩個矩形框分別表示彙總各卷積層輸出結果和後處理階段。在預測階段,網路會輸出一組候選矩形框,每個矩形包含:位置和類別得分。圖中倒數第二個矩形框即表示網路的檢測結果的彙總處理。由於候選矩形框數量較多且很多矩形框重疊嚴重,這時需要經過後處理來篩選出質量較高的少數矩形框,主要方法有非極大值抑制(Non-maximum Suppression)。


從 SSD 的網路結構可以看出,候選矩形框在多個特徵圖上生成,不同的特徵圖具有的感受野不同,這樣可以在不同尺度掃描影象,相對於其他檢測方法可以生成更豐富的候選框,從而提高檢測精度;另一方面 SSD 對 VGG16 的擴充套件部分以較小的代價實現對候選框的位置和類別得分的計算,整個過程只需要一個卷積神經網路完成,所以速度較快。


目前主流的深度學習引擎有十餘種,其背後是各個科技巨頭(如 TensorFlow-谷歌、CNTK-微軟、MXNET-亞馬遜、Pytorch-臉書等)的支援,而 PaddlePaddle 是目前唯一一個由中國企業,即百度,研發和支援的專案,目前正處於快速發展中。

∞∞∞



640?wx_fmt=jpeg&wx_lazy=1

IT派 - {技術青年圈}持續關注網際網路、區塊鏈、人工智慧領域640?wx_fmt=jpeg&wx_lazy=1



公眾號回覆“機器學習”

邀你加入{ IT派AI機器學習群 } 



相關文章