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

←手機掃碼閱讀     admin @ 2020-02-14 , reply:0

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

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

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

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

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

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

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

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

在線演示地址:

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

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

預訓練模型,立即部署

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

頂尖演算法與數據

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

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

實踐過程

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


import paddlehub as hub
# 載入模型,本例為伺服器端模型pyramidbox_lite_server_mask# 移動端模型參數可以換成pyramidbox_lite_mobile_maskmodule = 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

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<MobileConfig>(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





[admin ]

來源:OsChina
連結:https://www.oschina.net/news/113372/paddlepaddle-news
百度開源業內首個口罩人臉檢測及分類模型已經有33次圍觀

http://coctec.com/news/all/show-post-224862.html