Python 檢測人臉是否佩戴口罩

2021-10-07 08:50:11 字數 1924 閱讀 1685

最近,口罩成為絕對熱門的話題,在疫情之下,出門不戴口罩不僅對自己不負責,對他人而言也是一種潛在的威脅。所以許多小區都有保安在門口守著,誰要是不戴口罩就吼回去(嚇死我了)。

儘管如此,人工檢測總有可能漏掉人,而且無時無刻地盯著,保安叔叔也特別累。今天我們就來嘗試用計算機自動檢測人臉是否佩戴口罩的可行性,如果可行,那麼根據我們以前的推送:人臉檢測自動開機,就可以做乙個實時攝像頭,如果發現有人沒戴口罩則傳送警告給保安,以提高保安的工作效率。

根據你自己的情況選擇這些選項,最後乙個cuda版本,由於本實驗不需要訓練資料,也不需要太大的計算量,所以直接選擇cpu版本即可。選擇完畢,下方會出現安裝指引,不得不說,paddlepaddle這些方面做的還是比較貼心的(就是名字起的不好)。

要注意,如果你的python3環境變數裡的程式名稱是python,記得將語句改為python ***,如下進行安裝:

python -m pip install paddlepaddle -i

1還需要安裝paddlehub:

pip install -i paddlehub

12.編寫**

paddlehub作為乙個深度學習平台,用起來還是相當方便的,尤其是對於我這種(調包小王子)非研究型應用者。一共就只有四個步驟:

1.引入模組和

2.載入模型

3.分類與**

4.結果展示

把我們需要測試的儲存在該**檔案的同一目錄下,命名為3.jpg:

想看這個小姐姐摘下口罩的樣子

**如下:

import paddlehub as hub

import matplotlib.pyplot as plt

import matplotlib.image as mpimg

# 1.待**

# 2.載入模型

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

# 3.**

input_dict = 

results = module.face_detection(data=input_dict)

# 4.結果展示

沒錯,你沒看錯,就是這麼簡單。去掉空行和注釋只有12行**,再狠一點,把matplot展示部分全部去掉,只有6行**。再再狠一點,把test_img_path和input_path變數以及module.face_detection語句合併,你會發現只有3行**:

import paddlehub as hub

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

results = module.face_detection(data=) 12

3執行完後的分類結果在同一目錄下的detection_result目錄下檢視即可。所以說,說20行**是謙虛,3行**就夠了。

mask:97.64% 代表這個人戴了口罩,可信度為97.64%。

no mask: 97.41% 代表這個人沒戴口罩,可信度為97.41%

最後面那個大叔也是mask,但是它的可信度只有54.31%,所以很可能是誤判,在我們實際應用的時候,只需要把警告閾值(比如80%)提高,即可篩去這些不可信的分類。

不過,這個模型有乙個缺點就是,對於遠距離的人判斷並不是很精確:

離鏡頭最近的這個人可能是因為側臉的原因,臉部特徵不明顯識別不出來。但是遠處的這些戴著口罩卻被識別為沒戴口罩的,就是這個模型的鍋了。不過,通過閾值過濾和縮短攝像頭攝影距離還是可以將這個模型用於實際生活中的。

人臉檢測python

我用的是python27。opencv340.匯入opencv庫 import cv2 載入opencv自帶的分類器 face patterns cv2.cascadeclassifier e opencv build etc haarcascades haarcascade frontalface...

python 人臉檢測

pip install opencv python 匯入cv模組 import cv2 def face detector 人臉識別 cap cv2.videocapture 0 告訴opencv使用人臉識別分類器 classfier cv2.cascadeclassifier haarcascad...

python下人臉檢測

然後在cmd下試一下pip install numpy 檢查numpy包是否已經安裝 出現 說明已經安裝,否則這命令也能自動安裝 安裝好後先檢查一下opencv是否安裝完全 結果為 其中 dets detector img,1 為進行人臉檢測 for i,d in enumerate dets pr...