背景
前回の記事で述べたように、修士2年のとき、私の研究テーマは変更されました。その背景として、当時、生成AIが本格的に普及していました。当時はさまざまな生成モデルが登場しており、例えば画像生成モデルのStable Diffusionなどが挙げられます。生成される画像は非常に高品質でした。人物や風景の高解像度画像を、テキストによる指示に従って、十秒以内に生成することが可能になりました。その分野を学ぶと同時に、これまでの研究と組み合わせることができると考え、人物画像生成を研究テーマとして選択しました。
研究内容の検討
当初、私が関心を持っていた研究方向は、人物画像生成ではなく、人物動画生成でした。人物動画生成には、二つの入力が必要です。一つは人物の参考画像であり、もう一つはポーズ情報のみから構成される動画です。出力としては、参照画像の人物が指定されたポーズに従って動作する、新たな動画が生成されます。人物動画生成は視覚的に非常に魅力的なタスクであると感じました。一方で、人物動画生成におけるモデル学習には、非常に高い難易度があります。大量のGPU資源や大規模なデータセットを必要とし、学習には長時間を要します。実際にオーペンソースのモデルを用いて学習を試みましたが、個人の研究環境では十分な学習を進めることは困難だと判断しました。一方、人物画像生成ではポーズ動画を必要とせず、単一のポーズ画像のみで条件付けが可能です。そこで本研究では、姿勢誘導型人物画像生成を研究テーマとしました。本タスクは、二つの入力条件が必要となります。一つは生成したい画像内容を記述したテキスト、もう一つは参照ポーズ画像です。これら二つの条件に従い、指定されたポーズを持つ人物画像が生成されます。本タスクは動画生成と比較すると比較的単純ですが、実際に取り組む中で様々な課題が存在しました。
解決したい課題
姿勢誘導型人物画像生成に関する先行研究は存在しますが、一つの課題があります。それは、生成された画像において、人物の姿勢が入力姿勢とわずかにずれてしまう点です。例えば、参照したポーズでは手を挙げっている姿勢が示されているにもかかわらず、生成結果では、手の高さや角度が大きく異なるといった状況は頻繁に見られます。このような姿勢再現精度を向上させるために、本研究では新たな手法を提案しました。
提案手法
既存手法では、姿勢条件を導入するために、Controlnetが多く用いられています。Controlnetは、姿勢情報だけでなく、スケッチや深度マップなど、様々な条件を入力として利用できます。これらの条件に従って、対応する画像が生成されます。しかし、姿勢精度をさらに向上させるためには、従来手法とは異なる工夫が必要です。本研究では、Controlnetのファインチューニング手法として、追加の学習ステップを導入しました。一般的なControlnetの学習では、単一の損失関数が用いられることが多いです。しかし、姿勢再現精度を向上させるためには、参照ポーズに重点を置いた損失設計が必要です。そこで本研究では、二段階学習方法を提案します。第一段階は、従来手法と同様の損失関数を用いて学習を行います。この段階では、様々な参照ポーズに対して安定した生成が可能となるようモデルを学習させます。この段階では、高精度な姿勢再現は必ずしも求めません。第二段階では、Heatmap-guided Denoising Lossを導入します。この損失関数は、HumanSD の手法を参考に設計されています。本損失関数は、生成画像において姿勢周辺領域に高い重みを与え、背景領域には相対的に低い重みを与える特性を持ちます。そして、この損失を用いることで、第二段階において姿勢再現精度の向上を実現します。
この手法を説明のために、以下の図表をご覧てください。

もし興味がある方は、この修士卒業論文を読んでください。
評価と結果
定量的な結果を示すために、三つの評価指標を用いました。CLIP Score、LIPIS、OKSの三つを採用しました。これらの中でも、姿勢再現精度の向上を最も直接的に反映する指標はOKSです。以下の図に示すように、OKSにおいて最も大きな改善が確認できます。
定性的な結果を示すために、以下の生成例を示します。

二段階学習を用いて生成された画像は、ベースラインと比較して、人物の姿勢が最も入力ポーズと一致していることが確認できます。
最後
本研究は、修士課程の卒業論文としてまとめられたものです。実験過程においては、学習の不安定性や学習時間の長さなど、様々な問題に直面しました。これらの課題に一つ一つ取り組み、最終的に本論文を完成させることができました。現在、生成AI分野は競争が非常に激しい状況にあります。その一方で、知識や技術を深く学ぶという点において、本研究分野に取り組んだことは良い選択であったと考えています。
