/mediapipe-python-sample

MediaPipeのPythonパッケージのサンプルです。2021/06/04時点でPython実装のある7機能(Hands、Pose、Face Mesh、Holistic、Face Detection、Objectron、Selfie Segmentation)について用意しています。

Primary LanguagePythonApache License 2.0Apache-2.0

mediapipe-python-sample

MediaPipeのPythonパッケージのサンプルです。
2021/12/14時点でPython実装のある以下7機能について用意しています。

Requirement

  • mediapipe 0.8.8 or later
    ※旧バージョンのMediaPipeを使用する場合はTagsの旧コミット版を利用ください
  • OpenCV 3.4.2 or later
  • matplotlib 3.4.1 or later ※Pose/Holisticでplot_world_landmarkオプションを使用する場合のみ

mediapipeはpipでインストールできます。

pip install mediapipe

Demo

デモの実行方法は以下です。

Face Mesh

python sample_facemesh.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --max_num_hands
    最大手検出数
    デフォルト:1
  • --refine_landmarks
    ATTENTION MESH MODELを使用するか否か ※目と口周りのランドマークがより正確になる
    デフォルト:指定なし
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.5
  • --min_tracking_confidence
    トラッキング信頼値の閾値
    デフォルト:0.5
  • --use_brect
    外接矩形を描画するか否か
    デフォルト:指定なし
  • --selfie
    ミラーにするかどうか
    デフォルト:指定なし

Hands

python sample_hand.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --model_complexity
    モデルの複雑度(0:軽量 1:高精度)
    デフォルト:1
  • --max_num_faces
    最大顔検出数
    デフォルト:1
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.7
  • --min_tracking_confidence
    トラッキング信頼値の閾値
    デフォルト:0.5
  • --use_brect
    外接矩形を描画するか否か
    デフォルト:指定なし
  • --plot_world_landmark
    World座標をmatplotlib表示する ※matplotlibを用いるため処理が重くなります
  • --selfie
    ミラーにするかどうか
    デフォルト:指定なし

Pose

python sample_pose.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --model_complexity
    モデルの複雑度(0:Lite 1:Full 2:Heavy)
    ※性能差はPose Estimation Qualityを参照ください
    デフォルト:1
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.5
  • --min_tracking_confidence
    トラッキング信頼値の閾値
    デフォルト:0.5
  • --enable_segmentation
    人物セグメンテーションを有効化するか
    デフォルト:指定なし
  • --segmentation_score_th
    人物セグメンテーションの閾値
    デフォルト:0.5
  • --use_brect
    外接矩形を描画するか否か
    デフォルト:指定なし
  • --plot_world_landmark
    World座標をmatplotlib表示する ※matplotlibを用いるため処理が重くなります
    デフォルト:指定なし
  • --selfie
    ミラーにするかどうか

Holistic

python sample_holistic.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --model_complexity
    モデルの複雑度(0:Lite 1:Full 2:Heavy)
    ※性能差はPose Estimation Qualityを参照ください
    デフォルト:1
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.5
  • --min_tracking_confidence
    トラッキング信頼値の閾値
    デフォルト:0.5
  • --enable_segmentation
    人物セグメンテーションを有効化するか
    デフォルト:指定なし
  • --unuse_smooth_landmarks
    人物セグメンテーションのスムース化を使用しない
    デフォルト:指定なし
  • --segmentation_score_th
    人物セグメンテーションの閾値
    デフォルト:0.5
  • --use_brect
    外接矩形を描画するか否か
    デフォルト:指定なし
  • --plot_world_landmark
    World座標をmatplotlib表示する ※matplotlibを用いるため処理が重くなります
    デフォルト:指定なし
  • --selfie
    ミラーにするかどうか

Face Detection

python sample_facedetection.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --model_selection
    モデル選択(0:2m以内の検出に最適なモデル、1:5m以内の検出に最適なモデル)
    デフォルト:0
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.5
  • --selfie
    ミラーにするかどうか
    デフォルト:指定なし

Objectron

python sample_objectron.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --static_image_mode
    静止画像モード ※トラッキング無し
    デフォルト:指定なし
  • --min_detection_confidence
    検出信頼値の閾値
    デフォルト:0.5
  • --min_tracking_confidence
    トラッキング信頼値の閾値
    デフォルト:0.99
  • --model_name
    検出対象(20201/03/03時点:'Shoe', 'Chair', 'Cup', 'Camera'の4種類)
    デフォルト:Cup
  • --selfie
    ミラーにするかどうか
    デフォルト:指定なし

Selfie Segmentation

python sample_selfie_segmentation.py
  • --device
    カメラデバイス番号の指定または動画ファイル名
    デフォルト:0
  • --width
    カメラキャプチャ時の横幅
    デフォルト:960
  • --height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • --model_selection
    モデル種類指定
    0:Generalモデル(256x256x1 出力)
    1:Landscapeモデル(144x256x1 出力)
    デフォルト:0
  • --score_th
    スコア閾値(閾値以上:人間、閾値未満:背景)
    デフォルト:0.1
  • --bg_path
    背景画像格納パス ※未指定時はグリーンバック
    デフォルト:None
  • --selfie
    ミラーにするかどうか
    デフォルト:指定なし

For Raspberry Pi

以下のRaspberry Pi向けビルドを利用することで、Raspberry Pi上で本サンプルを試すことが出来ます。
mediapipe-bin は、v0.8.4 および v0.8.5のバージョンが提供されています。
mediapipe-python-sample は タグv0.8.4、v0.8.5のコードをご使用ください。

ToDo

  • Holisticのサンプル追加 (mediapipe 0.8.1)
  • Poseのz座標表示を追加 (mediapipe 0.8.3)
  • Face Detectionのサンプル追加 (mediapipe 0.8.3)
  • Objectronのサンプル追加 (mediapipe 0.8.3)
  • 動画ファイル対応とミラーをフラグに変更

Reference

Author

高橋かずひと(https://twitter.com/KzhtTkhs)

License

mediapipe-python-sample is under Apache-2.0 License.

また、女性の画像、および背景画像はフリー素材ぱくたそ様の写真を利用しています。