最近では、電話やカメラからスマートホームシステムに至るまで、私たちが使用するスマートデバイスの多くに、顔や物体、さらには視覚シーン全体を認識できるAIソリューションが搭載されている。この機能は、機械が画像や映像を理解し解釈することを可能にする人工知能の一分野であるコンピューター・ビジョンからもたらされている。
例えば、エッフェル塔の写真をどんな角度や距離から撮っても、お使いのデバイスは通常、コンピュータ・ビジョンを使ってそれを認識し、ギャラリーの適切なフォルダに整理することができます。これは簡単なことのように聞こえますが、物体の認識は必ずしも単純ではありません。画像は、そのサイズ、角度、スケール、または照明によって非常に異なって見えることがあり、機械がそれらを一貫して識別することを困難にします。
この問題を解決するために、研究者たちはSIFT(Scale Invariant Feature Transform)と呼ばれるコンピュータビジョンアルゴリズムを開発した。このアルゴリズムにより、異なる視聴条件下でも物体を検出することが可能になった。1999年にDavid Loweによって作成されたSIFTは、画像のコーナー、エッジ、パターンなど、画像のサイズを変更したり、回転させたり、照明を変えたりしても認識可能な、画像内のユニークなキーポイントを見つけて記述するように設計された。
Ultralytics YOLO11のようなディープラーニング主導のコンピュータビジョンモデルが普及する以前、SIFTはコンピュータビジョンで広く使われていた技術だった。SIFTは、写真内の特定のアイテムを識別することを目的とする物体認識や、重なり合う画像特徴を見つけることで写真の位置合わせを行う画像マッチングなどのタスクの標準的なアプローチであった。
この記事では、SIFTとは何か、SIFTが高レベルでどのように機能するのか、そしてなぜSIFTがコンピュータ・ビジョンの進化において重要なのかについて、簡単な概要とともにご紹介します。さっそく始めましょう!
画像では、物体はさまざまな見え方をする。例えば、コーヒーカップを上から撮ったり、横から撮ったり、明るい日差しの下で撮ったり、暖かい照明の下で撮ったり。また、同じマグカップでも、カメラに近いと大きく見え、遠いと小さく見える。
これらすべての違いが、コンピューターに物体を認識させることを複雑なタスクにしている。物体検出として知られるこのコンピュータ・ビジョンのタスクは、物体のサイズ、角度、照明条件が変化しても、物体を正確に識別し、位置を特定するビジョンAIモデルを必要とする。
これを可能にするために、コンピュータビジョンは特徴抽出または検出と呼ばれるプロセスに依存している。画像全体を一度に理解しようとするのではなく、角が尖っている、独特の模様がある、テクスチャがあるなど、角度、スケール、照明条件を問わず認識可能な画像の特徴を探す。
特に、SIFT(Scale Invariant Feature Transform)はそのために設計された。SIFTは特徴検出および記述アルゴリズムであり、どのように撮影された画像であっても、画像内のオブジェクトを確実に識別することができる。
SIFTアルゴリズムには、物体認識に有用ないくつかの重要な特性がある。重要な特性の1つは、スケール不変性と呼ばれるものです。つまりSIFTは、物体が大きく見えてカメラの近くにある場合でも、小さく見えて遠くにある場合でも、物体のさまざまな部分を認識できる。物体が完全に見えていなくても、アルゴリズムは同じキーポイントを選び出すことができる。
これはスケールスペース理論と呼ばれる概念を使っている。簡単に言えば、画像をさまざまなレベルでぼかし、複数のバージョンを作成する。次にSIFTは、これらのバージョンに目を通し、画像のサイズやシャープネスがどのように変化しても変わらないパターンやディテールを見つける。
例えば、数メートル離れて撮影された道路標識は、遠くから撮影された同じ標識よりもはるかに大きく見えるが、SIFTは依然として同じ特徴的な特徴を検出することができる。このため、標識のスケールが大きく異なっていても、2つの画像を正しく一致させることができる。
画像中の物体は回転して見えることもあり、時には逆さまに見えることさえある。SIFTは、回転不変性と呼ばれる特性によってこれを処理する。このアルゴリズムは、検出したキーポイントごとに、局所的な画像勾配に基づいて一貫した向きを割り当てる。こうすることで、どのように回転しても同じ物体を認識できる。
これは、各キーポイントに、それがどの方向を向いているかを示す小さな矢印を付けるようなものだと考えることができる。SIFTはこれらの方向に特徴を合わせることで、対象物が回転してもキーポイントが正しく一致するようにする。例えば、風景写真で撮影されたランドマークは、カメラを斜めに傾けて別の写真を撮影しても、正しく識別される。
サイズや回転だけでなく、画像は照明の変化など、他の方法でも変化する可能性がある。対象物の照明が明るくなったり暗くなったり、カメラのアングルが微妙にずれたり、画像がぼやけたりノイズが入ったりする。
SIFTはこのような変化に対応できるように作られている。SIFTは、特徴的でコントラストが高いキーポイントに注目することで、照明の変化やわずかな視点の移動の影響を受けにくくする。その結果、SIFTは単純なエッジ検出やコーナー検出よりも信頼性が高くなる傾向がある。
ギャラリーの絵画を考えてみよう。柔らかな日中の光の下で撮影されても、明るい人工的なスポットライトの下で撮影されても、あるいは手持ちカメラによるわずかなモーションブラーがあっても、絵画は認識できる。このような違いにもかかわらず、キーポイントは正確なマッチングができるほど安定している。
次に、SIFTアルゴリズムの仕組みを見てみよう。このプロセスは、キーポイントの検出、キーポイントのローカライズ、オリエンテーションの割り当て、キーポイントの記述という4つの主要なステップに分けることができる。
最初のステップは、キーポイントを見つけ、検出することである。キーポイントとは、角やテクスチャの鋭い変化など、画像内の特徴的な点のことで、物体の追跡や認識に役立つ。
これらの潜在的なキーポイントがどのサイズでも認識できるように、SIFTはスケール空間と呼ばれるものを構築する。これは、スムージング技術であるガウシアンフィルターで元の画像を徐々にぼかし、その結果をオクターブと呼ばれるレイヤーにグループ化することで作成される画像のコレクションである。各オクターブには、ぼかしのレベルが上がるにつれて同じ画像が含まれ、次のオクターブはその画像の縮小版となる。
SIFTは、ぼやけた画像から別の画像を差し引くことで、ガウス差(DoG)を計算し、明るさが急激に変化する部分を強調する。これらの領域は、画像を拡大・縮小しても一貫性が保たれるため、キーポイント候補として選ばれる。
キーポイント候補の中には、弱いものや不安定なものもあるため、すべてが有用というわけではない。SIFTは、キーポイントの正確な位置をより高い精度で推定するのに役立つテイラー級数展開と呼ばれる数学的手法を使用する。
このステップでは、信頼性の低い点が削除される。コントラストが低く、周囲に溶け込むようなキーポイントは捨てられ、エッジに直接あるキーポイントも、ずれやすいので捨てられる。このフィルタリングステップにより、最も安定した特徴的なキーポイントのみが残される。
安定したキーポイントが特定されると、SIFTはそれらを回転不変にする。つまり、画像が横や逆さまになってもマッチングできるようにする。そのためにSIFTは、各キーポイントの周囲で明るさがどのように変化するかを分析する。勾配は画素強度の変化の方向と強さの両方を示し、合わせてその点の周りの局所的な構造をとらえる。
各キーポイントについて、SIFTは周辺領域内の勾配を考慮し、それらを方位のヒストグラムにグループ化する。このヒストグラムで最も高いピークは、強度の変化の支配的な方向を示し、それがキーポイントの方向として割り当てられる。強度が変化している場所を示す勾配の方向と、その変化がどの程度強いかを示す勾配の大きさの両方が、このヒストグラムを構築するために使用される。
ほぼ同じ強さのピークが他にある場合、SIFTは同じキーポイントに複数の方向を割り当てる。これにより、物体が通常とは異なる角度で現れたときに、重要な特徴が失われるのを防ぐことができる。各キーポイントの向きを揃えることで、SIFTは次のステップで生成される記述子の一貫性を保証します。
言い換えれば、同じ物体の2つの画像が異なって回転しても、向きを揃えたキーポイントは正しく一致する。このステップによって、SIFTは回転を扱う強力な能力を持ち、以前の特徴検出手法よりもはるかにロバストになる。
SIFTの最後のステップは、各キーポイントの説明を作成し、他の画像でも認識できるようにすることである。
SIFTは、各キーポイントの周囲にある小さな正方形のパッチ、約16×16ピクセルの大きさを調べることでこれを実現する。このパッチはまずキーポイントの向きに合わせられ、回転の影響を受けないようにされる。その後、パッチは4×4の小さな正方形のグリッドに分割されます。
それぞれの小さな正方形で、SIFTは異なる方向で明るさがどのように変化するかを測定する。これらの変化はヒストグラムと呼ばれるものに保存される。ヒストグラムは、どの方向が最も一般的かを示すグラフのようなものだ。それぞれの正方形がそれぞれのヒストグラムを持ち、16の正方形を合わせて16のヒストグラムができる。
最後に、これらのヒストグラムは合計128個の数字のリストにまとめられる。このリストは特徴ベクトルと呼ばれ、キーポイントの指紋のような役割を果たす。このフィンガープリントは、キーポイント周辺のユニークなテクスチャと構造をキャプチャするため、サイズ変更、回転、照明が異なっていても、異なる画像間で同じキーポイントを一致させることができます。
SIFTとは何か、SIFTがどのように機能するかについて理解を深めたところで、コンピュータ・ビジョンにおけるSIFTの実際の応用例をいくつか見てみよう。
SIFTの主な用途の1つは、物体の認識と検出である。これは、物体が常に同じように見えるとは限らない場合でも、画像内の物体を認識し、位置を特定するようコンピュータに教えることである。例えば、SIFTは、本がカメラに近いか、遠いか、斜めに回転しているかに関係なく、本を検出することができる。
これが機能する理由は、SIFTが非常に特徴的で安定したキーポイントを抽出するからである。これらのキーポイントをSIFT記述子と組み合わせると、SIFT特徴が形成され、異なる画像間で同じオブジェクトを照合する信頼性の高い方法が提供されます。これらの特徴は、対象物のサイズ、位置、向きが変わっても一貫性を保ち、画像間で信頼性の高い特徴マッチングを可能にする、対象物のユニークな詳細をキャプチャします。
ディープラーニングが普及する以前、SIFTは物体認識システムを構築するための最も信頼性の高い手法の1つだった。SIFTは、しばしば多大な計算資源を必要としながらも、大規模な画像データセット全体でオブジェクトのマッチングを必要とする研究やアプリケーションで広く使われていた。
SIFTはまた、パノラマ画像の作成にも使用できる。パノラマ画像とは、複数の写真をつなぎ合わせて作られた広い写真のことである。SIFTを使うと、異なる画像の重なり合う部分に特徴的なキーポイントが見つかり、互いにマッチングされる。このマッチングはアンカーのような役割を果たし、写真をどのように整列させるべきかをスティッチングプロセスに導く。
マッチングが完了すると、ステッチング・アルゴリズムを使って正しい位置合わせを計算することができ、多くの場合、ある画像を別の画像にマッピングする幾何学変換が使われる。その後、継ぎ目が消えるように画像がブレンドされる。最終的な結果は、複数のショットから作成されたにもかかわらず、1枚のワイド写真のように見えるシームレスなパノラマです。
SIFTのもうひとつの興味深い応用は3D再構成で、異なる角度から撮影された複数の2D写真を組み合わせて3Dモデルを構築する。SIFTは、これらの画像間で同じ点を見つけてマッチングさせることで機能する。
一旦マッチングがなされれば、三角測量(異なる視点から奥行きを計算する方法)を使って、それらの点の3D位置を推定することができる。このプロセスはStructure from Motion(SfM)の一部であり、重なり合った複数の画像を使用して、撮影したカメラの位置とともにシーンの3D形状を推定する技術である。
その結果、通常は3D点群、つまり物体や環境の輪郭を描く空間上の点の集まりが得られる。SIFTは、ストラクチャー・フロム・モーションを実用化した最初のツールの1つである。今日、より新しい技術がより速く、より一般的になっている一方で、SIFTは、速度よりも精度が重要な場合に適用され続けている。
SIFTはロボット工学、特に視覚的SLAM(Simultaneous Localization and Mapping)にも使われている。SLAMは、ロボットが自分の位置を把握すると同時に、周囲のマップを作成することを可能にする。
SIFTキーポイントは、照明や角度が変わっても、ロボットがフレーム間で認識できる信頼性の高いランドマークとして機能する。このランドマークを追跡することで、ロボットは自分の位置を推定し、その場で地図を更新することができる。今日のロボット工学では、より高速な特徴検出器がより頻繁に使用されていますが、SIFTは初期のSLAMシステムで重要な役割を果たし、速度よりもロバスト性が重要なケースでは今でも重要な役割を果たしています。
SIFTアルゴリズムはコンピュータビジョンで広く使用されており、信頼性の高い手法として知られていますが、いくつかのトレードオフもあります。そのため、プロジェクトに適しているかどうかを判断する前に、その長所と短所を比較検討することが重要です。次に、その主な長所と限界について説明します。
SIFTアルゴリズムを使用する利点は以下の通りである:
SIFTアルゴリズムを使うことの短所をいくつか挙げてみよう:
SIFTの長所と短所を探るうちに、その限界の多くが、より高度なテクニックへの道を開いたことに気づくかもしれない。具体的には、畳み込みニューラルネットワーク(CNN)が強力な代替技術として登場した。
CNNは、人間の視覚システムの仕組みにヒントを得たディープラーニングモデルの一種である。エッジやテクスチャのような単純なパターンから始まり、徐々に複雑な形状やオブジェクトへと発展していく。SIFTの手作業による特徴規則とは異なり、CNNは特徴表現をデータから直接学習する。
このデータ駆動型学習は、CNNが記述子のマッチングや分類タスクにおいてSIFTを上回ることができることを意味する。CNNはまた、より表現力が豊かでロバストであり、視覚データの変動性や複雑さによりよく適応する。
例えば、CNNベースのモデルは、何千ものカテゴリにまたがる何百万ものラベル付き画像を含む巨大なベンチマークデータセットであるImageNetで、画期的な結果を達成している。アルゴリズムがどれだけ物体を認識・分類できるかをテストするために設計されたImageNetは、旧来の特徴ベースの手法とディープラーニングのギャップを浮き彫りにすることができる。
CNNは、より豊かで柔軟な表現を学習することで、SIFTを凌駕し、照明の変化、異なる視点、部分的に隠れた状態など、SIFTが苦手とするような状況下でも物体を認識できるようになった。
スケール不変特徴変換アルゴリズムは、コンピュータビジョンの歴史において重要な位置を占めている。このアルゴリズムは、変化する環境においても特徴を検出する信頼性の高い方法を提供し、今日使用されている多くの手法に影響を与えた。
新しい技術はより高速で効率的だが、SIFTはその基礎を築いた。SIFTは、今日のコンピュータ・ビジョンの進歩がどこから始まったかを紹介し、最先端のAIシステムがどれほど進歩したかを浮き彫りにしている。
グローバルコミュニティに参加し、GitHubリポジトリをチェックしてコンピュータビジョンについてもっと学びましょう。農業AIや 小売業におけるコンピュータビジョンなどのイノベーションを発見するために、当社のソリューションページをご覧ください。ライセンスオプションをチェックして、独自のコンピュータビジョンモデルの構築を始めましょう。