1. 画像認識技術発展の背景
近年、画像認識技術が飛躍的な進化を遂げた背景には、以下の3つの要素が揃ったことが挙げられます。
- ハードウェア処理能力の向上: GPU等の計算資源の発展により、膨大な計算処理が現実的な時間で実行可能になった。
- インターネット普及による膨大なデータの生成: モバイル端末やSNSの普及により、学習に必要な画像データが爆発的に増加した。
- インターネット高速化による膨大なデータの収集: 高速ネットワークインフラにより、生成されたデータを効率的に収集・蓄積できるようになった。
要するに、コンピュータとインターネットの発達によって、機械学習を成立させるための諸条件が完全に整ったことが最大の要因です。
2. 画像認識の源流と前提知識
画像認識は独立して生まれた技術ではなく、パターン認識やコンピュータビジョンを源流とし、人工知能(AI)、機械学習、深層学習へと発展してきた分野です。
必要な知識領域
- 数学の知識: 線形代数、微積分、確率統計など、アルゴリズムの背景を理解するために必要。
- 英語の知識: 最新技術の論文や公式ドキュメントの読解に不可欠。
- 画像認識ツールの知識: OpenCV、PyTorch、TensorFlowなどのフレームワーク。近年では、モバイル端末上で推論を行うための軽量な機械学習ライブラリ(TensorFlow Lite等)も普及している。
コンピュータにおける「画像」のデータ構造
画像認識において、データは多次元配列(テンソル)として扱われます。
-
静止画:
縦 × 横 × チャンネル数。モノクロ画像はチャンネル数1(B:ブラック)、カラー画像はチャンネル数3(RGB)で表現される。 -
動画: 静止画に時間軸(T)が加わり、
T × 縦 × 横 × チャンネル数の4次元データとして扱われる。
3. 狭義の画像認識の分類
画像に対するタスクは、主に以下の種類に分類されます。
- 画像分類(Classification): 画像全体に何が写っているかを特定・分類する。
- 物体検出(Object Detection): 画像内の「どこに」「何が」あるかをバウンディングボックス(矩形)で特定する。
-
領域分割(Segmentation): ピクセル単位で画像を分類する。
- 意味による分類(セマンティックセグメンテーション): ピクセルごとに「道路」「車」などの意味(クラス)を割り当てる。
- 物体による分類(インスタンスセグメンテーション): 同じ「車」でも個別の物体(車A、車B)として区別して分割する。
4. 基本的な画像処理と特徴量エンジニアリング
深層学習が台頭する以前は、画像から「特徴」を抽出し、それを機械学習モデルに入力するアプローチが主流でした。
基本的な画像処理手法
前処理として画像を加工・補正する技術です。
- 平滑化: ノイズを除去し画像をぼかす処理。
- 鮮鋭化: エッジ(輪郭)を強調する処理。
- モルフォロジー変換: 膨張・収縮処理などにより、画像の形状を整える。
- 画像補正 / 画像幾何変換: コントラスト調整や、回転・拡大縮小などの変換。
特徴量エンジニアリング
データの中から予測に有用な属性を見極め、抽出するプロセスです。
- 特徴の選択: 画像中のエッジやコーナーの位置・向きなど、重要な属性を見極める。こうした高度な特徴を表現・記述したものを**特徴量記述子(Descriptor)**と呼ぶ。
- 特徴の抽出: 計算処理を通して特徴量記述子を算出・取得する作業。エッジ・コーナー抽出にはHarrisコーナー検出やSIFT、SURFなどのアルゴリズムが用いられる。
HOG (Histogram of Oriented Gradients)
画像中の局所領域(セル)における画素値の勾配(輝度の差)の向きを数え上げることで特徴量を抽出する手法です。
- 処理の流れ: 画像を「セル」と呼ばれる小さな連結領域に分割し、各セルの隣接ピクセル間の輝度の差(画像勾配)を計算してヒストグラム化する。
- 利点: 局所的なセル単位で処理を行うため、全体の幾何学的な変化や明るさの変化に影響されにくい。歩行者が直立姿勢を維持していれば、手足の細かい動きを無視して全体の特徴を捉えられるため、人物検出に非常に適している。
5. 機械学習アルゴリズムと画像認識
抽出された特徴量を元に、分類や回帰を行うアルゴリズムです。
主成分分析(PCA)
画像データは変数が非常に多く、計算量が爆発的に増加するという課題があります。さらに、予測に影響のない変数まで学習してしまうと過学習に陥り、期待する結果が得られない可能性があります。
- モチベーション: 「より少ない変数で、本質的な特徴を保持したまま機械学習を実現したい」。
- 効果: 不必要な変数が明確な場合は明示的に削除すればよいが、変数が多く連関が不明確な場合、PCAを用いて多次元データを低次元に要約(圧縮)することが極めて有効である。
SVM(サポートベクターマシン)
古典的な機械学習において、比較的高い性能を発揮する代表的な手法です。
- 原理: N次元のデータ空間において、各クラスのデータ間の距離(マージン)が最大となるような境界線を探す。この境界を**超平面(Hyperplane)**と呼ぶ(2次元の直線を多次元に一般化したもの)。N次元の空間をN-1次元の超平面で分割することで分類を行う。
k近傍法(k-NN)
未知のデータに対し、既存のデータから距離が近い似たデータを「k個」集め、その多数決でクラスを決定する手法。
- 留意点: kの値が小さすぎるとノイズの影響で不安定になりやすく、大きすぎると予測エラー率が高くなる。また、多数決の同票を避けるため、kは奇数に設定する必要がある。
k平均法(k-means)
教師なし機械学習の代表的なクラスタリングアルゴリズム。
- 各データポイントに対してランダムにクラスタを割り当てる。
- 各クラスタ内のデータポイントの重心を計算する。
- 各データポイントから重心までの距離を計算し、最も近いクラスタに割り当て直す。
(上記2〜3をクラスタの割り当てが変化しなくなるまで繰り返す)
6. 深層学習(ディープラーニング)による発展
特徴量抽出から分類までを、多層のニューラルネットワーク自身に行わせる現代の主流技術です。
CNN(畳み込みニューラルネットワーク)
画像認識に特化したネットワーク構造であり、主に以下の処理を繰り返して最終的な全結合層に接続します。
- 畳み込み(Convolution): フィルターを用いて大局的な画像情報を把握する処理。大雑把に言えば「セル単位での要約」であり、この要約方法(重み)の違いによって抽出される特徴が異なる。
- プーリング(Pooling): 情報を間引く処理であり、本質的には「データの圧縮」。代表的なMax Poolingでは、セル単位で最大値を取得することで、対象物の微小なズレに対する不変性を獲得する。
その他のニューラルネットワーク
- RNN(回帰型ニューラルネットワーク): 時間的な連続性を持つデータ(動画など)の処理に用いられる。
- GAN(敵対的生成ネットワーク): データ生成を目的とし、本物に近い画像や動画を生成する技術。
- オートエンコーダ: データを一度低次元に圧縮し、再度元のデータに復元する構造を持つ。ノイズ除去や異常検知に応用される。