OpenPose(棒人間)を作成したり入手する
Stable DiffusionのControlNetで使えるOpenPose画像をあらかじめ用意することを考えます
controlnet_aux
annotator
https://github.com/patrickvonplaten/controlnet_aux
Pythonを使用します。モデルは自動的にダウンロードされます
pip install controlnet-aux
# -*- coding: utf-8 -*-
import requests
from PIL import Image
from io import BytesIO
from controlnet_aux.processor import Processor
# load image
url = "https://huggingface.co/lllyasviel/sd-controlnet-openpose/resolve/main/images/pose.png"
response = requests.get(url)
img = Image.open(BytesIO(response.content)).convert("RGB").resize((512, 512))
# load processor from processor_id
# options are:
# ["canny", "depth_leres", "depth_leres++", "depth_midas", "depth_zoe", "lineart_anime",
# "lineart_coarse", "lineart_realistic", "mediapipe_face", "mlsd", "normal_bae", "normal_midas",
# "openpose", "openpose_face", "openpose_faceonly", "openpose_full", "openpose_hand",
# "scribble_hed, "scribble_pidinet", "shuffle", "softedge_hed", "sof tedge_hedsafe",
# "softedge_pidinet", "softedge_pidsafe", "dwpose"]
processor_id = 'openpose_face'
processor_id = 'openpose_faceonly'
processor_id = 'openpose_full'
processor_id = 'openpose_hand'
processor_id = 'openpose'
processor = Processor(processor_id)
processed_image = processor(img, to_pil=True)
processed_image.save(f"{processor_id}.png")
DWposeはこちら
https://memo.eightban.com/stable-diffusion/dwpose
バッチ処理で複数のポーズを作りたい場合はこちら
https://memo.eightban.com/stable-diffusion/openposedwpose
pytorch-openpose
https://github.com/Hzzone/pytorch-openpose
body_pose_model.pth
https://huggingface.co/ckpt/ControlNet/blob/main/body_pose_model.pth
hand_pose_model.pth
https://huggingface.co/ckpt/ControlNet/blob/main/hand_pose_model.pth
Pythonを使用します。モデルをダウンロードして配置する必要があります。
import cv2
import matplotlib.pyplot as plt
import copy
import numpy as np
from src import model
from src import util
from src.body import Body
from src.hand import Hand
body_estimation = Body('model/body_pose_model.pth')
hand_estimation = Hand('model/hand_pose_model.pth')
test_image = 'images/demo.jpg'
oriImg = cv2.imread(test_image) # B,G,R order
candidate, subset = body_estimation(oriImg)
canvas = copy.deepcopy(oriImg)
cv2.rectangle(canvas, (0, 0), (oriImg.shape[1],oriImg.shape[0]), (0, 0, 0), -1)
canvas = util.draw_bodypose(canvas, candidate, subset)
# detect hand
hands_list = util.handDetect(candidate, subset, oriImg)
all_hand_peaks = []
for x, y, w, is_left in hands_list:
# cv2.rectangle(canvas, (x, y), (x+w, y+w), (0, 255, 0), 2, lineType=cv2.LINE_AA)
# cv2.putText(canvas, 'left' if is_left else 'right', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
# if is_left:
# plt.imshow(oriImg[y:y+w, x:x+w, :][:, :, [2, 1, 0]])
# plt.show()
peaks = hand_estimation(oriImg[y:y+w, x:x+w, :])
peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], peaks[:, 0]+x)
peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)
# else:
# peaks = hand_estimation(cv2.flip(oriImg[y:y+w, x:x+w, :], 1))
# peaks[:, 0] = np.where(peaks[:, 0]==0, peaks[:, 0], w-peaks[:, 0]-1+x)
# peaks[:, 1] = np.where(peaks[:, 1]==0, peaks[:, 1], peaks[:, 1]+y)
# print(peaks)
all_hand_peaks.append(peaks)
canvas = util.draw_handpose(canvas, all_hand_peaks)
plt.imshow(canvas[:, :, [2, 1, 0]])
plt.axis('off')
plt.show()
本家の OpenPoseで棒人間を作成
Pythonをインストールしなくても使用することができます。
PoseMy.Art
アートのポーズリファレンスを作成するのに役立つ巨大なアニメーション/ポーズライブラリを備えたシンプルで強力な3Dモデルポーザー
ライブラリーからポーズを選んでオープンポーズ形式で保存することができます。またポーズを自由に変更することができます
open-pose-editor-dev
https://github.com/ZhUyU1997/open-pose-editor-dev
リリースページからHTMLをダウンロードしてください。棒人間をクリックするとポーズを変更することができます
棒人間のままポーズを変更でき情報をジェイソン形式で保存することができ再利用ができます。画像からポーズ作成したりランダムポーズを利用することができます。ウェブアプリのため機種を問いません。
こちらのURLをクリックするとダウンロードしなくても動かすことができます
https://zhuyu1997.github.io/open-pose-editor/
Posex – Estimated Image Generator for Pose2Image
マウス操作で指定できます。パイソンプログラムです
https://github.com/hnmr293/posex
Openpose Editor – BO-NIN
棒人間エディタ BO-NIN はOpenposeデータを編集することができるエディタです。Windows上でスタンドアロンにて動作します。マウスで操作します
Blender
openposeのようなモデルをダウンロードし展開します。Blenderから読み込むと使用することができます
civitai
Civitaiは、Stable Diffusion AIアートモデルのためのプラットフォームです。増え続けるクリエイターの何千ものモデルのコレクションを閲覧できます。
civitai models posesを選びオープンポーズをダウンロードしてください
https://civitai.com/models?tag=poses
18禁のデータは登録すると見ることができます
Poseと入れて検索しても出てきます
オープンポーズ画像に余白を入れたり自動でトリミングするPythonプログラム
余分な余白を取り除いたり頭の部分を全て表示できるように余白を入れたりするプログラムです
https://memo.eightban.com/python/trim_image_with_margins
diffusersで使用する方法
https://memo.eightban.com/stable-diffusion/stable-diffusion-diffusers1
フリー素材
フリー素材の中に色々なポーズがあります
AIピックス
AIが生成した美女のフリー素材
ぱくたそ
ぱくたそは、高品質・高解像度の写真を無料でダウンロードできるウェブサービスです。
パブリックドメインQ:著作権フリー画像素材集
パブリックドメインQ:著作権フリー画像素材集 (publicdomainq.net)
VRMファイル(モデルデータ)を作って動かす
モデルデータを作るとモーションキャプチャーしたりモーションキャプチャーデータを使って動かすこともできます。もちろん用意されたポーズを使って画像を保存したりすることもできます。
https://memo.eightban.com/etc/vrm
https://memo.eightban.com/etc/bvh
ディスカッション
コメント一覧
まだ、コメントがありません