画像認識の入門編知識を解説!概要や仕組み、事例について

たくさんの手書き資料や映像の解析を、人の手と努力で解決していませんか。
「手書きアンケートの集計のためだけに人手を雇っている」
「通勤経路はわかっているが、書類を目視で一応確認しないといけない」

この記事では、人手に頼らずプログラミングで工数を削減できる技術「画像認識」について、事例を挙げながらご紹介します。

画像認識とは

画像認識とは、コンピュータや機械が画像に何が写っているかを認識・分類できる技術です。また、機械学習では、たくさんのパターンを試して、見分けるルールを自動的に探してくれます。

「画像認識」「機械学習」と聞くと、膨大なデータと高性能なサーバーが必要なイメージがありますが、個人のパソコンでも手軽に学び、実践できる技術です。

例えば、大量の写真を、コンピュータが自動的に「食べ物の写真」「海での思い出」など分類してアルバムを作ってくれる機能や、カメラに映っているお留守番中のペットがごはんを食べたことを教えてくれるサービスなども画像認識の例です。

さらに、文字認識も可能です。Tesseract OCR(テッセラクト オーシーアール)という光学文字認識エンジンが、Pythonで文字認識を実現するのによく使われます。これは個人でも無料で利用できます。

パターン認識とは

パターン認識とは、コンピュータや機械が、対象物の特徴について一定の規則をもとにデータを選別する技術です。「情報の選別のために文字の特徴をコンピュータに学習させる」ことから、機械学習の技術でもあります。

入力されたパターン(画像や文字列など)が、用意したパターン(リンゴの輪郭、「あ」の形)とどれだけマッチングしているかを調べることによってパターンを認識します。

たとえば入力パターン「0123-456-789」の中に、用意したパターン「0から9の数字」と「記号(-, ハイフン)」が、それぞれ数字10個、記号が2個あるのだとすぐにわかる・分類できるのがパターン認識です。また、これがおそらく電話番号であることもわかります。すなわち、未知の情報の集合体から、与えられた規則の情報を分類することができます。

この技術を活用した製品は世の中に多くあります。スマートデバイスに「今日の天気は?」と聞くと「今日の新宿区は晴れで、最高気温は18度です。」と答えるのは、「天気は」という音声のパターンを認識しているからです。また、マークシート形式のテストの結果の読み取りでは、丸と線のパターンを認識しています。思っているよりも、幼いころから馴染みのある技術かもしれません。

画像認識の仕組み

コンピュータに探したい物体の特徴を学習させたうえで別の画像を見せる(入力する)ことで、その物体が画像に入っているかどうかを判断します。そのためには、画像からノイズを除去したり色を整えたり、前処理をした上で、ピクセル単位で画像の情報を抽出する必要があります。

同じ内容でも人によって筆跡が違う書類をひとつずつ確認したり、たくさんの色違いのグッズが写っている写真から不良品を見つけたりすることは、とても大変ですよね。しかし、この画像認識という技術を使えば、コンピュータに1枚1枚の画像を自動的にチェックさせられます。

また、コンピュータに与えた特徴に合致するかを繰り返し判断・分類を繰り返すことで判断の精度を上げる技術でいま盛んなのが、CNN(Convolutional neural network 畳み込みニューラルネットワーク)というモデルです。ConvNetと略されることもあります。

Pythonを使った画像認識

Pythonで画像認識を実現するには、画像処理ライブラリOpenCVを使って認識対象の画像の下準備をしたり、認識の精度を上げるために深層学習ライブラリKerasを活用したりするのがよいでしょう。プログラムの実行にはJupyter Notebookがおすすめです。

Jupyter Notebookによる画像認識

Jupyter Notebook(ジュピター ノートブック)とは、ブラウザ上で動作するデータ分析用のツールです。ノートブックという単位のファイルにプログラムを書き、ブラウザ上でその結果をすぐに得られる仕組みから、対話型実行環境ともよばれます。

そのため、プログラムのファイルをいくつも作らずとも、画像認識を実現するのに必要な以下の3つのステップを、ひとつのノートブックで完結することがJupyter Notebookなら可能です。

  1. 画像前処理(輪郭の抽出、ノイズの除去)
  2. 特徴の抽出(丸い、赤い)
  3. 画像識別、判断、分類

また、このツールは無料で利用できる上に、ブラウザ上で動作することから、実行環境のOS(Windows, MacOSなど)を問いません。そのため、チームメンバーへの分析手段と結果の共有が容易です。

Pythonによる画像認識に必要なライブラリ

Pythonによる画像認識では、前準備としての画像処理には画像処理ライブラリOpenCVを、特徴の抽出をする計算には学術計算ライブラリNumPyを使うとよいでしょう。

最後に、画像の判別・分類を繰り返し行うことで精度を上げていく手段として、深層学習ライブラリKerasなども利用できます。

画像処理ライブラリ OpenCV(オープンシーヴィ)とは

OpenCV(Open Source Computer Vision Library)とは、オープンソースのコンピュータビジョンのライブラリです。コンピュータビジョンとは、コンピュータを用いた視覚(Vision)を実現する研究分野のこと。見る、特定する、理解するなど人が自然に行っていることを、コンピュータでも自動でできるようにする技術です。

OpenCVには、たとえば以下の関数が実装されています。

  • 画像の読み込み・表示などのインタフェース用の関数
  • 物体を追跡する関数
  • パターン認識関数

補足として、オープンソース(Open Source)とは、ソースコードが公開されており無料で利用できるものです。そしてOpenCVの場合はBSDライセンスと呼ばれる同意事項があり、もしアレンジしたOpenCVのライブラリを社外に公開する場合には、著作権表示と免責事項の表示が必要になります。

ただ、自社用に改良したソースコードを社外に公開する場合に限り注意が必要なことですので、普段社内で利用する分には気にする必要はありません。

深層学習ライブラリ Keras(ケラス)とは

Kerasとは、Pythonで実装されている深層学習のライブラリです。

ディープラーニングを活用するのに必要な数学的知識を意識せずとも、簡潔でわかりやすいコードでニューラルネットワークをコンピュータに実装できます。これは、ユーザのひらめきを形にするのにかかる時間を、最大限短くすることに重点を置いてライブラリが開発されているためです。

また、2018年中旬時点で、数あるディープラーニングのフレームワークのうちKerasは2番目に広く利用されました。Netflix、UberなどのサービスでKerasは活用されており、今となっては非常に身近な技術です。

さらに、Kerasは多くのプラットフォームで利用できます。iOS, Android, 各種ブラウザ, ラズベリーパイなど。ラズベリーパイとは、個人でIoT開発をするのに最適な小型のコンピュータで、最小限のスペックのモデルならば数千円で手に入ります。

AIが利用された画像認識の事例

AI(人工知能)は、人が見るよりも確かな答えを導き出せたり、早く反応できたりすることさえあります。

機械学習の技術で多くのことを機械が学び、ディープラーニング(深層学習)の技術でそのデータの傾向を機械自らが把握したり、解析を重ねて精度を高めたりできるようになったためです。

これらによって、研修でひとつの図について声を枯らして繰り返し説明したり、書類の内容の確認をするためだけに長時間勤務をしたりする時代は、終わりを告げようとしています。

「画像認識の方法はわかったが、仕事でどう活用できるのか?」
「AIに画像認識をさせることで、業務がどう改善されるのか?」

業種によって、課題や働く人たちの悩みはさまざまです。活用の仕方や、費用対効果なども気になるところです。
以下の事例でみていきましょう。

製造業

画像認識の技術は製造業の現場で活用されることが多いです。
例えば、工場で複数の部品を組み合わせて一つの製品を作り上げるライン作業がある場合に、画像認識は役立ちます。

手順ごとの人の体の動きをコンピュータに覚えさせることで、監視カメラの映像から、ライン作業の担当者が手順を間違えたり、部品を多く取ったりしたとわかると、作業者の近くのパトランプが光る、といった仕組みです。

これにより、不良品を製造段階で検知でき、ひいては教育担当者の負担も減りました。

金融業

指紋認証や顔認証など、画像認証を応用した技術は金融業では本人確認作業において強みを発揮します。
株式会社セブン銀行では、次世代ATMにて顔認証による口座開設を可能にしました。

従来、口座を開設するには本人確認書類(顔写真つき証明書、運転免許証、パスポートなど)の提出が必要でした。そして、それを確認する担当者のチェック業務がありました。しかし、画像認識の技術が向上したことにより、その場でATMが顔認証をして、口座を開設できる時代がやってきたのです。

さらに三菱東京UFJ銀行では、これまで担当者が目視で行っていた書類確認作業と、その書類と住宅ローンの詳細の突合せまでを、AIが担当することで自動化に成功しました。

これは、申込書をスキャンして画像にし、画像を文字認識技術(OCR)でデータ化して、機械が内容を確認するというもの。そして、機械が出力したチェック結果の中から、不備があるものだけを人間がチェックするという仕組みです。

これにより、2015年からの本格稼働から2017年までに、既に約20業務累計2万時間の作業削減を達成しています。

飲食・小売業

画像認識の精度の向上により活用事例が増え、中には人件費を抑えながら売上が8%ほどアップしたという事例もあります。タグやシールなどを直接つけられない小さな製品、生ものを扱う業界で、目立った成果が出たのはベーカリー・洋菓子店です。

例えばベーカリーなら、事前にスタッフがパンの形を機械に学習させておけば、顧客がレジカウンターにトレーをセットするだけで自動で商品を判別・清算できます。これにより、特に「商品の種類を覚える新人教育」の手間が削減されたことから、人件費とスタッフ自身の負担が削減できました。

トレーに載っているパンが一瞬でわかるため、精算にかかる時間が短縮されてレジの回転率が上がりました。人件費を削減しながら売上がアップした事例です。

その他の産業

画像認識の技術は車にも応用されています。例えば、居眠り運転の防止や、わき見運転の防止など。車内に設置したドライブレコーダーが運転手の頭や目の動きを監視することで、運転手が目をつぶったり、手元のスマートフォンを見ながら発進をしたりしたときに、事故防止機能が働きます。

また、医療分野では、「医用画像診断」においてAIの画像認識が役立っています。レントゲンやCT検査の結果をAIに見せることで、血管の瘤や詰まりの位置、骨折の状態などをすばやく診断できます。

さらに、この医用画像診断の結果をデータベースに蓄積していくことで、AIの診断技術が向上していき、やがてはそのAIがスマートフォンと連携して、自宅にいながら詳細な検査を受けることも可能になるといわれています。

Pythonの画像処理が学べる入門書3選

多くある書籍の中でも、おすすめの本を目的別に3冊集めました。言語の中でも特にPythonが、機械学習やディープラーニングの分野の中では画像認識が、とても盛んな話題です。そのため世の中に入門から応用まで情報量がとても多いので、ぜひこの中から選んでみてください。

画像認識をPythonによるプログラミングで実現するには、Pythonで書かれたニューラルネットワークのライブラリであるKeras(ケラス)や、基本的に無料で使える多言語対応のライブラリOpenCV(オープンシーヴィ)を使ったやり方を知ることが近道です。

今すぐ試したい! 機械学習・深層学習(ディープラーニング) 画像認識プログラミングレシピ

すぐ使える画像認識プログラムを見たい!使いたい!という方におすすめです。

レシピという名の通り、事例とサンプルコードが豊富。画像認識に使われる一般的な技術(TensorFlow、Chainer、PyTorch、Keras、scikit‐learn)の基本的な方法を、図や写真を多く使って説明した、Pythonと機械学習の入門書です。

また、画像認識のレシピを扱う章ではGoogle Colaboratoryを使います。自分のパソコンへの環境構築が不要。すぐ始めて、すぐ効果を実感したい方にはおすすめの一冊です。

本書をおすすめする人

①環境構築に苦手意識がある、あるいは指定ソフトウェア以外インストールできない環境である
②すぐ使えるコードが載っている本がいい
③Pythonの基礎から機械学習、画像認識まで一冊で学びたい

目次と説明

「第1章 人工知能・機械学習・深層学習の基本」では、人工知能の歴史にはじまり、基本事項として機械学習のタイプ(教師あり学習・教師なし学習)や、深層学習についてまで学べます。この章を読むことにより、機械学習の活用の仕方、そしてその精度を上げる深層学習についても学べるでしょう。

第1章で基本を学んだところで、実践に入ります。「第2章 Pythonと重要なツール・ライブラリ」では、Pythonの開発環境を用意して、Pythonの基本的なコードを書いていきます。

そして「第3章 NumPyとMatplotlibの使い方」では、Pythonで画像処理を行うのに欠かせない二大ライブラリ「NumPy」と「Matplotlib」について学びます。NumPyとは数値計算ライブラリで、難しい計算式でもNumPyの関数を使うことでコードが簡潔になり、そして計算速度も速くなります。Matplotlibとはグラフ描画に用いるライブラリで、計算結果を関数のグラフにしたり、ヒストグラムにしたりできます。

さらに、画像処理ライブラリOpenCVや、ニューラルネットワークライブラリKerasをつかって実際に画像処理・画像認識を「第4章 機械学習・深層学習のレシピ(初級・中級)」、「第5章 機械学習・深層学習のレシピ(中級・上級)」で体験します。

Pythonで始めるOpenCV 4プログラミング

OpenCVを用いた画像を作成する基礎的な使い方から、ディープラーニング(Deep Learning)を利用した手書き文字の認識まで幅広く学びましょう。OpenCV入門者に特におすすめです。

OpenCV(オープンシーヴィ)とは、無料で公開されている画像処理用のライブラリのことです。本書では、画像認識に重要な下準備である、コンピュータが対象物を特定・分類しやすいように画像を修正する方法について詳しく説明しています。

また、本書は「技術の魅力を実感できること」に重きを置いているため、画像処理の初学者でも楽しめるようにサンプルコードと実行例が充実しており、達成感と技術のすごさを手軽に実感できます。

本書をおすすめする人

①Pythonはある程度学習が済んでいる
②環境の導入について分かりやすい説明が欲しい
③画像処理の魅力を存分に知りたい!

目次と説明

「第1章 開発環境の準備」では、Anaconda(Pythonのディストリビューション)を用いて、PythonとOpenCVの実行環境を構築します。Anacondaをインストールすることで、ソースコードを書くのに有用なエディターも同時にインストールされるため、すぐに開発に取り掛かれます。また、環境構築で陥りがちな設定ミスやバージョン違いなども防げますから、チームメンバー数人で同じ環境を作りたい場合にも、Anacondaを利用するのは効率的で確実な方法です。

そして、「第2章 はじめてのOpenCVプログラム」では、OpenCVのバージョン3と4の違いに触れながら、学術計算ライブラリNumPyを使って画像を生成してOpenCVでそれを読み込み・書き込む方法を実践します。

さらに、「第3章 グラフィックス」から「第8章 動画処理」までで画像認識の下準備に必要な画像処理の技術について学んだら、「第9章 オブジェクト検出」で実際に画像からオブジェクト(物体)を検出します。最後に、その精度をさらに向上させるための技術ディープラーニング(深層学習)について、「第10章 Deep Learning」で学びます。

Pythonで学ぶ実践画像・音声処理入門

「問題と解答で理解度を確認しながら学びたい」「教科書のような本が欲しい」という人におすすめです。

本書では章末問題が用意されているので、各章の理解度を測れます。繰り返し解くことで、理論だけでなく実践方法も会得しましょう。

また、画像・音声処理の方法を学びながら、Pythonの数値計算ライブラリ「NumPy」やグラフ描画ライブラリ「Matplotlib」の使い方についても深く知れます。

本書をおすすめする人

①大学で教科書として使われるような書籍を探している
②問題と解答で理解度を測りたい
③画像処理に必要な知識NumPy, Matplotlibについても知りたい

目次と説明

音声処理と、画像処理について基本から学べます。章の中で利用するパッケージの説明が冒頭にあるため、ドキュメントを手元に置いて説明を見ながら学ぶのも一つの方法です。

「2. 簡単な画像処理」では、画像は色のついた点(画素)の集まりのため、0~255の整数値で色(RGB)を示し、その画素の座標を示すことで画像を作り出す工程を実践します。さらに、OpenCVで画像を読み込み・領域を抽出するところまでを行います。

そして「11. 分類」では、ある特徴を持った物体を画像から検知する方法を学びます。

プログラミング未経験からでもAIスキルが身につくAidemy Premium Plan

PythonやAIプログラミングを学ぶなら、オンライン制スクールのAidemy Premium Planがおすすめです。
「機械学習・ディープラーニングに興味がある」
「AIをどのように活用するのだろう?」
「文系の私でもプログラミング学習を続けられるだろうか?」
少しでも気になることがございましたら、ぜひお気軽にAidemy Premium Planの【オンライン無料相談会】にご参加いただき、お悩みをお聞かせください!