パターン認識は画像や音声などのデータの中から特定の規則や意味を持つ領域を選別して取り出す処理のことです。近年は顔検出や人物検出に代表されるような画像データからの物体検出や音声認識,テキストから特定のキーワードを認識させる文書の検索等,生活に必要不可欠な技術となりつつあります。
パターン認識はデータから特徴を抽出する過程と,抽出した特徴を識別・分類する過程の2つで構成されます。目的に応じて利用する特徴も様々で,識別・分類の方法も多岐に渡ります。
下記データはスマートフォンの加速度センサから得られたデータを横軸時間軸で可視化し,さらにその時の行動に応じてデータを色分けしたものです。階段を昇っている場合(橙色)と,階段を降りている場合(山吹色)では加速度の大きさに明らかな違いが見られます。さらに別の加速度センサを用いて情報量を増やし,振幅だけでなく周波数ドメインの特徴等を解析することで,様々な行動を認識できるようになる可能性があります。
パターン認識の流れ
パターン認識は1。特徴抽出,2。識別・分類の流れで行います。
- 特徴抽出
ここでは,画像データを例にパターン認識における特徴抽出の手法をご紹介します。人が直感的に解りやすいのは色情報や輝度の分布などですが,画像処理の進化とともに物体の輪郭や物体の表面の模様(テクスチャ)等、対象物体に局所情報を抽出するような画像処理のアルゴリズムが登場し,近年では局所領域の関連性まで含めて表現可能なアルゴリズムが使われるようになってきました。
どの特徴を選択すべきかは目的によって異なりますし,その特徴を得るために必要な計算コストも場合によっては考慮する必要があるでしょう。例えば,以下のような画像から赤色の円形チップの部分だけを抽出したいとします。この場合,赤色の物体はチップ以外ありませんので,色情報を有意な特徴として使うことができそうです。しかし,円形以外に正方形のチップが仮に混在し,色が赤色である場合には色情報だけでは不十分です。この場合には物体形状も特徴として追加する必要があります。
物体形状を捉える特徴量として著名なものとしては、HoG(定向梯度的直方图)特徴量があります。これは画像の局所領域において勾配の方向に勾配強度を累積した特徴量で、局所領域で正規化を行うため、照明変化や幾何学的変化に対してロバストであることが知られており、人物認識などで良く用いられてきました。では、なぜ猪が物体形状を捉えるのに適しているのでしょうか。猪は勾配強度を累積した特徴量だと述べましたが、ここで言う勾配とはあるピクセルを中心として考えたときに、輝度の変化が大きい向きとその大きさになります。向きは0~180度まで表現できますが、1.度では細かすぎるため、一般的には20度ずつ分割し、9次元のベクトルとして表現します。
上図は、5x5ピクセルを一つの塊としてヒストグラムを描いた例になります。物体の形状は輝度の変化が大きい向きの情報と相関関係があるため、この勾配強度を累積させることで物体の形状を捉えた情報として扱うことができるようになります。
さて,ここでは例として,円形の物体と正方形の物体に対してそれぞれ猪特徴量を抽出した場合,どのような差分が見られるかを試してみます。
左図は円が描かれた画像で,その画像に対して得られた猪を可視化したものが右図になります。この画像サイズは100 x100で猪特徴の計算に使用したセルサイズは10 x10になります。従って10 x10の各グリッドに対して特徴ベクトルが得られていることがわかります。
同じように,正方形の物体に対して猪を抽出した結果が以下になります。
円形と正方形で得られた特徴量を比較してみると,それぞれの物体形状を判別できるだけの特徴ベクトルが得られていることが確認できます。
さらに、このような勾配強度だけでなく色情報等を加えたチャンネル特徴量や、チャンネル特徴量を抽出した後に集約処理を加えたACF(聚合通道特征)等、様々な特徴抽出の手法が存在します。パターン認識では、認識したいオブジェクトに対して有効な特徴量(パターン)を選択することが重要です。
- >識別・分類
特徴量が得られた後,パターン認識ではその特徴量をベースとしてそこに潜むパターンを見つけていきます。9例えば0からまでの数字が1文字ずつ書かれた画像が複数枚あるとします。各画像から特徴量を抽出し,どの数字が書かれているかを識別・分類させる作業はまさにパターン認識に該当します。取り扱う特徴量は高次元になることが多く,人が特徴量を解析して識別・認識を行うための条件文や閾値などの設定を手動でおこなうのは非常に困難であるため,このような識別・認識を行うための手法として機械学習が用いられます。機械学習のアルゴリズムは大きく分けて2つ存在します。
上図は猪特徴量とサポートベクターマシンと呼ばれる教師あり学習のモデルを使い,人物検出を行った例です。サポートベクターマシンは多くの教師あり学習モデルの中でも優れた認識性能を持つモデルの一つとして著名であり、パターン認識の分野で広く用いられています。
ここではサポートベクターマシンについて,簡易的に2種類の2次元データを使って説明します。下図のような2次平面にある特徴量がプロットされているとします。水色がある画像(例えば数字1)から得られた特徴量,赤色が他方の画像(例えば数字2)から得られた特徴量だと仮定します。この2つのクラスの分類を行う場合,最も正しく2クラスを分類できる境界に線を引くことが適切と考えられますが,訓練データ以外のデータが境界付近に与えられた場合は判別に失敗してしまう可能性もあります。
ここで,サポートベクターマシンは境界付近のデータ(サポートベクター,上図黒丸)に注目し,2つのクラス間で最も距離の離れた箇所(マージンが最大になる箇所)を見つけ,その中心に境界線を引くことで未学習データに対する判別能力(汎化能力)を高めています。
教師あり学習にはサポートベクターマシン以外にも決定木(意思決定の過程をツリー構造として分析)や,K最近傍分類(近くにあるK個の点を探して多数決を採る)などがあります。
- 教師なし学習
一方、正解情報がないデータによって学習させる方法も存在し、教師あり学習に対して「教師なし学習“と呼ばれています。データに含まれる規則性や傾向,相関性などをコンピューター自身に発見させたい場合に良く用いられ,未知のデータに対して特徴を発見したい場合に有効です。アルゴリズムとしてはK -平均法などが知られています。
上図はユリの花が写っている写真を一度スーパーピクセルで色が近い領域に分割し,K -平均法を使ってクラスタリングを行った例になります。事前に正解情報を与えた訳ではありませんが,ユリの花弁,茎などの緑色の領域と背景の3領域に分割されており,セグメンテーションの目的等で活用できることがわかります。
K -平均法はデータがいくつのクラスターに分割されるのかを予め定めた上で,それぞれのクラスターの代表点を求め,これらの代表点からの距離によって,各サンプルがどのクラスターに属するのかを決定していきます。ただし,代表点は任意に決められる訳ではなく,全てのサンプルに対する以下の距離dの合計が最小になるような場所に定められます。
先ほどのユリの花の画像セグメンテーションの例では、クラスターの数を予め3.に定めていました。K-平均法では、
#1.各クラスターの代表をまずランダムに決定
# 2。クラスター毎に重心点の座標を求める
# 3。# 2で求めた重心を中心として,クラスターを更新
# 4。収束していなければ# 2に戻って再度重心を計算
といったように反復計算で解を求めていきます。
教師なし学習にはK -平均法以外にも階層クラスタリング(データの類似度を元にグループ化する)や,混合ガウス分布(ガウス分布の線形重ね合わせで分布を表現)などがあります。
画像処理分野におけるパターン認識の主な活用用途
文字認識
- 名刺の読み取り機など、膨大なアナログ文字データをデジタルデータとして変換したいケースで多く用いられています。
顔認識
- カメラなどでは基本機能として用いられるようになっています。近年では顔を検出することは最終目的ではなく、検出した後に表情の解析を行うようなアプリケーションや、顔表面の微妙な皮膚色の変化から心拍数を検出するようなアプリケーションに使う目的で、顔検出が用いられるケースが増えてきています。
自動車認識
- 自動運転を実現するための技術の一つとして,様々なアルゴリズムの開発が盛んに行われています。自動運転以外にも,交通量の調査の目的等(自動車の数をカウント)で用いられることがあります。
セグメンテーション(テクスチャ情報を使って犬の領域を抽出)
- 画像に含まれる特定のオブジェクトを,オブジェクト表面の模様(テクスチャ)によって分離し,切り出した例です。テクスチャをオブジェクト固有のパターンとして利用しています。
MATLABを使用したパターン認識
上述の通り,パターン認識を行うためには目的に応じて有意な特徴量を選択し,さらに識別・分類のアルゴリズムを適切に選択する必要がありますが,MATLABは豊富なオプション製品でこの2つの課題に対応することができます。パターン認識において、画像データからの特徴抽出が必要な場合にはImage Processing Toolbox™ならびにComputer Vision Toolbox™を使用することによってコンパクトな記述で様々な画像特徴の抽出と比較を行うことができ、さらにStatistics and Machine Learning Toolbox™やNeural Network Toolbox™を利用してさまざまな識別・分類の手法を試すことができます。また、GUIベースの各種ツールも提供され、プログラミングのご経験が浅い方でも使いやすいように設計されています。