CartoonSegmentation を使ったキャラクター切り抜き
こんにちはこんばんは、teftef です。今回は,CartoonSegmentation を使って画像内の被写体抽出をするツールについてです。実はあまりフロントエンドの開発経験がなく、いつかやろうと思っていた React + FastAPI の勉強ついでに作ってみたツールに紹介もあります。
私もまだ初学者であり、説明が間違っていたり勘違いがある可能性が 0 ではないということをご了承ください。ぜひコメントなどをいただけたら幸いです。また、この記事を作成するにあたり、GPT-4 による校正、修正が含まれています。
※この記事は有料となっていますが、最後まで内容が読めます。
前回の記事で、 セマンティックセグメンターションを用いて画像から特定のオブジェクトの RGBα 画像を抽出してみました。
その結果、被写体抽出するだけなのであれば、CartoonSegmentation を使ってやった際に、最も精度高く (定性評価) 被写体抽出できたと思います。
そこで、 React と FastAPI の練習として、軽い切り抜きツールを作ってみました。
使い方
Node.js のインストール
とりあえず Node.js が必要なので入れましょう。
repositoryのクローン
git clone https://github.com/teftef6220/CartoonSegmentation_React.git
cd CartoonSegmentation_React
クローンして開きます。
仮想環境作成
仮想環境を作成し、
python -m venv .venv
.\.venv\Scripts\activate
環境構築
python と Node.js の環境を構築する。
# python の環境構築
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install -U openmim
mim install mmengine
mim install "mmcv>=2.0.0"
mim install mmdet
pip install -r requirements.txt
pip install pytoshop -I --no-cache-dir
# Node.js の環境構築
npm install
モデルのダウンロード
モデルを huggingface からダウンロードします。
huggingface-cli lfs-enable-largefiles .
mkdir models
git clone https://huggingface.co/dreMaz/AnimeInstanceSegmentation models/AnimeInstanceSegmentation
下のリンクからダウンロードし、 models というディレクトリを作ってその中に保存でもいいです。
起動
start_ui.bat をダブルクリックで実行します。
なんかエラー出る!!という場合はコマンド画面から直接実行することもできます。⇩
ターミナルを 2 つ立ち上げて、両方とも仮想環境に入っておきます。
片方で、
python fast_api.py
もう片方で、
cd react-app
npm start
を実行すると
このようにブラウザが立ち上がります。
パーツ分け
「ファイルを選択」から画像を選択して Process Image を押して少し待ちます。そうすると結果が下に出てくるので、欲しい画像を選択して、左下の save Image で保存したりできます。
Photoshop データ
processed/ の下に psd データとしてそれぞれのレイヤーが保存されています。
最後に
というわけで、キャラクターのパーツ分けソフトです。この先、レイヤー分けしたpsd ファイルを作成するなどいろいろ付け足していきま。。
最後に少し宣伝です。主のteftefが運営を行っているdiscordサーバーを載せます。このサーバーでは Midjourney やStable Diffusionのプロンプトを共有したり、研究したりしています。ぜひ参加して、お絵描きAIを探ってみてはいかがでしょう。(2,000 字,teftef)
↓↓もしよろしければこの記事と開発の支援お願いいたします!
※注意 : 支援してくださる方へ
※注意 :ここから先は何も内容がありません。しかし、この記事をお読みいただき、良かったと感じていただけたのであれば、この記事と開発の支援お願いいたします!
ここから先は
¥ 500
この記事が気に入ったらサポートをしてみませんか?