中科智慧機器自造基地 Ai robotics Hub || 自造設備 創客課程 多元空間

News
:::
側邊選單開關

活動/訊息

:::

【電子報#31-01】臉部辨識+口罩偵測+溫度感測

  • 發佈日期:
  • 瀏覽人次: 599

  影像辨識於生活中的應用無所不在,中科自造基地蘿蔔頭之夜更針對臉部辨識進行深入探討與實作,沒參與到的各位是否感到遺憾呢?本期電子報文章延續話題鏈結時事,邀請到社群夥伴曾成訓(CH.Tseng)來為我們揭秘,帶來綜合人臉辨識、防疫口罩偵測與遠距溫度量測的教學。

紅外線測溫原理

  引用維基百科的解釋,紅外線(Infrared,簡稱IR)是波長介乎微波與可見光之間的電磁波,其波長在760奈米(nm)至1毫米(mm)之間,為非可見光,對應頻率約是在430 THz到300 GHz的範圍內,室溫下物體所發出的熱輻射多在此波段。因此,大自然中任何一個大於絕對零度(-273度C)的熱源皆會持續的向外界發出熱輻射,而這熱輻射的波長,正是上述所提及的非可見光紅外線波長範圍內。

  回歸標題,要如何透過紅外線探知熱源的溫度呢?原理來自於Stefan-Boltzmann(史蒂芬-波茲曼)定律:物體表面所釋放出的總幅射量,與其溫度的四次方成正比,所以我們可透過測量總輻射能量來計算物體溫度。

《▲紅外線測溫原理示意圖,曾成訓提供》

紅外線測溫模組MLX90614

  MLX90614 是目前市面上大部份非接觸式紅外線測溫模組所使用的感測器,由比利時公司 Melexis(邁來芯)所推出,該公司的產品領域極廣,涵蓋汽車應用、運輸、智能家電應用、智能建物應用、工業應用、醫療應用等,其衍生的型號相當多,主要差異在於偵測溫度範圍、適用領域(標準或醫療)、工作電壓、鏡頭尺寸(偵測遠近及角度)及輸出介面上(I2C, PWM或SMBus)的不同。

以下本文使用的型號CJMCU-MLX90614ESF-DCI為下面這款:

《▲紅外線測溫模組MLX90614,曾成訓提供》

  該款的特性如下:

  • 可偵測的物體溫度範圍為-70~380度C
  • 工作溫度限於-40~85度C
  • 屬於醫療等級
  • 使用電壓:2.6~3.6V
  • 電流耗用: 工作時小於2mA,休眠時小於2uA
  • 尺寸:20.2mm x 9.1mm
  • 視角:5度(鏡筒較長,量測的距離較遠)

MLX90614函式庫

羅列出以下幾種針對MLX90614的python library(函式庫),執行結果大同小異,本文使用的是第一個Adafruit版。

緒論介紹完畢,接下來進入重頭戲。

口罩偵測

  首先,需要訓練一個模型來偵測使用者是否有戴口罩,Dataset(資料集)可以從伊甸基金會所屬的『數位資料處理庇護工場』下載標記,免費開源釋出,該dataset資訊如下:​

1. 標記格式:PASCAL VOC

2. 圖片總張數:682張

3. 標記種類三種:

(1) good(有正確的戴好口罩)

(2) none(臉部露出鼻孔沒有戴好口罩)

(3) bad(臉部沒有戴上口罩)

4. 各類別的標記數目:

(1) good(有正確的戴好口罩):3,129個

(2) none(臉部露出鼻孔沒有戴好口罩):126個

(3) bad(臉部沒有戴上口罩):667個

  該dataset算是目前針對人臉口罩標記得最為完整也最詳細的資料庫,使用這個資料庫便能訓練出一個偵測臉部是否有戴(好)口罩且準確率相當高的模型。

《▲口罩偵測圖片,曾成訓提供》

 

臉部辨識

  針對臉部辨識部份,本文使用OpenVINO model zoo提供的三種模型來完成辨識:

  • landmarks-regression-retail-0009:可輸出五個臉部特徵點

https://docs.openvinotoolkit.org/2018_R5/_docs_Retail_object_attributes_landmarks_regression_0009_

onnx_desc_landmarks_regression_retail_0009.html

  • face-detection-adas-0001:臉孔偵測,使用MobileNet作為base model。

https://docs.openvinotoolkit.org/2019_R1/_face_detection_adas_0001_description_face_

detection_adas_0001.html

  • face-reidentification-retail-0095:可輸出臉部的256個特徵向量,需輸入的臉部圖片尺寸為128×128,使用模型為MobileNet V2。

https://docs.openvinotoolkit.org/2019_R1/_face_reidentification_retail_0095_description_face_

reidentification_retail_0095.html

這三個模型搭配使用,便能完成達到臉部辨識的目的:

  1. 臉孔偵測
  2. 取臉部landmarks(標記)
  3. 對齊臉孔
  4. 取得Facial embedded features(臉部嵌入式特徵)
  5. 比對最接近的人臉

臉部辨識+口罩偵測+溫度感測

硬體

  使用樹莓派(3B+或4皆可)結合NCS2,接著將I2C介面的SDA、SCL、3.3V、GND四個接腳分別接到MLX90614。

《▲開發板串接示意圖,曾成訓提供》

將MLX90614與攝影鏡頭固定在一起,注意!離鏡頭愈遠,投射於臉部的紅外線面積會愈大,有很大的機會是包含溫度低的非皮膚部份(如頭髮、眼鏡、口罩、背後空氣…),因此量測出的溫度會比實際值低很多,請參考下一段關於MLX90614的溫度感測說明。

《▲MLX90614模組與鏡頭連接示意圖,曾成訓提供》

軟體

  接著使用OpenCV及Python撰寫一個模擬的打卡系統,上下班時員工手動按鈕打卡,成功後系統將辨識該員工姓名、是否戴好口罩以及體溫是否超過設定值,並將結果顯示出來。

 

關於MLX90614的溫度感測

  MLX90614利用投射紅外線來探知熱源溫度,雖然加入了鏡頭套筒讓它能發射得更遠,但是距離愈遠投射的紅外線在物體表面的面積便會愈大,使得物體表面積及總幅射量所計算出來的數值,會隨著投射面積更大而精確度下降,因此本模組無法在人員移動的動態環境中,準確定位紅外線投射區域的位置及大小,僅適用於靜態使用。

  簡單來說:紅外線測溫器所測量的是「紅外線圓形投射區的物體表面積平均溫度」,要得到正確的量測值,在被測物上的量測點面積需不大於被測物表面積,否則會得到錯誤的數值。

《▲攝像頭與溫度感測關係示意圖,曾成訓提供》

遠距的紅外線測溫模型使用限制及注意:

  1. 需確定紅外線投射的範圍在目標物體之內。
  2. 當距離遠時,投射在物體表面(如人臉),可能包含了溫度較低的眼鏡、頭髮、眉毛、鼻頭等部份,會使得量測出的溫度偏低。(例如上圖所示範的照片)
  3. 容易受環境的蒸汽、塵土、煙霧而影響測溫精確度。
  4. 會發光的物體表面,其表面的反射光亦會影響到測溫效果。
  5. 不同的材料材質及顏色,具有不同的紅外線發射能量,必須調整紅外線發射率來減少其測量誤差。(目前市面的紅外測溫模組如MLX90614,其發射率都固定為1,代表物體放射率值不會隨著該材料之溫度或所量測溫度之紅外線(Infrared)波長改變不同而變化)

結語

  MLX90614的部份型號雖然號稱可遠距的量測,但這功能主要針對測溫槍的應用,以較遠距離來量測人體(例如人的額頭)溫度,且人物必須靜止站立不能移動,如果真想要在走道以進行動態溫度量測,那就要考慮使用更貴的熱顯像儀(熱感測儀),基礎教學文手把手帶Maker自製土砲版溫度測量、口罩偵測儀,為防疫貢獻心力!