每日最新頭條.有趣資訊

百度飛槳開源業內首個口罩人臉檢測及分類模型

抗擊疫情,眾志成城,人工智能技術正被應用到疫情防控中來。

2 月 13 日,百度宣布免費開源業內首個口罩人臉檢測及分類模型。該模型可以有效檢測在密集人流區域中攜帶和未攜戴口罩的所有人臉,同時判斷該者是否佩戴口罩。目前已通過飛槳 PaddleHub 開源出來,廣大開發者用幾行代碼即可快速上手,免費調用。

模型可視化效果:綠框為佩戴口罩標注,紅框為未佩戴口罩標注

隨著本周各企業相繼復工,節後經濟開始逐漸恢復,人臉口罩檢測方案成為返工潮中眾多社區、大型廠商、央企的重要需求。如判斷工區員工是否佩戴口罩、人流密集的關口運輸中心如何識別戴口罩的人臉並測溫、佩戴口罩是否也能完成日常刷臉打卡等等……都是新冠肺炎疫情下需要解決的真實痛點。

疫情防控刻不容緩,百度此前已有多項 AI 舉措助力疫情防控。此次宣布免費開源的自研口罩人臉檢測及分類模型,是基於 2018 年百度收錄於國際頂級計算機視覺會議 ECCV 的論文 PyramidBox 研發,可以在人流密集的公共場景檢測海量人臉的同時,將佩戴口罩和未佩戴口罩的人臉快速識別標注。基於此預訓練模型,開發者僅需使用少量自有數據,便可快速完成自有場景的模型開發。

百度研發工程師介紹,口罩人臉檢測及分類模型,由兩個功能單元組成,可以分別完成口罩人臉的檢測和口罩人臉的分類。經測試,模型的人臉檢測算法基於 faceboxes 的主乾網絡加入了超過 10 萬張口罩人臉數據訓練,可在準確率 98% 的情況下,召回率顯著提升 30%。而人臉口罩判斷模型可實現對人臉是否佩戴口罩的判定,口罩判別準確率達到 96.5%,滿足常規口罩檢測需求。開發者基於自有場景數據還可進行二次模型優化,可進一步提升模型準確率和召回率。

如此高的準確率的背後是大量數據訓練的結果,新模型採用了超過十萬張圖片的訓練數據,確保樣本量足夠且有效。另一方面,人臉檢測模型基於百度自研的冠軍算法,整個研發過程都是基於百度開源的飛槳深度學習平台,能夠進行高效、便捷的模型開發、訓練、部署。

在線演示效果:綠色邊界框為戴口罩人臉、紅色邊界框為不戴口罩人臉。感興趣的開發者可自己上傳圖片測試模型的效果。

在線演示地址:

https://www.paddlepaddle.org.cn/hub/scene/maskdetect

對於實際場景中的光照、口罩遮擋、表情變化、尺度變化等問題,模型具有魯棒性,並且能夠在多種不同端、邊、雲設備上實時檢測,在落地過程中做到真正實用。

模型開源,方便應用

為了最大程度方便開發者應用,百度深度學習平台飛槳通過簡單易用的預訓練模型管理工具 PaddleHub 將人臉口罩檢測模型開源出來,只需基本的 Python 編程能力,即可快速上手調用,如果具有一定的移動端 APP 開發能力,也可以快速將模型部署到移動端上。

預訓練模型介紹:

https://www.paddlepaddle.org.cn/hubdetail?name=pyramidbox_lite_server_mask&en_category=ObjectDetection

預訓練模型示例代碼:

https://aistudio.baidu.com/aistudio/projectDetail/267322

這一方案中,用於識別人臉的模型基於 2018 年百度在國際頂級計算機視覺會議 ECCV 2018 的論文 PyramidBox 而研發,基於自研的飛槳開源深度學習平台進行訓練,並通過 PaddleSlim 等模型小型化技術使得算法能夠高效運行在一些算力有限的設備上。

此外飛槳還將提供海量二次開發的工具組件,以及更多的人臉相關檢測算法,以上所有技術及工具都是開源且免費的。

部署簡單,上手迅速

只要五行代碼,我們就可以在自己的計算機處理口罩人臉檢測。實際在我們採用 CPU 的情況下,檢測基本是實時的,推斷速度非常快。以下為調用預訓練模型的核心代碼,其中我們在當前文件夾下放了一張測試圖像:

import paddlehub as hub

# 加載模型,本例為伺服器端模型pyramidbox_lite_server_mask

# 移動端模型參數可以換成pyramidbox_lite_mobile_mask

module = hub.Module(name="pyramidbox_lite_server_mask")

# 設置輸入數據

input_dict = {"image": ["test.jpg"]}

for data in module.face_detection(data=input_dict):

print(data)

更重要的是,作為一項完善的開源工作,除了本地推斷以外,其還需要考慮如何將模型部署到伺服器或移動設備中。若能快速部署到各平台,那麽才真正意味著它可以作為「戰疫」的基礎工具。

目前,百度提供了兩個預訓練模型,即伺服器端口罩人臉檢測及分類模型「pyramidbox_lite_server_mask」、以及移動端口罩人臉檢測及分類模型「pyramidbox_lite_mobile_mask」,這兩者能滿足各種下遊任務。

1. 一條命令部署到伺服器

借助 PaddleHub,伺服器端的部署也非常簡單,直接用一條命令行在伺服器啟動口罩人臉檢測與分類模型就行了:

hub serving start -m pyramidbox_lite_server_mask -p 8866

是的,在伺服器端這就完全沒問題了。相比手動配置各種參數或者調用各種框架,PaddleHub 部署伺服器非常方便。相信只要有一些 Python 基礎,在本地預測、以及部署到伺服器端都是沒問題的,飛槳的 PaddleHub 已經幫我們做好了各種處理過程。

2. 三步部署到移動端

Paddle Lite 是飛槳的端側推理引擎,專門面向移動端的模型推理部署。如果我們需要把口罩人臉檢測及分類模型嵌入到手機等移動設備,那麽 Paddle Lite 這樣的端側推理引擎能幫我們節省很多工作。

在移動端部署口罩人臉檢測及分類模型,也只需要三步:

下載預測庫,Paddle Lite 會提供編譯好的預測庫;

優化模型,使用 model_optimize_tool 工具實現模型優化;

通過預測 API 實現調用。

開發者可以通過 PaddleHub 下載人臉口罩識別模型。在正常安裝 PaddleHub 以後,可以通過 Python 執行以下代碼下載並保存模型,以下載保存移動端人臉口罩識別模型為例:

import paddlehub as hub

module = hub.Module(name="pyramidbox_lite_mobile_mask")

# 將模型保存在test_program文件夾之中

module.processor.save_inference_model(dirname="test_program")

通過以上代碼,可以獲得人臉檢測和口罩佩戴判斷模型,分別存儲在 test_program 目錄下的 pyramidbox_lite 和 mask_detector 子文件夾之中。文件夾中的model是模型結構文件,param文件是權重文件。

Paddle Lite 介紹:

https://github.com/PaddlePaddle/Paddle-Lite/

其中比較重要的是移動端 API 調用方法,具體實現請參考下文給出的 Paddle Lite 的示例地址。

// 讀取圖片cv::Mat img = imread(img_path, cv::IMREAD_COLOR);// 加載人臉檢測或者口罩佩戴判別模型MobileConfig config;config.set_model_dir(model_dir);PaddlePredictor* predictor = CreatePaddlePredictor(config);// 設置輸入Tensor* input_tensor = predictor->GetInput(0);input_tensor->Resize({1, 3, img.rows,img.cols});set_input(img, input_tensor); //調用自定義函數// 執行predictor->Run();// 輸出結果Tensor* output_tensor = predictor->GetOutput(0);show_output(img, output_tensor); //調用自定義函數

人臉識別和佩戴口罩判斷在移動端部署的示例地址為:

https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/lite/demo/cxx

作為開源開放、功能完備的產業級深度學習平台,開源是飛槳長期踐行並努力的方向。新型冠狀病毒感染的肺炎疫情消息牽動著每個人的心,百度也在持續運用著 AI、大數據等前沿技術,助力“大後方”的疫情防控。

從成立總規模 3 億元疫情及公共衛生安全攻堅專項基金,到提供人工智能技術支持配套億級計算資源;從百度地圖為疫情科學管理提供參考,到 AI 多人體溫快速檢測解決方案落地清河火車站、免費開放病毒分析線性時間算法、免費開放社區管理智能外呼平台……

本次開源的的口罩人臉檢測及分類模型,是百度 AI 能力的又一次傾力輸出,也希望全社會更多的開發者一道加入,探討開發,打贏這場疫情阻擊戰。

點個在看少個 bug

獲得更多的PTT最新消息
按讚加入粉絲團