AIの基礎
画像分類のしくみはどうなっているのか?
スマートフォンが写真を撮るだけで、どのような物体であるかを判断できるのはどうしてでしょうか。ソーシャルメディアのウェブサイトが自動的に写真の中の人物をタグ付けできるのはどうしてでしょうか。これは、AIを利用した画像認識と分類技術によって実現されています。
画像の認識と分類は、人工知能の多くの驚くべき成果を可能にしている重要な技術です。では、コンピューターはどのようにして画像を検出して分類するのでしょうか。この記事では、コンピューターが画像を解釈して検出する一般的な方法について説明し、画像分類の最も人気のある方法を紹介します。
ピクセルレベルとオブジェクトベースの分類
画像分類技術は、主に2つのカテゴリに分けることができます:ピクセルベースの分類とオブジェクトベースの分類です。
ピクセルは画像の基本単位であり、画像分類は主にピクセルの分析によって行われます。しかし、分類アルゴリズムは、個々のピクセルのスペクトル情報だけを使用して画像を分類することも、スペクトル情報と空間情報(近くのピクセル)を組み合わせて使用することもできます。ピクセルベースの分類方法は、スペクトル情報(ピクセルの強度)だけを使用しますが、オブジェクトベースの分類方法は、ピクセルのスペクトル情報と空間情報の両方を考慮します。
ピクセルベースの分類には、最小距離法、最大尤度法、最小マハラノビス距離法などがあります。これらの方法では、クラスの平均と分散が既知である必要があり、クラスの平均とターゲットピクセル之间の「距離」を考慮して分類します。
ピクセルベースの分類方法は、近くのピクセルからの情報を使用できないという点で限界があります。一方、オブジェクトベースの分類方法は、他のピクセルも考慮することができるため、空間情報も使用してアイテムを分類します。ここで、「オブジェクト」とは、ピクセルの連続した領域を指し、必ずしもターゲットオブジェクトが存在することを意味しません。
オブジェクト検出のための画像データの前処理
最新の画像分類システムは、主にオブジェクトレベルの分類スキームを使用しており、画像データを特定の方法で準備する必要があります。オブジェクト/領域を選択して前処理する必要があります。
画像と画像内のオブジェクト/領域を分類する前に、コンピューターが画像データを解釈する必要があります。画像を分類アルゴリズムの入力に適した形式に変換するために、画像を前処理して準備する必要があります。これは、機械学習分類器をトレーニングするためにデータを準備する上で重要なステップです。
オブジェクト検出は、さまざまな方法と技術を使用して実行されます。まず、画像内の関心オブジェクトが1つだけか、複数かによって、画像の前処理方法が異なります。関心オブジェクトが1つだけの場合、画像はローカライゼーション処理されます。画像を構成するピクセルには、コンピューターが色や色合いを表示するために解釈される数値値があります。関心オブジェクトの周りにバウンディングボックスと呼ばれるオブジェクトが描画され、コンピューターが画像のどの部分が重要で、どのピクセル値がオブジェクトを定義するかを知ることができます。画像内の関心オブジェクトが複数ある場合、オブジェクト検出と呼ばれる技術を使用して、画像内のすべてのオブジェクトにバウンディングボックスを適用します。

Adrian Rosebrock via Wikimedia Commons、CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Intersection_over_Union_-_object_detection_bounding_boxes.jpg)
別の前処理方法は、画像セグメンテーションです。画像セグメンテーションは、画像を特徴が似ているセグメントに分割することによって機能します。画像のさまざまな領域には、他の領域と比較して似たピクセル値があります。これらのピクセルは、画像内の関連オブジェクトの形状と境界に相当する画像マスクにグループ化されます。画像セグメンテーションは、バウンディングボックスと同様に、コンピューターが画像の特徴を分離してオブジェクトを分類するのを助けますが、より正確なピクセルレベルのラベルを提供します。
オブジェクト検出または画像セグメンテーションの後、関連するラベルが適用されます。これらのラベルは、オブジェクトを構成するピクセルの値とともに、パターンを学習する機械学習アルゴリズムにフィードされます。
機械学習アルゴリズム
データが準備され、ラベル付けされたら、データは機械学習アルゴリズムにフィードされ、アルゴリズムはデータでトレーニングされます。ここでは、最も一般的な画像分類の機械学習アルゴリズムについて説明します。
K-最近傍法
K-最近傍法は、最も近いトレーニング例を調べ、ラベルを確認して、テスト例の最も可能性の高いラベルを決定する分類アルゴリズムです。KNNを使用した画像分類では、トレーニング画像の特徴ベクトルとラベルが保存され、テスト時に特徴ベクトルだけがアルゴリズムに渡されます。トレーニングとテストの特徴ベクトルは、類似性を比較するために互いに比較されます。
KNNベースの分類アルゴリズムは非常にシンプルで、複数のクラスを簡単に処理できます。しかし、KNNはすべての特徴を同等に考慮して類似性を計算します。つまり、画像の分類に重要な特徴のサブセットだけが重要な画像が提供された場合、誤分類する可能性があります。
サポートベクターマシン
サポートベクターマシンは、点を空間上に配置し、点の間の分割線を描き、点が分割平面のどちら側にあるかによってオブジェクトを異なるクラスに分類する分類方法です。サポートベクターマシンは、カーネルトリックと呼ばれるテクニックを使用して非線形分類を行うことができます。サポートベクタークラスファイアーは通常非常に正確ですが、サポートベクタークラスファイアーには、サイズとスピードの両方で制限されるという大きな欠点があり、サイズが増加するとスピードが低下します。
多層パーセプトロン(ニューラルネットワーク)
多層パーセプトロン、またはニューラルネットワークモデルは、人間の脳に着想を得た機械学習アルゴリズムです。多層パーセプトロンは、互いに接続された複数の層で構成され、人間の脳のニューロンが接続されているのと同様です。ニューラルネットワークは、入力特徴とデータのクラスの関係について仮定を行い、トレーニング中にこれらの仮定を調整します。シンプルなニューラルネットワークモデルである多層パーセプトロンは、非線形の関係を学習することができ、結果として他のモデルよりもはるかに正確になる可能性があります。ただし、多層パーセプトロンモデルには、非凸の損失関数の存在などの注目すべき問題があります。
ディープラーニングアルゴリズム(CNN)

APhex34 via Wikimedia Commons、CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Typical_cnn.png)
最近の画像分類アルゴリズムとして最も一般的に使用されているのは、畳み込みニューラルネットワーク(CNN)です。CNNは、多層ニューラルネットワークと、オブジェクトの分類に最も重要な特徴を抽出できる特殊な層を組み合わせたカスタマイズされたニューラルネットワークです。CNNは、画像の特徴を自動的に検出して生成して学習することができます。これにより、画像を機械学習アルゴリズムに適した形式に変換するために、手動でラベル付けしてセグメント化する必要が大幅に減ります。さらに、CNNは非凸の損失関数にも対処できるため、多層パーセプトロンモデルよりも優れています。
CNNは、フィルタを画像に適用して「畳み込み」を作成することからその名前が付けられました。つまり、風景の一部を動く窓から見るのと同じで、窓から見える特徴だけに焦点を当てています。フィルタには、ピクセル値自体と乗算される数値値が含まれます。結果は、新しいフレーム、または数値の行列で、元の画像を表します。このプロセスは、選択した数のフィルタに対して繰り返され、次にフレームは新しい画像に結合されます。この画像は、元の画像よりも小さく、複雑性が低くなります。プーリングと呼ばれるテクニックを使用して、画像内の最も重要な値だけを選択し、畳み込み層の目的は、最終的に画像内の最も重要な部分、つまりニューラルネットワークがオブジェクトを認識するのに役立つ部分を抽出することです。
CNNは、2つの異なる部分で構成されています。畳み込み層は、画像の特徴を抽出して、ニューラルネットワーク層が解釈して学習できる形式に変換します。初期の畳み込み層は、画像の最も基本的な要素、たとえば単純な線や境界を抽出します。中間の畳み込み層は、単純な曲線や角度などのより複雑な形状を捉え始めます。より深い、後の畳み込み層は、画像の高レベルの特徴を抽出します。これらは、CNNのニューラルネットワーク部分に渡され、クラシファイアーが学習するものです。simple lines and boundaries. The middle convolutional layers begin to capture more complex shapes, like simple curves and corners. The later, deeper convolutional layers extract the high-level features of the image, which are what is passed into the neural network portion of the CNN, and are what the classifier learns.












