Mediapipeことはじめ

mediapipeことはじめ

1 概要

  • 瞳検出、Dlibよりも細かい顔ランドマーク検出、体のボーン検出など、相当良さげ

3 インストール(Python)

  • Pythonをインストールしてから、pip install mediapipeで、Pythonから使えるようになる(Linux,Windows,Mac等)

3.1 以下の操作を行っている動画


3.2 インストール(Python) する手順

  • Pythonがインストールされてて、pipあるいはpip3が使える環境で以下を実行
  • virtualenv で作成した方が良いかも。動画では virtualenv mediapipeしてから以下を行なった。
    • ipythonも追加でインストール
pip install mediapipe
or
pip3 install mediapipe

3.3 この章のまとめ

  • Python用のMediaPipeをインストール

4 顔のランドマーク(Python)検出

  • Pythonをインストールしてから、pip install mediapipeで、Pythonから使えるようになる(Linux,Windows,Mac等)

4.1 以下の操作を行っている動画


4.2 顔のランドマーク(Python)検出 する手順

  • MediaPipe Face Mesh https://google.github.io/mediapipe/solutions/face_mesh にあるサンプルソースを修正した
    • # For webcam input: までをコピペ
    • globを利用してカレントディレクトリにあるjpgファイルに対して処理
    • 元々は/tmpディレクトリに結果を書き出すが、ここでは、表示するように修正(オリジナルと、結果)
  • MediaPipe Face Mesh Colab https://mediapipe.page.link/face_mesh_py_colab もわかりやすい
  • 画像としては、パブリックドメインの”Yukichi_Fukuzawa_1891.png”File:Yukichi_Fukuzawa_1891.jpgを利用。他のファイルでもOK
  • ランドマークの描画の色がわかりにくいので、赤に変更するオプション追加
import cv2
import mediapipe as mp
import glob
mp_drawing = mp.solutions.drawing_utils
mp_face_mesh = mp.solutions.face_mesh

#file_list=["radu-florin-JyVcAIUAcPM-unsplash_small.jpg"]
file_list=glob.glob('*.jpg')

# For static images:
#drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1, color=(0, 0, 255))
with mp_face_mesh.FaceMesh(
    static_image_mode=True,
    max_num_faces=1,
    min_detection_confidence=0.5) as face_mesh:
  for idx, file in enumerate(file_list):
    image = cv2.imread(file)
    cv2.imshow('org', image)
    # Convert the BGR image to RGB before processing.
    results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

    # Print and draw face mesh landmarks on the image.
    if not results.multi_face_landmarks:
      continue
    annotated_image = image.copy()
    for face_landmarks in results.multi_face_landmarks:
      print('face_landmarks:', face_landmarks)
      mp_drawing.draw_landmarks(
	  image=annotated_image,
	  landmark_list=face_landmarks,
	  connections=mp_face_mesh.FACE_CONNECTIONS,
	  landmark_drawing_spec=drawing_spec,
	  connection_drawing_spec=drawing_spec)
    cv2.imshow('result', annotated_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    #cv2.imwrite('/tmp/annotated_image' + str(idx) + '.png', annotated_image)

4.3 この章のまとめ

  • Python用のMediaPipeで顔のランドマーク(Python)検出を行った。

5 今後

  • 今後も文書追加していきます。

6 この文書のチェンジログ

  • 2021/02/19 初版
  • 2021/05/17 長期放置の後、修正、追加

著者: NM Max

Created: 2021-05-20 木 05:49

Validate

AI関係、もうちょいしたら大きいところが勝って他は勝てなくなる説を聞いた

情報が世界中で共有されるようになって、巨大な資本があるところが有利で、人もあつまってる、なので巨大なところが今後も勝ちまくりで逆転不可能で、占有がすすみ、小さいところは淘汰されるよ説を聞いちゃった。

なるほどって関心した。そうなりそう、確かに。

今絶頂の感じでみんなが思ってるところって、調子良い寿命短いこと多いよね。

でもAIの勉強はしとこw

AI関係数年前に相当金になったらしい

AIブームが来た為に、数年前、人材不足で高騰してたらしい。

AI関係かなり前から勉強はしてて、ツールもRのツールで簡単なデータにたいしては処理したことがありました。

実際のデータに適用して活用できたことはなかったけど。

DeepLearningがブームになってるので、こればっかりが有名担ってる感じ

Random Forestとか、他もやってみてたことあるんだけど、Rを使って。

サンプルデータが公開されてて、自分のポートフォリを作れるサイトがあるらしく、今度やってみよ。