Swin Transformer
Swin Transformerアーキテクチャがシフトウィンドウを使用して効率的なコンピュータビジョンを実現する方法を学び、Ultralytics Platformでのワークフローを探索してください。
Microsoft の研究者によって 2021 年の画期的な論文 "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows" で発表されたこの ディープラーニング (DL) アーキテクチャは、高解像度の視覚データの複雑さを処理できるように アテンション機構 を適応させたものです。均一な長さのテキストトークンを処理する 自然言語処理 モデルとは異なり、このアーキテクチャは視覚要素のスケールが大きく異なることを認識しています。階層的な表現を構築し、独自のウィンドウ処理技術を利用することで、画像サイズに対して 線形計算量 を実現し、さまざまな コンピュータビジョン (CV) タスクにおいて非常に効率的なバックボーンとなっています。
シフトウィンドウと階層設計の仕組み#
主な革新は、モデルが 特徴抽出 を構築する方法にあります。まず、入力画像を小さく重ならないパッチに分割します。しかし、従来のモデルとは異なり、より深い層でこれらの隣接するパッチをより大きな領域に段階的に統合していきます。この階層的なアプローチにより、ネットワークは微細な視覚的詳細から大規模なオブジェクトに至るまで、さまざまなスケールでグローバルなコンテキストを表す豊かな 特徴マップ を抽出できます。
計算効率を維持するため、セルフアテンションは画像全体にわたるのではなく、ローカルな独立したウィンドウ内のみで計算されます。これらの境界を越えて情報が流れるようにするため、連続する層の間でウィンドウが「シフト」されます。このシフトウィンドウ方式により、独立した領域が効果的に橋渡しされ、グローバルアテンションに伴う重い計算負荷をかけずに、包括的な マルチスケール空間階層 が提供されます。
Swin Transformer と Vision Transformer (ViT) の比較#
現代のアーキテクチャを比較する場合、標準的な Vision Transformer (ViT) とこのモデルを区別することが重要です。元の ViT は画像を固定サイズのパッチのシーケンスとして扱い、それらのすべてにわたって同時にグローバルアテンションを計算します。精度は非常に高いものの、これは 二次計算量 をもたらし、画像解像度が上がるにつれて処理時間とメモリ要件が急増することを意味します。
対照的に、Swin アーキテクチャの階層的かつウィンドウベースのデザインにより、計算量は線形に保たれます。これにより、高解像度の入力と出力を必要とする高密度予測タスクにおいて、はるかに実用的になります。その結果、マルチスケール オブジェクト検出 のための COCO テスト開発データセット や、精密な 画像セグメンテーション のための ADE20K セマンティックセグメンテーションデータセット などのベンチマークで最先端の結果を達成しています。
現代AIにおける実世界での応用#
その柔軟性と効率性のため、公式の Microsoft Research GitHub リポジトリ の実装は、複雑でリスクの高いさまざまな産業で適応されています。
- 医療画像解析: 臨床現場では、Swin-Unet のようなネットワークが、ボメトリック 3D MRI スキャン や高解像度組織病理学解析にこのアーキテクチャを活用しています。高密度な空間階層を保持するモデルの能力は、初期段階の腫瘍などの微小な異常を特定するのに役立ちます。医療画像研究 における最近のブレークスルーについての詳細は、さらに読み進めることができます。
- 衛星画像解析: 環境モニタリングとリモートセンシング において、大規模な地理的コンテキストを捉えることは極めて重要です。階層構造により、森林破壊の追跡、都市計画、作物健康モニタリングのために、大規模な航空データセットを効率的に処理します。
PyTorch および Ultralytics との統合#
カスタムニューラルネットワークを構築する開発者にとって、このアーキテクチャの実装は 公式 PyTorch ドキュメント を使用して簡単に行うことができます。torchvision ライブラリ には、ImageNet で最適化された軽量な Tiny バリアントなどの事前トレーニング済みバージョンが含まれています。
import torch
from torchvision.models import Swin_T_Weights, swin_t
# Load a pre-trained Tiny variant with ImageNet weights
weights = Swin_T_Weights.IMAGENET1K_V1
model = swin_t(weights=weights)
model.eval()
# Run a single batch containing a 3-channel, 224x224 dummy image tensor
dummy_image = torch.randn(1, 3, 224, 224)
output = model(dummy_image)
# The output shape is [1, 1000], representing the 1000 ImageNet classes
print(f"Prediction tensor shape: {output.shape}")トランスフォーマーベースのバックボーンは優れたマルチスケール表現を提供しますが、現代のアプリケーションでは、エッジ AI デバイス 向けの純粋にエンドツーエンドの最適化が求められることがよくあります。たとえば、Ultralytics YOLO26 は、より小さく、より高速で、すぐに高精度を発揮するネイティブなエンドツーエンドのアーキテクチャを提供し、リアルタイムのエッジ環境で優れています。トランスフォーマーを多用するアーキテクチャを使用する場合でも、高速な畳み込みモデルを使用する場合でも、開発者はデータアノテーションからトレーニングまで、Ultralytics プラットフォーム を介して全体のワークフローを管理できます。この包括的なクラウドツールチェーンにより、モデルデプロイ と継続的な モデルモニタリング がシンプルかつ効率的になります。






