エンジニアの副業は週1からでも可能?副業の例や探し方も解説
- ITエンジニア
- 副業
車載システムやロボットなど、さまざまなデバイスとの連携が進んでいる画像解析技術。有無検査、寸法検査、欠陥検査、色検査、文字検査……多種多様な用途のために、画像解析を用いたソフトウェアが日々新しく開発されています。
華々しい話題の尽きない分野ですが、いま画像解析の世界ではどんなことが起きているのかご存知ですか?
今回は「意外と知らない画像解析の世界」をご案内いたします。
「画像」を「解析」するためには、どんなものが必要なのでしょうか?
もちろん、画像を撮影するカメラは必須です。さらに撮影された画像を保存しておく場所、実際に解析するプログラムなど、さまざまなものが関わり合うことで、画像解析は実施されます。
まずは、画像解析の基礎用語をまとめていきましょう。紹介するのは以下の4つです。
- コンピュータビジョン
- 画像データベース
- パターン認識
- 画像処理
機械が画像を解析するためには、まず画像をデータ化しないといけません。人間の目ではなく、機械のセンサーによって光をとらえる技術を「コンピュータビジョン」と呼びます。
サーモグラフィによって熱の分布を可視化する映像などは、ご存知の人も多いでしょう。これと同様に、コンピュータビジョンは赤外線や紫外線などの人間には見えない光を可視化することも可能です。
コンピュータビジョンで得られた画像データを保存しておくデータベースが「画像データベース」です。
とはいっても、画像データはテキストデータとしての意味を持たないため、MySQLなどの「RDB(Relational Database:関係データベース)」に保存することには意味がありません。AWSのS3など、バイナリデータを保存するサーバーに格納するのが筋です。
しかし、バイナリデータは通常の検索方法では検索できません。そのため、あらかじめ画像に付与されたメタデータを使ってデータの選択や検索をするのが一般的です。
画像の検索は、じつは非常に難しい分野です。一方で非常にニーズの高い分野でもあり、研究者や企業が続々と参入しています。
いよいよここから、解析の世界に入っていきます。「パターン認識」とは、画像に含まれるパターンを読み取る技術です。
人は画像を見て「あ、猫だ」とか「虫が3匹うつっている」と読み取れますが、これは猫や虫のパターンが頭のなかに入っているからできることなのです。これをコンピュータが代替するのがパターン認識の領域になります。
そもそも昔は「人工知能は画像の中から犬を読み取れるようになったら完成」なんて言われていたものです。しかし最近はディープラーニング技術の発展で、実績も注目度も急上昇しています。
「画像処理」とは、画像信号の中からコンピュータが扱いやすい特徴を抽出し、信号品質の改善や特徴づけを行う技術です。画像処理こそ、画像解析において伝統的で中心的な位置を占めている分野といえます。
「犬のようにも見えるけど、猫っぽくもある」といった曖昧な画像処理はコンピュータとって判断しづらい苦手な領域である一方、「一定強度以上の光がうつっている/いない」といった、ゼロイチでひたすら機械的に分類していくような画像処理は得意です。
画像解析の要素技術は、どの分野も日進月歩で発展しています。では、画像解析の難しさの本質とは、いったいどこにあるのでしょうか?
一言でいうと、画像解析が難しい理由は「デジタル画像は高次元データであり、的確に解析するには情報が不足している」ためです。
解析する対象データの次元(説明変数の種類)が2次元や3次元などのものであれば、昔ながらの解析学を応用して数理的に解く方法はたくさんあります。しかしいわゆる画像解析を行おうとするデータは、そう単純なものではありません。
人の顔ひとつ認識するだけでも、光の具合などのノイズを取り払って、エッジや色、パーツの形、パーツ同士の間隔といったさまざまな要素を単純化して、やっと「これは顔だ」と認識できるのです。
人間も動物も、簡単に顔を認識できるのに、機械にやらせようとすると難しい。そんな不思議な世界です。
「ディープラーニングで学習させれば良いんじゃないの」と思われるかもしれませんが、ディープラーニングも万能ではありません。ノイズを取り払ったり、フィルターを追加したりとさまざまな工夫を凝らして、ようやく高いパフォーマンスを出せるソフトウェアが作り出されているのです。
さまざまな発明や実用化の努力の結果、高精度な画像解析技術が世に広まりつつあります。
しかしその元になっているニーズは「画像解析の精度」だけではありません。
人間の手作業では追いつかない作業がある以上、画像解析は求められ続けるでしょう。画像解析技術が発展するにつれ、また新たなニーズが開拓される可能性もあります。
さて、ここでひとつ疑問が浮かびます。
そもそも画像解析とは、「画像を解析し、そこに写っているものの意味を理解すること」を意味しています。しかし「意味を理解する」とは、一体どういったことを指すのでしょうか?
画像解析の文脈でいう「意味」とは、以下の3つを指す言葉として使われています。どの「意味」を識別するかによって、画像解析の手法も変わります。
▲画像セグメンテーション(出典:Jamie Shotton)
画像に何が写っているかをコンピュータが分類するには、まず分類対象を知る必要があります。加えて、分類対象同士の「違い」を知る必要があります。
例えば人間と犬を見分ける際、人間であれば「直立しているか、四足で立っているか」「けむくじゃらか、そうでないか」といった特徴の違いから一目で判断できますが、ソフトウェアは文字通り機械的な値の羅列からそれを判断する必要があります。
そのためには、画像の規則性(特徴量)の発見が必要です。すなわち、コンピュータにとっての「分類」とは、「規則性=特徴量の発見」と同義といえます。
画像解析を自動的に処理するためには、ランダムに映し出された映像のなかから、目的とするものを自分で発見させること(検出)が必要です。クラスと一緒に物体の位置を予測することを、「物体検出(object detection)」と呼びます。
また画像から物体のクラス(種類)を予測するだけでなく、クラスとその物体を含む矩形(バウンディングボックス)を予測する必要があります。
▲物体検出の例(出典:Liu, Wei, et al.)
近年の特徴量の発見・検出手法として「ディープラーニング技術」の発達が注目されていますが、伝統的な解析手段(コントラスト変換・ノイズ除去・ヒストグラム変換・パターンマッチング・エッジ検出など)もまだまだ現役です。加えて、回帰分析、主成分分析、判別分析、正準相関分析、ロバスト統計といった統計技術も欠かせません。
画像解析とは、このようなさまざまな手法の総合力によって実現しているものなのです。
では、実際に画像解析を実施するためにはどのようなツールが活用されているのでしょうか?
代表的なものを3つご紹介します。
『OpenCV』は、インテルが開発・公開しているオープンソースのライブラリです。
画像処理ライブラリの代表格。BSDライセンスで配布されているため、学術用途だけでなく商用目的でも利用することが可能です。
『Google Cloud Vision API』は、Googleの画像認識技術の機能を利用できるAPIです。
Google社内で使用されている技術やインフラを利用した、仮想マシンやデータベース、機械学習などのさまざまなサービスをクラウド上で利用できます。
『Watson Visual Recognition』は、IBMのWatsonの画像認識機能です。
上記2つと同様、こちらもデモ版を試したり、サンプル・プログラムを実行してみたりと手軽に試せます。
『TensorFlow』『Caffe』『Chainer』など、一部のニューラルネットワークのライブラリでも画像処理が可能です。
オープンソースで公開されているものも多く、この分野の発展のめざましさが感じられます。
以上、画像解析のちょっと深い世界をご案内しました。
画像解析が難しいのは、「高次元データであること」と「的確な解釈をするには情報が不足していること」が原因です。この困難を乗り越えるために、現在さまざまな理論や技術が組み合わされ、開発が進められています。
現在の画像解析は人工知能研究と同様、「パターンとは何か」を書き下すよりも、「全体的な特徴をとらえる方法」を探る流れが優勢です。
まだまだ飛躍的なブレイクスルーが期待されるこの分野、注目していきましょう!
あわせて読みたい!▼
画像解析をフリーソフトでやってみる!無料の画像解析ツール4選
Workship MAGAZINE
ニューラルネットワークとは? 機械学習との違いを分かりやすく解説している記事がない問題
Workship MAGAZINE