はじめに
UNOはByteDance Intelligent Creation Teamによって開発されたオープンソースの画像生成フレームワークです。これは フラックス.1モデルでは、「少ないものから多いものへ」の汎化アプローチによる単一被験者および複数被験者のカスタマイズ画像生成に重点を置き、UNOは拡散変換器(DiT)のコンテキスト生成機能を、一貫性の高いデータ合成プロセスと組み合わせて活用することにより、複数被験者シナリオにおけるデータ拡張と被験者の一貫性の課題を解決します。テキスト記述と参照画像から高品質な画像を生成するユーザーをサポートし、パーソナライズされた画像作成、バーチャルキャラクターデザイン、その他のシナリオに広く適用できる。プロジェクトコードはApache 2.0、モデルウェイトはCC BY-NC 4.0でライセンスされており、学術研究や非商用利用に適しています。
機能一覧
- 単一被写体画像生成:被写体の特徴を保持したまま、単一の参照画像に基づいて記述と一致する画像を生成する。
- 複数被写体画像生成:同じシーンに複数の特定の被写体を生成し、それぞれの特徴を乱さないようにする。
- コンテキスト生成:拡散変換のコンテキスト学習機能を利用して、一貫性の高い画像を生成する。
- 低メモリ最適化:コンシューマー向けGPUで、ピーク時のメモリフットプリントが~16GBのfp8モードをサポート。
- モデルの微調整:テキストモデルから画像モデルへの反復最適化をサポートするために、事前学習と多段階学習ストラテジーを提供します。
- オープンソースサポート:トレーニングコード、推論コード、モデル重みが提供され、研究者がアプリケーションを拡張しやすくなっています。
ヘルプの使用
設置プロセス
UNOを使うには、ローカル環境に依存関係をインストールして設定する必要がある。以下はPython 3.10から3.12環境での詳細なインストール手順です。
- 仮想環境の構築
まず、依存関係の衝突を避けるために、別のPython仮想環境を作成します。以下のコマンドを使うことができる:python -m venv uno_env source uno_env/bin/activate # Linux/MacOS uno_env\Scripts\activate # Windows
あるいはCondaを使って環境を作る:
conda create -n uno_env python=3.10 -y conda activate uno_env
- PyTorchのインストール
AMD GPU、NVIDIA RTX 50シリーズ、またはmacOS MPSを使用している場合は、適切なバージョンのPyTorchを手動でインストールする必要があります。PyTorchのウェブサイト(https://pytorch.org/) 正しいバージョンを選択してください。例えばpip install torch torchvision torchaudio
- UNOの依存関係のインストール
UNOリポジトリをクローンし、依存関係をインストールする:git clone https://github.com/bytedance/UNO.git cd UNO pip install -e . # 仅用于推理 pip install -e .[train] # 用于推理和训练
注:以下のことを確認してください。
requirements.txt
依存関係が正しくインストールされていることを確認してください。問題が発生した場合は、システム・ライブラリ(たとえばffmpeg
)を通して、そしてconda install -c conda-forge ffmpeg
インストール。 - チェックポイント・モデルのダウンロード
UNOはFLUX.1-devモデルと関連するチェックポイントに依存している。以下の方法でダウンロードできる:- 自動ダウンロード推論スクリプトを実行する際、チェックポイントは自動的に
hf_hub_download
ダウンロードはデフォルトのパス(~/.cache/huggingface
). - マニュアルダウンロードモデルのダウンロードにはHugging Face CLIを使用します:
huggingface-cli download black-forest-labs/FLUX.1-dev huggingface-cli download xlabs-ai/xflux_text_encoders huggingface-cli download openai/clip-vit-large-patch14 huggingface-cli download bytedance-research/UNO
ダウンロード後、モデルを指定されたディレクトリ(例えば
models/unet
歌で応えるmodels/loras
). - 自動ダウンロード推論スクリプトを実行する際、チェックポイントは自動的に
- インストールの確認
インストールが完了したら、以下のコマンドを実行し、環境が正しく設定されていることを確認する:python -c "import torch; print(torch.cuda.is_available())"
リターン
True
GPU環境は正常に設定されています。
使用方法
UNOはグラディオ・インターフェイス(app.py
)は対話的な画像生成に使われ、コマンドラインから推論スクリプトを実行するのにも使える(inference.py
).以下は主な操作手順である。
グラディオのインターフェースによる画像生成
- Gradioアプリケーションの起動
Gradioがインストールされていることを確認する。requirements.txt
(で)。以下のコマンドを実行してインターフェースを起動する:python app.py
起動時にブラウザはローカルページ(通常は
http://127.0.0.1:7860
). - 入力パラメータ
グラディオのインターフェイスで- テキストプロンプト (
prompt
例えば、「公園で遊ぶ猫と犬」)。 - 参考画像を1~4枚アップロードする
image_ref1
までimage_ref4
)、これらの画像は被写体の外観を定義する。 - シード値(
seed
デフォルト値は3407)。 - モデル・タイプ (
flux-dev
そしてflux-dev-fp8
もしかしたらflux-schnell
)、推奨flux-dev-fp8
を使用することで、必要なグラフィックメモリを削減することができます。
- テキストプロンプト (
- 画像の生成
Generateボタンをクリックすると、UNOがプロンプトと参照画像に基づ いて結果を生成します。生成時間はハードウェアの性能に依存し、RTX 3090のようなコンシューマー向けGPUでは通常数秒から数分かかります。
コマンドラインから推論を実行する
- 入場の準備
プロンプトと参照画像のパスを含む設定ファイルを作成するか、コマンドラインで直接パラメータを指定します。例python inference.py --prompt "A man in a suit, standing in a city" --image_paths "./assets/examples/man.jpg" --model_type "flux-dev-fp8" --save_path "./output"
- 共通パラメーターの説明
--prompt
: 生成された画像の内容を定義するテキスト記述。--image_paths
複数の画像をサポートする参照画像パス。--model_type
モデルタイプ、推奨flux-dev-fp8
.--offload
ビデオメモリーの使用量を減らすために、ビデオメモリーオフロードを有効にします。--num_steps
拡散ステップ数(デフォルト25)は、生成の質に影響する。--guidance
ガイダンス係数(デフォルト4)は、テキストが画像とどの程度一致するかを制御します。
- 結果を見る
生成された画像は--save_path
指定されたディレクトリ(例えばoutput/inference
).
注目の機能操作
単一被験者生成
- 手続き::
- 被写体の画像(人物の写真など)をアップロードします。
- ターゲットシーンを説明するテキストプロンプトを入力する(例:「この人はビーチを歩いています」)。
- 参照画像の解像度を512(デフォルト)に設定する。
- 画像を生成するために、UNOは被写体の特徴(例えば顔、衣服)の外観を維持する。
- ほら基準画像が鮮明で、被写体の特徴がよくわかるようにし、不鮮明な画像や低画質の画像は避ける。
多被写体生成
- 手続き::
- 複数の参考画像(例:猫の写真と犬の写真)をアップロードする。
- テキストプロンプトを入力し、複数の主題のシーンを描写する(例:「猫と犬が草むらで遊んでいる」)。
- 参照画像の解像度を320(マルチ被写体のデフォルト)に設定する。
- 画像を生成するために、UNOはUnoPE(Universal Rotation Position Embedding)技術によって被写体特徴の混乱を避ける。
- ほら参考画像の枚数は4枚以内とし、各被写体が明確に区別できるようにすること。
低メモリ最適化
- 利用する
flux-dev-fp8
モデルでは、メモリ・フットプリントは約16GBに減少している。 - 使い始める
--offload
パラメータを使用することで、計算の一部をCPUにオフロードすることができ、グラフィックスメモリの要件をさらに減らすことができます。 - RTX 3090やRTX 4090などのコンシューマー向けGPUユーザー向け。
よくある質問
- ビデオメモリ不足解像度を下げてみる
--width
歌で応える--height
)を512x512に設定するか、あるいはflux-dev-fp8
モデル - 設置失敗PyTorchのバージョンがGPUと互換性があることを確認し、必要であれば特定のバージョンを手動でインストールします。
- 満足のいく結果が得られなかった調整
--guidance
(5または6に増加)または--num_steps
(50に増加)で画質を向上させた。
アプリケーションシナリオ
- パーソナライズされた画像作成
ユーザーは自分の写真をアップロードし、テキスト記述と組み合わせることで、特定のシナリオの画像を生成することができる。例えば、自撮り写真をアップロードすると、「未来都市を歩く自分」の画像が生成され、ソーシャルメディアのコンテンツ作成に適している。 - バーチャルキャラクターデザイン
ゲーム開発者やアニメーターは、キャラクタースケッチをアップロードすることで、さまざまなシナリオに対応したキャラクター画像を生成し、マンガ、アニメ、ゲーム開発に適した一貫性のあるキャラクター外観を維持することができます。 - 広告・マーケティング
マーケティングチームは、商品やブランドのマスコット画像をアップロードして、多様な広告シナリオ(異なる季節に展示される商品など)を作成し、ビジュアルコンテンツの多様性を高めることができます。 - 学術研究
研究者はUNOのオープンソースコードとトレーニングフローを使って、拡散モデルの多被験者生成への応用を探求し、新しいアルゴリズムを検証し、あるいは既存のモデルを最適化することができる。
品質保証
- UNOはどのようなハードウェアをサポートしていますか?
UNOは、最低16GBのビデオメモリを搭載したNVIDIA GPU(RTX 3090または4090など)を推奨しています。 AMD GPUとmacOS MPSはサポートされていますが、PyTorchは手動で設定する必要があります。 - 生成された画像の品質を向上させるには?
拡散ステップの追加--num_steps
を50に設定)、またはブートストラップ係数(--guidance
(5-6に設定)。参考画像が明確で、テキストプロンプトが具体的であることを確認する。 - UNOは商業的にサポートされていますか?
モデルウェイトのライセンスはCC BY-NC 4.0です。営利目的での使用は、オリジナルのFLUX.1-devライセンスの条項に従ってください。 - 多被写体生成における特徴の混乱にどう対処するか?
UNO UnoPEテクニックを使って混乱を減らす。各参照画像の被写体の特徴が明確であることを確認し、効果を最適化するために解像度を適切に下げる(例:320)。