YOLOのライセンス
Ultralytics用語集に戻る

Scale-Invariant Feature Transform (SIFT)

スケール不変特徴変換(SIFT)は、キーポイントを検出し、スケーリングや回転に対して安定した128次元の記述子を生成する古典的なアルゴリズムです。

スケール不変特徴変換(SIFT)は、画像内の特徴的な局所キーポイントを検出し、それぞれを、画像のスケーリングや回転を行ってもほぼ変化しない128個の数値からなるベクトルで記述する、古典的なコンピュータービジョンアルゴリズムです。これらの記述子をマッチングすることで、ソフトウェアは異なる距離や角度から撮影された同じシーンの2枚の写真を対応付けられます。これにより、重なり合う写真をつなぎ合わせてパノラマを作成できます。SIFTは、人手で設計された特徴抽出手法であり、畳み込みニューラルネットワークの学習済み特徴マップとは異なります。

起源と基本概念#

ブリティッシュコロンビア大学のDavid Loweは、1999年のICCV論文局所スケール不変特徴による物体認識でSIFTを発表し、2004年にはInternational Journal of Computer Visionに「スケール不変キーポイントから得られる特徴的な画像特徴」と題した論文を発表して、詳細を解説しました。SIFT特徴はスケールと回転に対して不変であり、かなり大きな範囲のアフィン歪み、3D視点の変化、ノイズ、照明の変化があっても堅牢にマッチングできます。この手法は特許を取得していましたが、特許は2020年に失効しました。OpenCVはバージョン4.4.0で、SIFTをcontribリポジトリからメインライブラリに移しました。

写真の中で物体の大きさは一定ではないため、検出器はあらゆる大きさの構造を探す必要があります。SIFTは、強度を段階的に上げながらガウシアンブラーを繰り返し適用し、オクターブと呼ばれる単位でダウンサンプリングすることで、スケール空間を構築します。

SIFTの仕組み#

アルゴリズムは4つの段階で処理を行います。

  1. スケール空間極値の検出: 隣接するぼかしレベル間の差(Difference of Gaussians)は、ブロブ検出器を近似します。あるピクセルが、空間とスケールをまたぐ26個の近傍ピクセルの中で最大値または最小値であれば、候補になります。
  2. キーポイントの位置特定: 候補点をサブピクセル精度まで調整します。コントラストの低い点やエッジ上にある点は不安定なため、除外します。
  3. 方向の割り当て: 各キーポイント周辺の局所勾配方向のヒストグラムから支配的な方向を決定し、それ以降の処理はすべてその方向を基準に行います。これにより、回転不変性が得られます。
  4. 記述子の構築: 近傍領域を4 x 4のグリッドに分割し、各セルに8ビンの勾配ヒストグラムを格納します。これにより4 x 4 x 8 = 128個の値が得られ、照明の影響を抑えるために正規化されます。

マッチングでは、記述子間のユークリッド距離を比較します。Loweの比率テストでは、最良の近傍点が2番目に近い点よりも明らかに近い場合にのみ、マッチを採用します。k近傍法による検索でk = 2を指定すると、両方の距離が得られます。

import cv2
from ultralytics.utils import ASSETS

# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)

# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)

# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")

表示される数値は、半分のサイズの画像で検出されたキーポイントのうち、元のサイズの画像でも再び検出された数を示しており、スケール不変性が機能していることを表します。

用途#

SIFTは、幾何学的なビジョンタスクで標準的な局所特徴となりました。

  • パノラマ画像の合成: BrownとLoweによる自動パノラマ合成(IJCV 2007)では、重なり合う写真間でSIFT特徴をマッチングし、写真を位置合わせするためのホモグラフィを推定します。この位置合わせの処理は画像レジストレーションと呼ばれます。
  • 3D再構成: Photo Tourism(Snavely、Seitz、Szeliski、2006)では、観光客が撮影した写真間でSIFT特徴をマッチングし、エピポーラ幾何を用いてカメラの姿勢と疎な3D構造を復元します。
  • ロボットの自己位置推定: Se、Lowe、Little(2001)は、移動ロボットの自己位置推定とマッピングにSIFTのランドマークを使用しました。これは、現代のビジュアルSLAMの先駆けとなった手法です。
  • インスタンス認識: Loweの2004年の論文では、雑然として一部が遮蔽されたシーンから、わずか3つの特徴のマッチングで、おもちゃの列車とカエルを認識しています。

Ultralytics YOLOの物体追跡では、BoT-SORTがフレーム間のカメラの動きを補正します。トラッカー設定のgmc_method: siftを設定すると、デフォルトの疎なオプティカルフローの代わりにSIFTのマッチングを使って動きを推定します。

SIFTは異なる視点間で同じ物理的な点をマッチングするため、対応付けや幾何処理に適しています。物体検出では、物体のカテゴリと位置を予測します。テンプレートマッチングは固定されたパッチを走査するため、スケールや回転が変わると機能しなくなります。

SIFTは、ORBと比べると処理速度が遅くなります。ORBは、SIFTやSURFの代替として、Rubleeらが2011年に発表したバイナリ記述子です。また、テクスチャのない表面や非常に大きな視点変化への対応も苦手であり、カテゴリーレベルの認識では、学習済みモデルにほぼ置き換えられています。

Loweが2004年に行ったテストでは、距離比が0.8を超えるマッチを除外すると、正しいマッチを5%未満しか除外せずに、誤ったマッチの90%を排除できました。このテストでは、ランダムなスケールと回転の変化、30度の奥行き方向の回転、2%のノイズがある画像を、40,000個のキーポイントと照合しました。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

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

機械学習の未来に向けた歩みを始めましょう