画像認識とAIの密接な関係。
最近「画像認識(Image Recognition)」という言葉を、とみに耳にするようになってきました。画像も認識も耳慣れた、日常会話でも比較的頻出する単語なので、何となく分かったような気になっていますが、どんなものなのか説明できるかというと「?」となってしまう方も多いのではないでしょうか。
今、一般的に画像認識と括られる概念をざっくりと言ってしまうと「対象となる画像や映像に一体何が写っているのか、機械が識別する技術」ということになると思います。どのように識別するか、についてもう少し付け加えると、対象の画像・映像からオブジェクトの形状や色などの特徴を抽出してパターン化することだといえるでしょう。そのパターンをデータベースと照合して、「これは○○だ」と判断するまでの一連を画像認識という言葉で表しているのです。つまり大量のサンプルデータをバックボーンに持ったパターン認識技術の一つと言えます。
パターン認識技術というと、スマートフォン内蔵カメラの画像からソフトデコーダーでバーコードを解析するAsReader CAMERA-Typeもそうですし、デジカメに搭載されている撮像素子(イメージセンサ)を使用した二次元コードリーダー(2D CMOS imager搭載)なども、広義にはこのカテゴリーに含まれます。
ちなみに先ほど画像認識は「パターン認識技術の一つ」と紹介しましたが、その他のパターン認識技術としては音声認識、文字認識 (OCR)、指紋や掌紋、虹彩といった、いわゆるバイオメトリクスなどが挙げられます。これらのパターン認識はバイオメトリクスを除くと、人間にとっては、発育の過程でごくごく当たり前に身につけていく弁別能力ですが、これと同じことを機械に行わせることの困難さがパターン認識、ひいては画像認識の苦難の歴史となるのです。
機械に画像認識をさせるということでマシンビジョンという言葉が生まれるのですが、この認識・識別工程が非常に複雑で、人力のプログラムでは対応に限度があり、今や人工知能(AI)なくしては成り立たないレベルになっているのです。
機械学習(マシンラーニング)から深層学習(ディープラーニング)へ
ILSVRC(ImageNet Large Scale Visual Recognition Challenge)で画像認識の方向性が決まった!
機械(コンピューター)による画像の認識とは?
元々、コンピューターは情報の論理的処理を専門に進化してきました。当初はメカ的にも性能に限界があって、文字・数字や記号などを処理するアルゴリズムが関の山でしたが、次第にスペックが向上し、画像や音声データを処理できるようになり、パターン認識のアルゴリズムが開発されます。
ここで誤解しないように注釈を付けさせていただくと、「画像や音声データを処理」するといっても、決して画像や音声そのままを処理するというワケではないということです。具体的には、画像認識では画像を構成する1つ1つのピクセルのデータを特徴量データ(ピクセルごとのRGBデータ)に変換して、特徴量を算出するといったアルゴリズムなんです。細かく言うと、画像中の濃淡変化が大きい特徴点を検出して、その特徴点を含む周辺領域(この一連を領域分割と言います)を画素値※1や微分値※2から算出した数値を特徴量として扱っているのです。画像や映像からの人物検出などで、HOG特徴量という言葉を耳にした方もいらっしゃるのではないかと思いますが、このHOGやSIFTといったものが2000年前後に相次いで開発された、パターン認識の代表的なアルゴリズムになります。
※1 画素値:各画素の色の濃淡や明るさを表す値で、三原色RGB(赤Red・緑Green・青Blue)のそれぞれを256階調で表した数値です。モノクロ画像の場合はグレースケールを使用して黒~白を256段階の階調にした数値になります。
※2 微分値:画像の場合、特徴点(濃淡変化が大きい)とその隣接画素の数値は連続値ではないので、正確には微分値ではなく、画素値間の差分を基にした微分近似値。この近似値を使用して、認識対象の輪郭を捉える(エッジ抽出)のです。
機械学習(マシンラーニング)から深層学習(ディープラーニング)へ
冒頭で画像認識を概観した際の締めで、機械に画像認識をさせるための「認識・識別工程が非常に複雑で、人力のプログラムでは対応に限度」があると書きました。かなり乱暴なまとめ方でしたので少し補足します。コンピューターによる画像認識の精度を向上させようとすると、演算方法や使用するパラメータの改善ということになりますが、人力で行うためには、画像認識を行うたびに正答率が上がるまで、それまでのアルゴリズムを都度ごとに人が介在して改善し続けるという作業の繰り返しになるのです。まずはパラメーターを調整してみるとか、今度は演算の仕方を変えてみるなどなど。想像しただけで、膨大な時間と労力が費やされることがお分かりになると思います。自ずと限度が見えてきますよね。
そこで登場するのが、機械学習という方法です。コンピューターに演算の仕方と、どういったルールでパラメータを修正するかだけを人が設定し、それから先はコンピューターが大量のデータをもとに、繰り返し自動的にパラメータを修正し続けて、正答率を上げていくワケです。
大量のデータというのが、識別の正解を記して色々なパターンで構成された画像データということになります。識別の正解を用意しているので、このようなデータを“教師ありデータ”と言います。いわゆるアノテーションです。
大量かつ良質なアノテーションを繰り返し学習することで、このデータから対象のルールやパターンを見つけ出し、識別の精度を上げていくのが機械学習です。(実際には機械学習のアルゴリズムは他にもあって、クラスタリングと称される教師「なし」学習をはじめ、大きく分類すると5カテゴリーのアルゴリズム体系があります)
さて、ここでニューラルネットワーク(Neural Network)の登場です。これはニューロンとシナプスという人の脳の情報伝達プロセスをアルゴリズムで模したもので、伝達信号の強弱といった情報の比重を、処理する数値の重要性を数値化した「重み」として軽重を表現しています。このニューラルネットワークをディープラーニングと混同されている方もいらっしゃるようですが、基本的には機械学習のカテゴリーで開発された仕組みなんです。前述した教師ありデータで学習していく中で、識別の結果(精度)を正解に近づける過程として“重み”のパラメーターを都度補正して改善していくという学習方法です。これが画像認識における「認識・識別工程」だとイメージしてもらえば良いかと思います。
で、このニューラルネットワークを多層化(ディープ化)したものが、機械学習の中でも特に深層学習(ディープラーニング)と呼ばれる学習法方だと言えます。認識・識別工程を多層化することで、対象画像のデータ分析の複雑化に対応できるようになり、識別の飛躍的な精度アップに繋がって現在に至るといった流れになります。
もっとも現在の画像認識における深層学習では、さらに畳み込みネットワークといった手法が主流になっています。紙幅も残り少なくなってきましたので、畳み込みネットワークのご紹介はまた別の機会にでも。
ILSVRC(ImageNet Large Scale Visual Recognition Challenge)で画像認識の方向性が決まった!
ILSVRCというのは2010年から毎年開催されている、コンピュータによる画像認識技術に関するコンペティション形式の研究集会です。スタンフォード大学やプリンストン大学などが関わる世界的にも最先端の画像認識技術競技会のようなものだと言えるでしょう。
当初のILSVRCでは、各参加者が本項冒頭に述べたような人力での細かいチューニングで、0.X%のレベル(俗にいうコンマレベル)で精度を競っていましたが、2012年の大会で、カナダ・トロント大学のチームが画像認識に初めて深層学習(畳み込みネットワーク)を用いて参戦。圧倒的な精度の違いを見せつけて1位になりました。
この圧勝によって、世界の画像認識技術開発は雪崩打って深層学習を取り入れたものになっていきます。そして3年後の2015年2月、さらに衝撃が走りました。ILSVRCで使用される画像セットは、人がやっても約5%程度は誤認するらしいのですが、そんな難弁別テストで誤認率4.9%という驚異的な数値が叩き出されたのです。コンピューターの画像認識が人の精度を「超えた」と言うワケです。
そしてその1か月後にはGoogleが4.8%と誤認率を更新し、12月にはMicrosoftが3.6%とさらに精度を上げていきます。
深層学習が導入される前までは、「認識率を1%上げるのには10年かかる」と言われていたそうです。画像認識技術とAIにとって、如何に深層学習がエポックだったかを物語る話ですね。
ここまで非常に大雑把にではありますが、つらつらと画像認識について、ご紹介してきました。世の中で次々と画像認識を活用した技術やシステムが導入されたというニュースを耳にしますが、「さもありなん」と感じられたのではないでしょうか。
巷間に囁かれるシンギュラリティ(Singularity)もそう遠くはないかもしれません。