1. 最初の知り合い
MediaPipe での顔の特徴点検出には、MediaPipe が提供する事前トレーニング済みモデルとライブラリを使用できます。MediaPipe は、人間の顔の 468 個の特徴点をリアルタイムに検出する「FaceMesh」と呼ばれるモデルを提供しています。
MediaPipe を使用して顔の特徴点を検出する基本的な手順は次のとおりです。
-
MediaPipe をインストールする: まず、MediaPipe フレームワークをインストールする必要があります。
-
入力と出力のセットアップ: 入力データのソース (カメラ、ビデオ ファイル、または画像など) を決定します。同時に、検出された顔のランドマークを保存するように出力を設定します。
-
MediaPipe グラフの作成: MediaPipe フレームワークの API を使用して、「FaceMesh」モデルをロードし、入力データを処理するためのグラフを作成します。
-
グラフの実行: MediaPipe グラフの入力ノードに入力データを渡し、グラフの出力ノードから結果を取得することで、顔特徴点検出用のグラフを実行します。
-
結果の処理: 出力ノードから検出された顔特徴点の結果を取得し、それらに対してさらなる分析またはアプリケーション統合を実行します。
MediaPipe の「FaceMesh」モデルは、目、眉、鼻、口など、人間の顔画像内の主要な特徴点を自動的に見つけて識別できます。ニーズに応じて特定の特徴点の使用を選択できます。
さらに、MediaPipe は、手の検出、姿勢推定などの他の機能とモデルも提供します。
2. 顔特徴点検出
(1) 設置環境
pip install opencv-python
pip install mediapipe==0.8.3.1
(2) OpenCV読み込み動画
コード:
import cv2
import mediapipe as mp
import time
cap = cv2.VideoCapture("Video/6.mp4") # 加载视频
pTime = 0
while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 帧数
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS:{int(fps)}', (20, 70), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)
効果:
無料動画素材URL添付:Pexels
(3) 特徴点検出
コード:
import cv2
import mediapipe as mp
import time
cap = cv2.VideoCapture("Video/6.mp4") # 加载视频
pTime = 0
mpDraw = mp.solutions.drawing_utils # drawing_utils模块:绘制特征点和边界框
mpFaceMesh = mp.solutions.face_mesh
faceMesh = mpFaceMesh.FaceMesh(max_num_faces=2) # 初始化FaceMesh模块
drawSpec = mpDraw.DrawingSpec(thickness=1, circle_radius=2) # 绘图样式
while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = faceMesh.process(imgRGB) # process():检测人脸关键点
# 获取关键点信息
if results.multi_face_landmarks:
for faceLms in results.multi_face_landmarks:
mpDraw.draw_landmarks(img, faceLms, mpFaceMesh.FACE_CONNECTIONS, drawSpec, drawSpec) # 绘制关键点
for id, lm in enumerate(faceLms.landmark):
# print(lm)
ih, iw, ic = img.shape
# 关键点坐标
x, y = int(lm.x * iw), int(lm.y * ih)
print(id, x, y)
# 帧数
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS:{int(fps)}', (20, 70), cv2.FONT_HERSHEY_PLAIN, 3, (0, 255, 0), 3)
cv2.imshow("Image", img)
cv2.waitKey(1)
効果:
3. 応用の見通し
顔特徴点検出は、コンピュータビジョンや人工知能の分野で幅広い応用が期待されています。次のように:
-
顔認識と認証: 顔特徴点検出は、顔認識と認証の基礎です。目、鼻、口などの顔の主要な特徴点を正確に検出することにより、顔の固有の特徴表現を確立することができます。これは、安全なアクセス制御システム、モバイルデバイスのロック解除、オンライン支払い検証などで使用できます。
-
表情分析と感情認識: 顔の特徴点の検出は、顔の表情と感情状態の分析に役立ちます。目、眉、口角などの重要な特徴点の位置や変化を検出することで、笑顔、怒り、悲しみなどの表情を判定します。これは、ソーシャルメディア分析、市場調査、感情認識技術などに幅広く応用できます。
-
顔の美化と仮想メイクアップ: 顔の特徴点の検出は、顔の美化と仮想メイクアップのアプリケーションに使用できます。顔の重要な特徴点を特定することで、目の大きさを変更したり、口の形を調整したりするなど、顔の特徴を分析および修正して、顔の美化効果を実現できます。これは、モバイル アプリ、カメラ ソフトウェア、仮想試着などの分野で非常に人気があります。
-
顔の変換と顔の融合: 顔の特徴点検出を使用して、顔の変換と顔の融合の効果を実現できます。複数の顔の重要な特徴点を検出することで、ある人物の顔の特徴を別の人物の画像に適用し、表情、年齢、性別などの変換や融合を実現します。これは、エンターテイメント アプリケーション、映画の特殊効果、顔変更ソフトウェアなどに幅広く応用できます。
-
ビデオ分析と人間とコンピューターのインタラクション: 顔のランドマーク検出は、ビデオ分析と人間とコンピューターのインタラクションの分野でも重要な役割を果たします。人間の顔の重要な特徴点をリアルタイムに検出・追跡することで、表情認識、ジェスチャー認識、頭部姿勢追跡などの機能を実現できます。これは、拡張現実、仮想現実、ゲーム開発、ユーザー エクスペリエンスの向上などに大きな可能性を秘めています。