<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
谷歌開源MediaPipe於2019年6月首次推出。它的目標是通過提供一些整合的計算機視覺和機器學習功能,使我們的生活變得輕鬆。
MediaPipe是用於構建多模態(例如視訊、音訊或任何時間序列資料)、跨平臺(即eAndroid、IOS、web、邊緣裝置)應用ML管道的框架。
Mediapipe還促進了機器學習技術在各種不同硬體平臺上的演示和應用程式中的部署。
應用
為什麼需要MediaPipe
有效管理資源(CPU和GPU)以實現低延遲效能,處理時間序列資料(如音訊和視訊幀)的同步。
MediaPipe將每個感知模型抽象為一個模組,並將它們與維護圖連線起來。
除上述功能外,MediaPipe還支援TensorFlow和TF Lite推理引擎。任何TensorFlow和TF Lite模型均可用於MediaPipe。同時,在移動和嵌入式平臺上,MediaPipe還支援裝置本身的GPU加速。
現在是時候向MediaPipe的應用邁進了,人臉檢測。
考慮一個場景,“零售商要求你計算訪客數量,並跟蹤訪客的移動。”
看起來很難!!我們怎樣才能解決這個問題?嗯…
哦,是的!我們將使用人臉檢測來解決這個問題。
人臉檢測是計算機視覺中的一個問題,即在照片中定位和定位一個或多個人臉。
問題的一般陳述可以定義如下:給定一幅靜止或視訊影象,檢測並定位未知數量(如果有)的人臉。
使用MediaPipe執行人臉檢測:
要執行人臉檢測,可以使用三種模型:
全範圍密集模型和稀疏模型在F分數方面具有相同的質量,但在基礎度量方面有所不同。
密集型模型的召回率略高於稀疏模型,而稀疏模型的精確度高於稠密模型。
現在是時候使用MediaPipe的人臉檢測模型了。
安裝必要的庫
要執行人臉檢測,首先必須在機器中安裝MediaPipe。如果你是windows使用者,則可以在計算機的命令提示字元下執行以下程式碼。
pip install mediapipe
有關詳細說明,你可以存取以下連結:
https://google.github.io/mediapipe/getting_started/python.html
你還需要為網路攝像頭或影象輸入安裝OpenCV。如果你是windows使用者,可以在命令提示字元下執行以下程式碼。
pip install opencv-python
有關詳細說明,你可以存取以下連結:
https://pypi.org/project/opencv-python/
編寫程式碼以瞭解API的使用:
我們使用Google Colab來執行程式碼。你可以選擇使用它。
我們需要cv2,能夠讀取和顯示影象,以及MediaPipe模組,它公開了我們執行人臉檢測所需的功能
import cv2 import mediapipe as mp
然後我們將存取兩個子模組face_detection和drawing_utils。人臉檢測用於載入所有功能以執行人臉檢測,而繪圖工具用於在影象上繪製檢測到的人臉。
mp_face_detection = mp.solutions.face_detection mp_drawing = mp.solutions.drawing_utils
是時候深入研究程式碼了。首先,我們將影象作為輸入。這裡我們使用兩種型別的影象
(i) 包含2米以內的人臉的影象
(ii)包含5米以內的人臉的影象。
我們使用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() # 獲取輸入
單擊此處瞭解有關cv2.imread:
現在我們將調整影象大小並顯示影象。為了顯示影象,我們必須使用colab或cv2的cv2_imshow模組。
在本地機器中工作時顯示cv2.imshow(frame name, iamge)。我們可以使用下面的程式碼在google colab中調整影象大小並顯示影象。
用於調整影象大小和顯示影象的程式碼:
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) # 預覽圖片. 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)
上述程式碼的輸出範例
現在,我們將在臉上畫關鍵點。
我們可以如下更改thickness和circle_radius的值。
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
以下程式碼瞭解mp.solutions.face_detection的詳細資訊。
help(mp_face_detection.FaceDetection)
在此之後,我們將建立一個FaceDetection類的物件。該物件將允許我們處理影象並執行人臉關鍵點檢測。此類別建構函式支援以下引數:
(i) 模型選擇:整數索引0或1。使用0選擇最適合距離攝影機2米以內的面的短距離模型,使用1選擇最適合距離攝影機5米以內的面的全範圍模型。對於全範圍選項,稀疏模型用於提高推理速度。
(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,這意味著我們選擇短距離模型進行人臉檢測。使用下面的程式碼,我們使用一個簡短的影象模型執行最終的人臉檢測,並繪製關鍵點。
# 執行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影象轉換為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)
短長度(2米以內)影象的人臉檢測模型
現在對於model_selection=1,這意味著我們選擇人臉檢測全範圍模型。使用下面的程式碼,我們使用完整的影象模型執行最終的人臉檢測,並繪製關鍵點。
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影象轉換為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)
全範圍(5米以內)影象的人臉檢測模型
我們還可以使用全範圍人臉檢測模型的程式碼對集體照片執行此過程。
下面關於algoscale的文章將向你展示使用OpenCV和MediaPipe姿勢估計。
使用OpenCV和MediaPipe進行訓練姿勢估計:
https://algoscale.com/tech-corner/workout-pose-estimation-using-opencv-and-mediapipe/
到此這篇關於Python+MediaPipe實現檢測人臉功能詳解的文章就介紹到這了,更多相關Python MediaPipe檢測人臉內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45