見出し画像

Diffusion Modelで一貫性を向上させた動画変換【AI声づくり技術研究会 Advent Calendar 2024 8日目】

こんにちは、きざみみです。本記事は、AI声づくり技術研究会 Advent Calendar 2024 8日目の記事です。

はじめに

Diffusion Model の生成機能の一つとして、ユーザーが用意した画像を入力に別のスタイルへ画像を変換する手法が存在します。これは一般的に image to image (略称 i2i)と呼ばれます。i2i では入力画像にノイズを指定した割合付与し、デノイズ処理を行うことで、入力画像から変換された画像が出力されます。また、工夫をすることで、動画変換することも可能です。動画の場合、1秒は数十フレームの画像で構成されています。そこで、1フレームごとに画像変換し、すべての変換結果を動画にまとめ上げることで動画を変換することができます。しかし、この変換結果は一般的に”揺らぎ”と形容できるような視覚的不自然さが存在することがあります。今回はこの現象の解消に取り組んだ結果を共有します。実装は最後にあります。

i2i がどうやって処理されるか

i2i による画像変換では、3つの入力があります。入力画像、プロンプト、ノイズです。入力画像に対し、指定した割合でノイズ加え、変換先を自然言語で指定(プロンプトと呼ぶ)することで画像変換を実現しています。

i2i を使用した動画変換結果の特徴

i2i でも一フレームづつ変換し、結果を動画にすることで動画の変換を行うことができます。しかし、下の変換動画が1フレームごとに髪型の形状が変わっていることからもわかるように、視覚的”揺らぎ”が発生していることが一般的です。

i2i による変換

この揺らぎの原因はノイズであり、ノイズをどう加えるかについて考える必要がありました。

ノイズをどうやって付与するか?

ノイズを加えない場合の問題

ノイズを加えない方法は、揺らぎがなくなりますが、変換結果は細部の構造を失った画像になります。

ノイズを加えるが元画像の情報損失をしない方法

今回は、latentにした画像の一部の領域にのみノイズを加え、残りの領域にはノイズを加えないlatentと逆の領域にノイズを加えたlatent作成し、デノイズ結果を合成する方法をとりました。
下画像のようにノイズを加える領域(黒)と加えない領域(透明)でlatentを作成しました。(図解上わかりやすいので、市松模様で書いていますが、実装上は市松模様ではありません。)

latentにノイズを付与するイメージ

ノイズ付与されていない領域によって、尤度の最大化方向を誘導した結果、実画像の情報を再構築するよう誘導され、一貫性の向上に寄与していると推察されます。

ギャラリー

アニメ変換


入力画像
改良手法
diffusersのi2i

実装


いいなと思ったら応援しよう!