画像セグメンテーションは、デジタル画像をピクセルの個別のグループ(画像セグメント)に分割して、物体検出タスクや関連タスクに情報を提供するコンピューター・ビジョン技術です。画像セグメンテーションは、画像の複雑な視覚データを特定の形状のセグメントに解析することにより、より高速で高度な画像処理を可能にします。
画像セグメンテーション技術は、シンプルで直観的なヒューリスティック分析から最先端のディープラーニングの実装まで多岐にわたります。従来の画像セグメンテーション・アルゴリズムは、色や明るさなどの各ピクセルの高レベルの視覚的特徴を処理して、オブジェクトの境界と背景領域を識別します。注釈付きデータセットを活用した機械学習は、画像に含まれる特定の種類のオブジェクトと領域を正確に分類するためのモデルのトレーニングに使用されます。
コンピューター・ビジョンの手法として汎用性が高く実用的な画像セグメンテーションには、医用画像診断の補助から、ロボティクスや自動運転車での運動自動化、衛星画像内の対象オブジェクトの特定まで、幅広いAIユースケースがあります。
IBMニュースレターの購読
画像セグメンテーションは、画像分類と物体検出の両方を進化させた技術であるうえ、コンピューター・ビジョンに特化した機能です。
画像分類は、クラス・ラベルを画像全体に適用します。たとえば、単純な画像分類モデルは、車両の画像を「車」または「トラック」として分類するようにトレーニングできます。従来の画像分類システムは、個々の画像特徴を個別に処理しないため、洗練度に限界があります。
オブジェクト検出は、画像分類とオブジェクト位置特定を組み合わせたもので、オブジェクトが位置する「バウンディング・ボックス」と呼ばれる長方形の領域を生成します。オブジェクト検出モデルは、単に車両画像に「車」や「トラック」というラベルを付けるのではなく、画像のどこに車やトラックがあるかを示すことができます。オブジェクト検出では、画像内の複数の要素を分類し、各要素の幅と高さを概算できますが、正確な境界や形状を識別することはできません。そのため、従来の物体検出モデルでは、バウンディング・ボックスが重なり合って密集したオブジェクトを描出する能力に限界があります。
画像セグメンテーションは、さまざまな技術を使用して視覚データをピクセル・レベルで処理し、個々のピクセルに特定のクラスまたはインスタンスに属するものとして注釈を付けます。「古典的」な画像セグメンテーション技術は、色や強度のような各ピクセルの固有の性質(「ヒューリスティック」と呼ばれる)を分析することによって注釈を決定しますが、ディープラーニング・モデルは複雑なニューラルネットワークを採用して高度なパターン認識を行います。この注釈の出力がセグメンテーション・マスクであり、画像内の特定のピクセルごとの境界と各クラスの形状(通常はさまざまなオブジェクト、特徴、または領域に対応)を表します。
大まかに言うと、画像セグメンテーションは、セマンティック・セグメンテーション、インスタンス・セグメンテーション、パノプティック・セグメンテーションの3種類のタスクに使用されます。
画像セグメンテーション・タスクの各タイプの違いは、セマンティック・クラス(特定のピクセルが属すると判断される特定のカテゴリー)をどのように扱うかにあります。
コンピューター・ビジョンの用語では、2種類のセマンティック・クラスがあります。どちらの種類も、正確かつ効果的なセグメンテーションを実現するためのさまざまなテクニックに役立ちます。
thingsとは、「車」、「木」、「人」など、特徴的な形をしたオブジェクトのクラスです。通常、thingsには数えることができるインスタンスが明確に定義されています。インスタンス間のサイズの相違が比較的少なく、そのthing自体ではっきり分かれた構成要素があります。たとえば、すべての車には車輪が付いていますが、車輪は車ではありません。
「stuff」とは、「空」や「水」、「草」のように、無定形でサイズが大きく変動するセマンティック・クラスを指します。通常、stuffには明確に定義された、数えることができる個々のインスタンスはありません。thingsと違って、stuffには明確な構成要素はありません。一枚の草の葉と一面の芝生はどちらも等しく「草」です。
一部のクラスは、特定の画像条件下ではthingsにもstuffにもなり得ます。たとえば、大規模な人々のグループは、複数の「人」(それぞれが明確な形をした数えられるthing)にも、あるいは単一で無定形の「群衆」としても解釈できます。
ほとんどの物体検出の取り組みは主にthingクラスに焦点を当てていますが、stuff(空、壁、床、地面など)が視覚的なコンテキストの大部分を占めていることを考慮することも重要です。stuffはthingを識別するための重要なデータポイントであり、その逆も同様です。道路上の金属物は大抵の場合が自動車です。ボートの後ろの青い背景はおそらく水であり、飛行機の後ろの青い背景はおそらく空でしょう。これはディープラーニング・モデルにとって特に重要になります。
セマンティック・セグメンテーションは、最もシンプルなタイプの画像セグメンテーションです。セマンティック・セグメンテーション・モデルでは、すべてのピクセルにセマンティック・クラスが割り当てられますが、他のコンテキストや情報(オブジェクトなど)は出力されません。
セマンティック・セグメンテーションでは、すべてのピクセルがstuffとして扱われます。stuffとthingsは区別されません。
たとえば、街路上の特定のクラスを識別するようにトレーニングされたセマンティック・セグメンテーション・モデルは、thing(車や電柱など)とstuff(道路や歩道など)の関連クラスごとに境界と等高線を示すセグメンテーション・マスクを生成しますが、同じクラスの複数のインスタンスを区別すること(またはその数を数えること)はしません。たとえば、前後に駐車された複数の車は、単純に 1 つの長い「車」セグメントとして扱われる場合があります。
インスタンス・セグメンテーションは、セマンティック・セグメンテーションの優先順位を逆転させます。セマンティック・セグメンテーション・アルゴリズムが(個々のインスタンスを無視して)各ピクセルのセマンティック分類のみを予測するのに対し、インスタンス・セグメンテーションは、各個別のオブジェクト・インスタンスの正確な形状を描写します。
インスタンス・セグメンテーションは、無視する対象であるstuffからthingsを分離するため、おおよそのバウンディング・ボックスではなく正確なセグメンテーション・マスクを出力する、オブジェクト検出の進化形として理解することができます。
インスタンス・セグメンテーションはセマンティック・セグメンテーションよりも難しいタスクです。同じクラスのthingsが互いに触れ合ったり、重なり合ったりしている場合でも、インスタンス・セグメンテーション・モデルは、セマンティック・セグメンテーション・モデルが単純にそれらをひとまとめにできるのに対して、それぞれを分離して形状を判断できなければなりません。たとえば、この街路の画像内で、これらの2つの異なるモデルが駐車中の車をどのように処理するかを考えてみましょう。
インスタンス・セグメンテーション・アルゴリズムは通常、問題に対して2段階アプローチまたはワンショットアプローチのいずれかを採用します。領域ベースの畳み込みニューラル・ネットワーク(R-CNN)のような2段階モデルは、提案された各インスタンスに対してバウンディング・ボックスを生成するために従来のオブジェクト検出を実行し、その後、各バウンディング・ボックス内でより洗練されたセグメンテーションと分類を実行します。YOLO(You Only Look Once)のようなワンショット・モデルは、オブジェクトの検出、分類、セグメンテーションを同時に実行することで、リアルタイムのインスタンス・セグメンテーションを実現します。
ワンショット・アプローチでは速度が向上し(精度とのトレードオフあり)、2段階アプローチでは精度が向上します(速度とのトレードオフあり)。
パノプティック・セグメンテーション・モデルは、すべてのピクセルのセマンティック分類を判断するうえ、画像内の各オブジェクト・インスタンスを区別するため、セマンティック・セグメンテーションとインスタンス・セグメンテーションの両方のメリットを兼ね備えています。
パノプティック・セグメンテーション・タスクでは、各ピクセルにセマンティック・ラベルと「インスタンスID」の両方の注釈を付ける必要があります。同じラベルとIDを共有するピクセルは同じオブジェクトに属します。stuffであると判断されたピクセルの場合、インスタンスIDは無視されます。
したがって、パノプティック・セグメンテーションは、特定の画像の包括的かつ全体的な理解をコンピューター・ビジョン・システムに提供します。その魅力は明らかですが、パノプティック・セグメンテーションを一貫した計算効率の高い方法で実現することは、実に大きな課題となります。
ここでの課題とは、セマンティック・セグメンテーション・モデルは、すべてのピクセルをstuffとして扱い、thingsの個々のインスタンスを無視する一方、インスタンス・セグメンテーション・モデルは、stuffを無視して個々のthingsを分離するという、2つの相反する方法論を統合することにあります。どちらのタイプのモデルも、もう一方のモデルがもつ責任を適切に吸収することはできません。
パノプティック・セグメンテーション・モデルの初期の試みでは、単純に2つのモデルを組み合わせて、各タスクを個別に実行し、後処理の段階でそれらの出力を組み合わせていました。このアプローチには2つの大きな欠点があります。それは、多大な計算オーバーヘッドを必要とすることと、セマンティック・セグメンテーション・ネットワークが出力するデータ点とインスタンス・セグメンテーション・ネットワークが出力するデータ点との不一致に対処しなければならないことです。
新しいパノプティック・セグメンテーション・アーキテクチャーは、ディープラーニングに対するより統合されたアプローチでこれらの欠点を回避することを目的としています。多くの場合、特徴ピラミッドネットワーク(FPN)のような「バックボーン」ネットワークが構築され、入力画像から特徴を抽出し、その抽出データを「フォアグラウンド・ブランチ」と「バックグラウンド・ブランチ」、または「セマンティック・ヘッド」と「インスタンス・ヘッド」のような並列ブランチに送り、重み付けシステムを使用して各ブランチの出力をマージします。推奨のパノプティック・アーキテクチャーには、EfficientPS、OANet、PanopticFPN、UPSNet、SOGNet、BGRNet、AUNet、FPSNet、および SpatialFlowなどが含まれます。
従来の画像セグメンテーション技術は、特徴抽出のためにピクセルの色値(および明るさ、コントラスト、強度のような関連する特性)からの情報を使用し、セマンティック(意味論的)分類のようなタスク用に単純な機械学習アルゴリズムで迅速に学習させることができます。
ディープラーニングに基づくセグメンテーション手法は、より高精度で洗練された画像解析(特に、パノプティック・セグメンテーションのような多くのコンテキスト情報を必要とするタスク)が可能な一方、従来の手法はコストや計算負荷がはるかに低く、特定の問題をより効率的に解決することができます。
一般的な従来型(または「クラシック型」)画像セグメンテーション手法には次のようなものが含まれます。
注釈付きの画像データセットでトレーニングされたディープラーニング画像セグメンテーション・モデルのニューラル・ネットワークは、視覚データの根底にあるパターンを発見し、分類、検出、セグメンテーションに最も関連する顕著な特徴を識別します。
コンピューティング要件とトレーニング時間でトレードオフがあるものの、ディープラーニング・モデルは一貫して従来のモデルを上回るパフォーマンスを提供しており、コンピューター・ビジョンにおける最新の進歩の基礎を形作るものです。
画像セグメンテーションで使用される主なディープラーニング・モデルには以下が含まれます。
画像セグメントの境界をマッピングするだけでなく、各セグメントがどのstuffまたはthingを表すかを予測するために、ディープラーニング・モデルは、特定のセマンティック・クラスを認識するよう注釈付きの大規模なデータセットでトレーニングされます。事前にラベル付けされたこれらの画像から、ディープラーニング・モデルは各ラベルに典型的なパターンとピクセル値を推測します。
タスクが異なれば、異なるトレーニング・データが必要になります。たとえば、自動運転車用のコンピューター・ビジョン・システムは、「人」、「車」、「車線」、「一時停止標識」のような意味的クラスでラベル付けされた画像でトレーニングされますが、医療用画像モデルには、特定のクラスの生体組織や腫瘍などの病態を認識するための最適化が必要になります。
トレーニング・データセットは人間の専門家によって慎重に前もってラベル付けされる必要があり、これは非常に手間がかかる場合があります。ほとんどの画像セグメンテーション・モデルは、大規模なオープンソース・データセットを利用します。これらの公開データセットは、トレーニングされたモデルの成功を評価する際の「グラウンド・トゥルース」としても機能します。多くの場合、パフォーマンス・メトリクスは、トレーニング・データセット内のアノテーションと正確に一致する結果のパーセンテージとして表現されます。
ディープラーニング・画像セグメンテーション・モデルの一般的なトレーニング・データセットには以下が含まれます。
画像セグメンテーションは、さまざまな分野で不可欠なツールとなっています。
現代のコンピューター・ビジョン・システムは、画像認識と分析に関しては超人的な精度を誇りますが、見ているものを実際に理解しているわけではありません。IBM Researchでは、私たちと同じように世界を見る能力を持つAIシステムを設計しています。
この初心者向けコースは、コンピューター・ビジョンとそのさまざまな業界における用途を理解するのに役立ちます。コースの一環として、基本的な画像処理にPython、Pillow、OpenCVを活用し、画像分類と物体検出を行います。
IBM Maximo Visual Inspectionの使用を始めて、資産や製品を検査し、生産や品質の問題の原因となる欠陥を特定するためのAIベースのモデルを作成し、トレーニングします。