kivantium活動日記

プログラムを使っていろいろやります

姿勢推定を用いたキャラクター画像検索

この記事は創作+機械学習 Advent Calendar 2022の1日目です。

adventar.org

はじめに

去年のAdvent Calendarから一年が経ち、再びAdvent Calendarの季節がやってきました。毎年のことながら時間が流れるのは早いものです。

2022年には拡散モデルを用いた画像生成AIが大発展を遂げました。2015年に話題となったDCGANによるアニメ画像生成(抹茶さんのツイートrezoolabさんの記事)とNovelAIの生成画像(pixivをNovelAIで検索した結果)を比較すると、まさに隔世の感があります。AIのべりすとをはじめとする言語モデルの応用も進み、小説投稿サイトでAI支援を利用して生成された小説を見かけることも珍しくなくなってきました。

生成モデルが進展した一方、今年は機械学習の訓練データの扱いを巡る論争が激化した年でもありました。mimicの炎上は記憶に新しいところです。海外ではGoogle Copilotに対する集団訴訟が提起されています

機械学習の創作への応用が正と負の両面で盛り上がった2022年でした。そんな今年のAdvent Calendarにどのような記事が投稿されるのか楽しみにしています。スペースにはまだまだ空きがありますので興味を持った方は今からでも是非登録してみてください。

姿勢推定を用いたキャラクター画像検索

この記事では姿勢推定を用いたキャラクター画像検索サービスについて紹介します。

絵を描く際に類似ポーズのイラストを参考にすることがありますが、イラストをポーズで検索することは難しく、せいぜい「手を上げる イラスト」のようなキーワードで検索することしかできないのが現状です。また、NovelAIが登場した当初、生成画像が学習データに酷似しており、学習データの姿勢を保存して画風を変換するような仕組みになっているのではという疑惑の声が上がっていました。学習元のデータセットから姿勢が似ている画像を検索することができれば学習データとの類似性を判定できる可能性があります。(なお現在はStable Diffusionに独自の改造を施したものであることが判明しています: 公式解説

そこで、姿勢推定を用いてキャラクター画像を検索できるサービスを開発することにしました。

実装

姿勢推定アルゴリズムにはbizarre-pose-estimatorを利用しています。

このモデルは入力画像に対して25個の特徴点(17個のCOCO keypointsと8個の中間点)を返します。

COCO keypoints と中間点(画像はKhungurn, et al からの引用)

元論文によると検索対象のデータセットは以下のように構築されています。

  1. 検索対象の各キャラクターを囲むバウンディングボックスと25個の特徴点を求める
  2. 特徴点をバウンディングボックスの長辺の長さで正規化する
  3. 正規化された各特徴点間のユークリッド距離を保存する

正規化された特徴点間の距離を利用することで、並進・回転・拡大・縮小に対して不変の特徴量を得ることができます。特徴点は25個あるので  _{25} C_2 =300次元ベクトルになります。

Hugging Faceへのデプロイ

このモデルはメモリの消費量が多いため、手持ちのサーバーにデプロイすることができませんでした。そこで、Hugging Face上にアプリを構築しました。

huggingface.co

このアプリではアップロードされた画像の姿勢に類似したの画像を検索することができます。現在は元論文のレポジトリに付属していたデータセットを検索対象としています。このデータセットDanbooru上でfull_bodyタグがついた単一キャラクターの画像からなるそうです。

にじさーちへの組み込み (β版)

また、このモデルを利用したポーズ検索機能を我々が開発している画像検索サイトのにじさーちに試験的に実装しています。メモリ容量の関係でアップロード画像の姿勢を推定することができないため、代わりに棒人間を動かして検索するユーザーインターフェースを採用しました。検索対象が6000枚程度なので検索性能はあまりよくありません。 (フロントエンドの実装は@amane_lyricに協力していただきました)

ポーズ検索の例 (https://nijisearch.kivantium.ai/pose_search/)

開発に興味のある方は是非pull requestを送ってください。

github.com

今後の課題

現在利用しているモデルは全身画像を前提としているため、全身が写っていない画像の姿勢推定を行うことができません。投稿されるイラストの多くは身体の一部が写っていないため、検索対象にできる画像の枚数が限られてしまいます。

また、特徴点間のユークリッド距離を特徴量として用いているためか、検索結果が直感的にいまいち正しくないと感じることが多くあります。人間がより自然に感じる姿勢類似性の基準を考える必要がありそうです。

宣伝

私達が発行している同人誌 Pythia 2.0 に『画像からのアニメキャラクター姿勢推定』という記事が掲載されています。

thetenthart.booth.pm

広告コーナー