高精度テキストから画像への変換:Qwen-Imageの革新

あなたは、期待を込めて入力したプロンプトが全く予想外の結果を生む経験を持っていますか?例えば、「赤い服を着た女性が白い犬を抱いている」というシーンを想像していたのに、生成された画像が「赤い犬が白人の人を追いかける」ようなものになることがあります。特に多言語混在のシナリオでは、このような問題が顕著です。

MMDiTアーキテクチャによる新たな進化

従来のディフュージョンモデル(例: Stable Diffusion)では、文と画像の情報処理が分離されており、複雑な説明に対応しきれないことがしばしばあります。しかし、Qwen-Image は異なるアプローチを採用しています。このモデルはMMDiT(Multimodal Diffusion Transformer)という新しいバックボーンネットワークを使用し、文と画像の情報を統合して処理します。


class MMDiTBlock(nn.Module):
    def forward(self, img_patches, text_tokens, time_step):
        # img_patches: (B, N, D) イメージパッチ
        # text_tokens: (B, L, D) テキストトークン
        # time_step: (B, D) 時間ステップ埋め込み

        img_patches = img_patches + self.self_attn(normalize(img_patches))

        img_patches = img_patches + self.cross_attn(normalize(img_patches), context=text_tokens)

        img_patches = modulate(normalize(img_patches), time_step) + self.mlp(img_patches)
        
        return img_patches

高解像度での正確な表現

Qwen-Imageは、原生で1024×1024ピクセルの出力をサポートしており、高い品質で画像生成を行います。これにより、細部まで鮮明な画像を得ることができます。


generated_image = generator.generate(
    prompt="未来的都市風景,霓虹灯闪烁,广告牌上写着‘欢迎光临’",
    resolution=(1024, 1024),
    enable_chinese_text=True
)

部分修正と拡張機能

Qwen-Imageには、Inpainting(部分再描画)およびOutpainting(画像拡張)機能があり、既存の画像に対して特定領域のみを編集することができます。


# 部分再描画
mask = create_circular_mask(image, center=(800, 300), radius=100)
edited_image = generator.inpaint(
    image=image,
    mask=mask,
    edit_prompt="天井から吊り下げられたモダンなシャンデリア"
)

# 画像拡張
expanded_image = generator.outpaint(
    image=image,
    direction="左",
    expand_pixels=512,
    context_prompt="朝霧の中の密林"
)

実践的なシステム構築

Qwen-Imageは産業レベルでの展開が可能であり、以下のようなシステム設計が推奨されます。

要素 提案案
ハードウェア設定 A100/H100 GPU、FP16 推論、単一カードに約40GBのVRAMが必要
スループット最適化 TensorRT 加速+動的バッチングを使用、単一カードで3~5枚/秒を達成可能
遅延制御 インタラクティブなシナリオではサンプリングステップを20~30に減少させ、迅速な応答を実現

タグ: MMDiT Qwen-Image Transformer 画像生成 多言語対応

8月3日 05:58 投稿