欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+MediaPipe實現(xiàn)檢測人臉功能詳解

 更新時間:2024年04月08日 11:51:11   作者:woshicver  
MediaPipe是用于構(gòu)建多模態(tài)(例如視頻、音頻或任何時間序列數(shù)據(jù))、跨平臺(即eAndroid、IOS、web、邊緣設(shè)備)應(yīng)用ML管道的框架。本文將利用MediaPipe實現(xiàn)檢測人臉功能,需要的可以參考一下

MediaPipe概述

谷歌開源MediaPipe于2019年6月首次推出。它的目標(biāo)是通過提供一些集成的計算機視覺和機器學(xué)習(xí)功能,使我們的生活變得輕松。

MediaPipe是用于構(gòu)建多模態(tài)(例如視頻、音頻或任何時間序列數(shù)據(jù))、跨平臺(即eAndroid、IOS、web、邊緣設(shè)備)應(yīng)用ML管道的框架。

Mediapipe還促進了機器學(xué)習(xí)技術(shù)在各種不同硬件平臺上的演示和應(yīng)用程序中的部署。

應(yīng)用

  • 人臉檢測
  • 多手跟蹤
  • 頭發(fā)分割
  • 目標(biāo)檢測與跟蹤
  • 目標(biāo):三維目標(biāo)檢測與跟蹤
  • AutoFlip:視頻裁剪管道
  • 其他

為什么需要MediaPipe

有效管理資源(CPU和GPU)以實現(xiàn)低延遲性能,處理時間序列數(shù)據(jù)(如音頻和視頻幀)的同步。

MediaPipe將每個感知模型抽象為一個模塊,并將它們與維護圖連接起來。

除上述功能外,MediaPipe還支持TensorFlow和TF Lite推理引擎。任何TensorFlow和TF Lite模型均可用于MediaPipe。同時,在移動和嵌入式平臺上,MediaPipe還支持設(shè)備本身的GPU加速。

現(xiàn)在是時候向MediaPipe的應(yīng)用邁進了,人臉檢測。

人臉檢測

考慮一個場景,“零售商要求你計算訪客數(shù)量,并跟蹤訪客的移動。”

看起來很難??!我們怎樣才能解決這個問題?嗯…

哦,是的!我們將使用人臉檢測來解決這個問題。

人臉檢測是計算機視覺中的一個問題,即在照片中定位和定位一個或多個人臉。

問題的一般陳述可以定義如下:給定一幅靜止或視頻圖像,檢測并定位未知數(shù)量(如果有)的人臉。

使用MediaPipe執(zhí)行人臉檢測:

要執(zhí)行人臉檢測,可以使用三種模型:

  • 近景模型(最適合距離相機2米以內(nèi)的人臉)
  • 全范圍模型(密集型,最適合距離相機5米以內(nèi)的人臉)
  • 全范圍模型(稀疏,最適合距離相機5米以內(nèi)的人臉)

全范圍密集模型和稀疏模型在F分數(shù)方面具有相同的質(zhì)量,但在基礎(chǔ)度量方面有所不同。

密集型模型的召回率略高于稀疏模型,而稀疏模型的精確度高于稠密模型。

現(xiàn)在是時候使用MediaPipe的人臉檢測模型了。

安裝必要的庫

要執(zhí)行人臉檢測,首先必須在機器中安裝MediaPipe。如果你是windows用戶,則可以在計算機的命令提示符下運行以下代碼。

pip install mediapipe

有關(guān)詳細說明,你可以訪問以下鏈接:

https://google.github.io/mediapipe/getting_started/python.html

你還需要為網(wǎng)絡(luò)攝像頭或圖像輸入安裝OpenCV。如果你是windows用戶,可以在命令提示符下運行以下代碼。

pip install opencv-python

有關(guān)詳細說明,你可以訪問以下鏈接:

https://pypi.org/project/opencv-python/

編寫代碼以了解API的使用:

我們使用Google Colab來運行代碼。你可以選擇使用它。

我們需要cv2,能夠讀取和顯示圖像,以及MediaPipe模塊,它公開了我們執(zhí)行人臉檢測所需的功能

import cv2
import mediapipe as mp

然后我們將訪問兩個子模塊face_detection和drawing_utils。人臉檢測用于加載所有功能以執(zhí)行人臉檢測,而繪圖工具用于在圖像上繪制檢測到的人臉。

mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils

是時候深入研究代碼了。首先,我們將圖像作為輸入。這里我們使用兩種類型的圖像

(i) 包含2米以內(nèi)的人臉的圖像

(ii)包含5米以內(nèi)的人臉的圖像。

我們使用colab中的文件直接從本地目錄加載圖像。你也可以使用cv2.imread用于在本地計算機中工作時加載圖像。

(a) 第一張照片

from google.colab import files
 
uploaded_short_range = files.upload()

(b) 第二張照片

from google.colab import files
 
uploaded_full_range = files.upload()

在本地PC上工作時,你可以使用

cv2.imread() # 獲取輸入

單擊此處了解有關(guān)cv2.imread:

現(xiàn)在我們將調(diào)整圖像大小并顯示圖像。為了顯示圖像,我們必須使用colab或cv2的cv2_imshow模塊。

在本地機器中工作時顯示cv2.imshow(frame name, iamge)。我們可以使用下面的代碼在google colab中調(diào)整圖像大小并顯示圖像。

用于調(diào)整圖像大小和顯示圖像的代碼:

import cv2
from google.colab.patches import cv2_imshow
import math
import numpy as np
 
DESIRED_HEIGHT = 480
DESIRED_WIDTH = 480
def resize_and_show(image):
  h, w = image.shape[:2]
  if h < w:
    img = cv2.resize(image, (DESIRED_WIDTH, math.floor(h/(w/DESIRED_WIDTH))))
  else:
    img = cv2.resize(image, (math.floor(w/(h/DESIRED_HEIGHT)), DESIRED_HEIGHT))
  cv2_imshow(img)
 

# 預(yù)覽圖片.
 
short_range_images = {name: cv2.imread(name) 
for name in uploaded_short_range.keys()}
for name, image in short_range_images.items():
  print(name)   
  resize_and_show(image)
 
 
full_range_images = {name: cv2.imread(name) 
for name in uploaded_full_range.keys()}
for name, image in full_range_images.items():
  print(name)   
 
  resize_and_show(image)

現(xiàn)在,我們將在臉上畫關(guān)鍵點。

我們可以如下更改thickness和circle_radius的值。

drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)

以下代碼了解mp.solutions.face_detection的詳細信息。

help(mp_face_detection.FaceDetection)

在此之后,我們將創(chuàng)建一個FaceDetection類的對象。該對象將允許我們處理圖像并執(zhí)行人臉關(guān)鍵點檢測。此類的構(gòu)造函數(shù)支持以下參數(shù):

(i) 模型選擇:整數(shù)索引0或1。使用0選擇最適合距離攝影機2米以內(nèi)的面的短距離模型,使用1選擇最適合距離攝影機5米以內(nèi)的面的全范圍模型。對于全范圍選項,稀疏模型用于提高推理速度。

(ii)最小檢測置信度:人臉檢測模型中的最小置信值([0.0,1.0]),檢測成功。默認值為0.5。

with mp_face_detection.FaceDetection(min_detection_confidence=0.5, model_selection=0) as face_detection:

上面的代碼model_selection=0,這意味著我們選擇短距離模型進行人臉檢測。使用下面的代碼,我們使用一個簡短的圖像模型執(zhí)行最終的人臉檢測,并繪制關(guān)鍵點。

# 運行MediaPipe人臉檢測與近距離模型
 
with mp_face_detection.FaceDetection(
    
    min_detection_confidence=0.5, model_selection=0) as face_detection:
        
  for name, image in short_range_images.items():
    # 將BGR圖像轉(zhuǎn)換為RGB,并使用MediaPipe人臉檢測進行處理。
 
    results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
 
    # 繪制每個人臉的檢測。
    print(f'Face detections of {name}:')
    
    if not results.detections:
        
      continue
    annotated_image = image.copy()

    for detection in results.detections:
 
      mp_drawing.draw_detection(annotated_image, detection)
 
    resize_and_show(annotated_image)

現(xiàn)在對于model_selection=1,這意味著我們選擇人臉檢測全范圍模型。使用下面的代碼,我們使用完整的圖像模型執(zhí)行最終的人臉檢測,并繪制關(guān)鍵點。

with mp_face_detection.FaceDetection(
 
    min_detection_confidence=0.5, model_selection=1) as face_detection:
 
  for name, image in full_range_images.items():
    # 將BGR圖像轉(zhuǎn)換為RGB,并使用MediaPipe人臉檢測進行處理。
    results = face_detection.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    # 繪制每個人臉的檢測。
    print(f'Face detections of {name}:')
 
    if not results.detections:
 
      continue
 
    annotated_image = image.copy()
 
    for detection in results.detections:
 
      mp_drawing.draw_detection(annotated_image, detection)
 
    resize_and_show(annotated_image)

我們還可以使用全范圍人臉檢測模型的代碼對集體照片執(zhí)行此過程。

下面關(guān)于algoscale的文章將向你展示使用OpenCV和MediaPipe姿勢估計。

使用OpenCV和MediaPipe進行訓(xùn)練姿勢估計:

https://algoscale.com/tech-corner/workout-pose-estimation-using-opencv-and-mediapipe/

到此這篇關(guān)于Python+MediaPipe實現(xiàn)檢測人臉功能詳解的文章就介紹到這了,更多相關(guān)Python MediaPipe檢測人臉內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python]程序的分支結(jié)構(gòu)

    淺談Python]程序的分支結(jié)構(gòu)

    這篇文章主要介紹了淺談Python]程序的分支結(jié)構(gòu),語句塊是 if 條件滿足后執(zhí)行的一個或多個語句序列,語句塊中語句通過與 if 所在行形成縮進表達包含關(guān)系,需要的朋友可以參考下
    2023-04-04
  • python 發(fā)送郵件的四種方法匯總

    python 發(fā)送郵件的四種方法匯總

    這篇文章主要介紹了python 發(fā)送郵件的四種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python實現(xiàn)公司年會抽獎程序

    python實現(xiàn)公司年會抽獎程序

    這篇文章主要為大家詳細介紹了python實現(xiàn)公司年會抽獎程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • CPython中處理is與is not語句示例詳解

    CPython中處理is與is not語句示例詳解

    這篇文章主要為大家介紹了CPython中處理is與is not語句示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 解決Django中多條件查詢的問題

    解決Django中多條件查詢的問題

    今天小編就為大家分享一篇解決Django中多條件查詢的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 以一個投票程序的實例來講解Python的Django框架使用

    以一個投票程序的實例來講解Python的Django框架使用

    這篇文章主要介紹了以一個投票程序的實例來講解Python的Django框架使用,Django是Python世界中人氣最高的MVC框架,需要的朋友可以參考下
    2016-02-02
  • 如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件

    如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件

    很多開發(fā)者沒有發(fā)布源程序代碼,而是將代碼封裝為exe可執(zhí)行文件,這樣不僅更有利于程序傳播,下面這篇文章主要介紹了如何對Python編譯PyInstaller打包生成的exe文件進行反編譯生成pyc、py源代碼文件的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • keras如何指定運行時顯卡及限制GPU用量

    keras如何指定運行時顯卡及限制GPU用量

    這篇文章主要介紹了keras如何指定運行時顯卡及限制GPU用量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實現(xiàn)

    Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實現(xiàn)

    這篇文章主要介紹了Pandas 重塑(stack)和軸向旋轉(zhuǎn)(pivot)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 在python里從協(xié)程返回一個值的示例

    在python里從協(xié)程返回一個值的示例

    今天小編就為大家分享一篇在python里從協(xié)程返回一個值的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02

最新評論