只需連接電腦攝像頭,就能用深度學習進行實時對象檢測
本文為 AI 研習社編譯的技術博客,原標題 Detecting People in Real-time Using Deep Learning,作者為 Schuman Zhang。
翻譯 | 京鵬 王飛 整理 | 餘杭 凡江
實時對象檢測是一個非常有趣的話題。 我們應如何可靠地檢測視頻輸入中的人和其他現實生活中的物體? 最近我設法構建了一個非常簡單的應用程序,只需連接到用戶的電腦網路攝像頭就可自動檢測對象。 我想與大家分享一下我是如何構建這個應用程序以及我在此過程中遇到的一些有趣的問題和挑戰。
項目的源代碼可以在這裡找到(https://github.com/schumanzhang/object_detection_real_time )。
對象檢測是計算機視覺領域非常活躍的研究課題。 在圖像中檢測和定位對象(可理解為在對象周圍放置邊界框)最有效的方法是使用深度學習技術。有幾種特意為此目的設計的神經網路架構,例如 R-CNN, 快速 R-CNN,單次檢測(SSD)和 YOLO(You Only Look Once)。
Tensorflow 對象檢測模型
你可以在 tensorflow 庫中輕鬆找到上述神經網路架構的預訓練模型。它們統稱為 tensorflow 檢測模型集合。這些預訓練模型在 COCO 數據集上進行訓練(https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md),包含總共90類標籤(現實世界的對象,如人,貓和狗等)。在這個簡單的應用程序中,我們將使用被稱為 mobilenet 的單次檢測方法。這種架構更緊湊並可以獲得額外的速度提升,這對分析每秒30-50幀圖像來說很重要。
我不會詳細介紹這些神經網路如何工作(這是另一個獨立而有趣的話題)。 在我們的應用程序中,我們的重點是檢測人員,我們正試圖回答房間里是否有人的問題,如果是,有多少人? 但它也應該能檢測多達90個現實世界的對象類別,包括手機,書籍,筆記本電腦等普通物體。理論上,我們可以使用遷移學習方法來重新訓練這些神經網路架構的最後幾層,以便檢測更多種類的物體,但是這需要額外的訓練數據,以及大量的計算能力和時間。
簡單來說,我們的視頻流分析將使用 tensorflow,open-cv 和 Python 檢測房間中的人員。
構建對象檢測應用程序
該應用程序的整體流程如下:
我們將使用 open-cv Python 庫從筆記本電腦的網路攝像頭中讀取幀數據。這將通過 open-cv 中的 VideoCapture 函數完成。
然後我們將這些幀傳遞到 mobilenet ssd 模型中以檢測對象。置信水平高於0.5的任何檢測都將被返回並繪製到幀圖像中。
任何檢測到的對象都將通過可視化模塊,在圖像中檢測到的對象周圍放置彩色邊界框。
我們還添加了一個跟蹤模塊,用於顯示房間是否為空以及房間內的人數。這些數據將被存儲在單獨的.csv 文件中。
處理後的幀數據回傳後,我們可以使用 open-cv 中的 imshow 函數向用戶顯示帶邊界框的幀圖像。
最後,視頻流的輸出將以每秒20幀的速率寫入單獨的.mp4 文件中,以便後期可以欣賞我們的工作
在上面的代碼中,"while" 循環用於從網路攝像頭讀取幀數據,之後將未處理的幀數據放入輸入隊列以傳遞給我們的深度學習模型。 一旦我們得到 tensorflow 的預測結果,這些預測/檢測值將被插入到輸出隊列中,然後通過 object_tracker 類的可視化模塊,最後我們將處理後的幀寫入單獨的文件並將結果顯示給用戶。
我們將利用 Python 中的多線程來提高處理視頻幀的速度。 下面的 worker 函數將從輸入隊列中獲取幀數據,載入 tensorflow 模型並將任何檢測結果傳回輸出隊列。 這是與主線程分開運行的。
當然,為了可視化檢測,我們需要傳遞檢測到的類標籤,它們各自的置信度,邊界框顏色和坐標,並將它們繪製到幀圖像上。
測試及評估應用程序
接下來的問題是這個簡單的應用程序表現如何? 在我的筆記本電腦上運行應用程序我覺得檢測人員功能表現還不錯。 我沒有將這些應用程序置於嚴格的測試環境中。 但是,我也看到了很多表現相當脆弱的情況。 首先,當我把史蒂夫·喬布斯的傳記放在鏡頭前時,它會檢測成另一個人,而不是一本書(因此無法區分真人或某人的圖像)。 其次,我覺得在檢測人員表現良好的同時,檢測其他類別的表現並不是特別好,比如經常會將我的手機誤認為是電視或筆記本電腦。 在檢測現實世界的其他物體時還有很大的改進空間。
潛在的現實應用案例?
我們可以很容易地想到許多有趣的現實應用案例,用於分析和檢測實時視頻流中的人員或其他物體。 我們可以在監控攝像頭中檢測到人員的存在,畢竟我們有大量的被忽視的安防攝像頭。我們可以讓攝像機跟蹤人員,計算人流量,甚至可以實時識別特定的行為。 自動運輸也即將出現,這種技術對於幫助我們的車輛看到道路和探測行人至關重要。
https://medium.com/@schuman.zhang/detecting-people-in-real-time-using-deep-learning-84859c9682d2
※為什麼說 CCF-GAIR 智能駕駛專場不容錯過?我們梳理了這些亮點
※微軟研究院發布開放數據項目,公開 15 類內部研究數據集
TAG:AI研習社 |