Matte-Anything で人物を切り抜いてみたら精度が高くて驚きました

はじめに

こちらを使わせていただきました。
github.com

環境構築

GitHubに書いてある通りにやりましたが、最初はなかなかうまくいきませんでした。

ハマりポイントを挙げておきます。

  • opencv-python==4.5.3.56を指定されているのでPythonは3.9以下にする必要があります
  • 次のようなエラーが出たため、Gradio==3.41.2にダウングレードしました
AttributeError: 'Row' object has no attribute 'style'
  • opencv-python-headless==4.9.0.80をアンインストールする必要がありました
AttributeError: partially initialized module 'cv2' has no attribute '_registerMatType' (most likely due to a circular import)
  • さらにその後にopencv-python==4.5.3.56を再インストールする必要がありました
AttributeError: module 'cv2' has no attribute '__version__'

結果

元画像


作成された画像





人物を切り抜いて他の背景画像に貼り付けただけですが、切り抜きの精度が高いため違和感が全くありません。

(注)正確には切り抜き、貼り付けではなく、「alpha blending」です。

alpha blendingの方法

import cv2
import numpy as np

original = cv2.imread("woman.png")/255
bg = cv2.imread("bg.png")/255
alpha = cv2.imread("matte.png")/255

new_image = original * alpha + bg * (1 - alpha)
result = (new_image * 255).astype(np.uint8)
cv2.imwrite("result.png", result)

環境

Ubuntu 22.04 on WSL2
CUDA 11.8
Python 3.9

補足①

Ubuntu 22.04にPython3.9をインストールする方法です。

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install python3.9 python3.9-dev python3.9-venv





このエントリーをはてなブックマークに追加