YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

拡散モデル

拡散モデルが生成AIを使用して高忠実度データをどのように作成するかを探求します。今日から現実的な合成データでUltralytics YOLO26のトレーニングを強化する方法を学びましょう。

拡散モデルは、段階的なノイズ追加プロセスを逆転させることで新しいデータサンプルを生成することを学習する、生成AIアルゴリズムの一種です。object detectionや分類のようなタスクに使用され、データからラベルを予測する従来の識別モデルとは異なり、拡散モデルは現実世界のデータの統計的特性を密接に模倣する高忠実度のコンテンツ(特に画像、音声、ビデオ)の生成に焦点を当てています。これらは高解像度画像合成の最先端ソリューションとして急速に台頭し、トレーニングの安定性と多様な出力を生成する能力により、敵対的生成ネットワーク (GANs)のような以前の主要な技術を凌駕しました。

拡散モデルはどのように機能するか

拡散モデルの核となるメカニズムは、非平衡熱力学に基づいています。学習プロセスには、順方向プロセス(拡散)と逆方向プロセス(ノイズ除去)という2つの異なるフェーズが含まれます。

  • Forward Process: このフェーズでは、一連のタイムステップにわたって少量のガウスノイズを追加することで、トレーニング画像の構造を体系的に破壊します。プロセスが続くにつれて、複雑なデータ(猫の写真など)は徐々に純粋で非構造化されたランダムノイズへと変化します。
  • 逆プロセス: ニューラルネットワークの目標は、この破損を逆転させる方法を学習することです。ランダムノイズから開始し、モデルは各ステップで追加されたノイズを予測し、それを差し引きます。ノイズを繰り返し除去することで、モデルはランダム信号を「ノイズ除去」し、最終的に一貫性のある高品質な画像が出現します。

この反復的な洗練により、微細なディテールとテクスチャに対する卓越した制御が可能になり、単一ステップ生成手法に比べて大きな利点となります。

実際のアプリケーション

拡散モデルは学術研究の域を超え、さまざまな業界で実用的かつ実用レベルのツールとして活用されています。

  • 合成データ生成:コンピュータービジョンエンジニアにとって最も価値のあるアプリケーションの1つは、トレーニングデータセットを補強するための合成データの作成です。データセットに多様性が不足している場合(例えば、雪の中の車の画像が不足している場合)、拡散モデルは現実的なバリエーションを生成できます。これにより、YOLO26のようなビジョンモデルが予測不可能な環境に展開された際の堅牢性が向上します。
  • 画像インペインティングと編集: 拡散モデルは、ユーザーが画像の特定の領域を変更できる高度な編集ツールを強化します。インペインティングとして知られるこの技術は、周囲のコンテキストに基づいて不要な物体を削除したり、写真の欠落部分を埋めたりすることができます。建築家やデザイナーは、手動の3Dレンダリングを必要とせずに、製品や環境への変更を視覚化し、迅速なプロトタイピングのためにこれを使用します。

主要用語の区別

拡散モデルを他の生成アーキテクチャと区別することは、その理解を深める上で役立ちます。

  • 拡散モデル vs. GANs: GANsは2つの競合するネットワーク(生成器と識別器)を使用し、高速なサンプリングで知られていますが、「モード崩壊」に陥りやすく、モデルが生成する出力の多様性が限られることがあります。拡散モデルは一般的に学習中により安定しており、データの分布をより包括的にカバーしますが、推論時には処理が遅くなる可能性があります。
  • 拡散モデル vs. VAEs: 変分オートエンコーダ (VAEs)は、データを潜在空間に圧縮し、その後再構築します。VAEsは高速ですが、生成される画像は、拡散プロセスによって生成される鮮明なディテールと比較して、ぼやけて見えることがあります。

実践的な実施

拡散モデルをゼロからトレーニングするにはかなりの計算リソースが必要ですが、エンジニアは事前学習済みモデルを活用したり、効率的な detect モデルと並行してワークフローに統合したりできます。例えば、拡散モデルを使用してデータセットの背景バリエーションを生成し、その後 Ultralytics Platformを使用して、その強化されたデータに detect モデルをアノテーションし、トレーニングすることができます。

以下は、概念的な使用例です。 torch 単純な順方向拡散ステップ(ノイズの追加)をシミュレートすること。これは、これらのシステムをトレーニングするための基礎となります。

import torch


def add_noise(image_tensor, noise_level=0.1):
    """Simulates a single step of the forward diffusion process by adding Gaussian noise."""
    # Generate Gaussian noise with the same shape as the input image
    noise = torch.randn_like(image_tensor) * noise_level

    # Add noise to the original image
    noisy_image = image_tensor + noise

    # Clamp values to ensure they remain valid image data (e.g., 0.0 to 1.0)
    return torch.clamp(noisy_image, 0.0, 1.0)


# Create a dummy image tensor (3 channels, 64x64 pixels)
dummy_image = torch.rand(1, 3, 64, 64)
noisy_result = add_noise(dummy_image)

print(f"Original shape: {dummy_image.shape}, Noisy shape: {noisy_result.shape}")

今後の方向性

この分野は、計算コストを削減するためにピクセル空間ではなく圧縮された潜在空間で動作する潜在拡散モデル(LDM)へと急速に進化しています。この効率性により、強力な生成モデルを消費者向けハードウェアで実行することが可能になります。研究が進むにつれて、生成入力と識別タスクのより緊密な統合が期待されます。例えば、拡散生成されたシナリオを使用して自動運転車の安全性を検証したり、稀な病理をシミュレートすることで医用画像解析を改善したりするなどが考えられます。

共にAIの未来を築きましょう!

未来の機械学習で、新たな一歩を踏み出しましょう。