TECH MEDIA

テックメディア


人工知能
ブログ

人工知能による画像認識で業務効率化にトライ(後編)

その他技術
目次
  1. 01|はじめに
  2. 02|画像処理について
  3. 03|OpenCVとは
  4. 04|前提条件
  5. 05|画像照合のイメージ
  6. 06|アルゴリズム
  7. 07|開発環境構築
  8. 08|DEMO説明

1. はじめに

人工知能による画像認識を学んでいるメンバーとして、w2のプロジェクトリーダーのタンさんを以前紹介させていただきました。

前回の記事はコチラ!
それでは記事後編です!(代筆永留でお送りします!)

2. 画像処理について

画像処理とは

画像処理とは、特定の効果をもたらすために画像を加工したり、操作したりすることです。また、コンピュータを使って画像から情報を取り出したりすること(OCR、画面照合など)も画像処理です。 この記事は画面処理の一部、画像照合関連技術について、紹介します!

3. OpenCVとは

OpenCV(正式名称: Open Source Computer Vision Library)は、オープンソースのコンピューター・ビジョン・ライブラリです。コンピューターで画像や動画を処理するのに必要な、さまざま機能が実装されており、BSDライセンスで配布されていることから学術用途だけでなく商用目的でも利用できます。加えて、マルチプラットフォーム対応されているため、幅広い場面で利用されていることが特徴です。

OpenCVを使うと、主に以下のような機能を利用できます。

フィルター処理

行列演算

オブジェクト追跡(Object Tracking)

領域分割(Segmentation)

カメラキャリブレーション(Calibration)

特徴点抽出

物体認識(Object recognition)

機械学習(Machine learning)

パノラマ合成(Stitching)

コンピュテーショナルフォトグラフィ(Computational Photography)

GUI(ウィンドウ表示、画像ファイル、動画ファイルの入出力、カメラキャプチャ)

4. 前提条件

この記事は、Pythonの基本知識があることを前提に書いています。その他の事前知識はさほど必要ありません。

5. 画像照合のイメージ

例えば、下記のような二つの請求書があります。

画像照合の結果は下記の通りです。

上記二つの画像の中にある特徴点の特徴量記述子を計算し、二枚目の画像の中の全特徴点の特徴量と何かしらの距離計算に基づいてマッチングをします。最も距離が小さい特徴点が対応する特徴点をマッチング結果として返します。

画像の拡大縮小・回転・照明変化があっても、マッチング手法を工夫すれば、対応可能です。(下記の図をご参考ください。)

6. アルゴリズム

次に画面照合のアルゴリズムについて説明します。
よく使うアルゴリズムはORBとAKAZEです。

ORBとは

ORBとはOriented FAST and Rotated BRIEF, 方向付きFASTと回転BRIEFです。 ちょっと複雑な名前ですが、概念を理解していなくても普通の運用に影響はありません。

AKAZEとは

AKAZEのもととなっているKAZEのアイデアは、SIFTやSURFで使われているGaussian filterによるスケールスペースなので、Gaussian filterが等方的であるため、オブジェクトのエッジもぼやかしてしまい、局所的な特徴をうまくとれないことがあります。

OPENソースなので、興味がある方、すごく難しいですが下記の内容をご参考ください。私も半年前読みましたが、知識が足りず理解できませんでした、、、。

https://github.com/pablofdezalc/akaze

ORBとAKAZEのイメージとして下記の動画をご覧ください

簡単に言えば、業務内容とパラメータのチューニング次第で結果が変化するというものです。

↓下記はネットから抜粋

7. 開発環境構築

開発言語:Python 3.7
IDE:Pycharm
①画像照合開発用IDEをダウンロードします。
下記のURLから無料ダウンロード可能です。(下記図のコミュニティ版)
https://www.jetbrains.com/ja-jp/pycharm/download/#section=windows

具体的なインストール手順について、下記の文章をご覧ください。

https://gammasoft.jp/python/pycharm-install-on-windows/

②ダウンロード完了した後、PyCharmを起動します
正常に起動する場合、下記の図のような開発用画面がでます。

③開発関連のライブラリダウンロード
本番の開発前、まずOpenCVライブラリのダウンロードが必要です。PyCharmを使う場合、簡単にダウンロードとインストールが可能です。メニューのFile→Settingsを選択すると、下記の画面が表示されます。
画面の「+」(赤い枠)をクリックしてください 。

検索欄で「OpenCV」を入力して検索します。
結果一覧から「OpenCV-pythone」を選択して、「Install Package」を押してください。

正常にインストールできた場合は、「Project Interpreter」画面で確認ができます。

※補足説明

今回DEMOで使う関連ライブラリは、下記の通りです。
上記の画面経由で一つずつインストールしても問題ありませんが、ちょっと時間がかかるかもしれません。

内容をメモにコピーして、pip install を利用して一括インストールできます。

$ pip install –r ファイル名
certifi==2019.11.28
chardet==3.0.4
Click==7.0
cycler==0.10.0
docker==4.2.0
freetype-py==2.1.0.post1
gif2numpy==1.3
gitdb2==2.0.6
GitPython==3.0.7
idna==2.8
kaitaistruct==0.8
kiwisolver==1.1.0
matplotlib==3.1.3
mss==5.0.0
numpy==1.16.3
numpy2gif==1.0
opencv-python==4.1.0.25
pandas==1.0.1
pdf2image==1.12.0
Pillow==7.0.0
popper==2.4.2
py4j==0.10.7
pyhcl==0.4.0
pyparsing==2.4.6
pypiwin32==223
pyspark==2.4.5
python-dateutil==2.8.1
pytz==2019.3
pywin32==227
PyYAML==5.3
requests==2.22.0
semver==2.9.0
six==1.14.0
smmap2==2.0.5
spython==0.0.76
urllib3==1.25.8
websocket-client==0.57.0

環境構築は以上です!

8. DEMO説明

ここから、DEMOの使い方について説明させて頂きます。
1)設定ファイル
ymlファイルとして管理しています。
※最初はJSONを使っていますが、コメントが書けないとか、ネストが深くなると可読性が悪くなるなど色々問題があるので、設定ファイルを作成する場合、YAMLをおすすめします。

2)DEMOの各処理説明 
⇒convPDF.py
請求書は一般的な保存拡張子はPDFだと思います。
OpenCVを利用するため、画像に変換しないといけないので、これはPDFファイルを画像に一括変換処理するためのバッチです。

⇒execCalc.py

画像処理メインバッチ、すべての比較元と比較先をマッチングして処理結果(抽出した特徴点、比較結果)をファイルに保存します。
※マッチングする場合、使うアルゴリズム設定をファイルに設定可能です。現在は簡単なDEMOですので、一旦処理結果をファイルに保存します。大量のデータを処理する場合、DBに保存するのがおすすめです。

⇒execComp.py
execCalc.pyで処理済み結果を集計して、結果ファイルを作成します 。

DEMOに関しては以上です!

今回は画面処理の一部、画像照合関連技術について紹介しました。
これからも人工知能による画像認識の知識を深めていきたいと思っているので、またこちらで紹介をしたいと思います。

ありがとうございました!

RECRUIT 採用情報

「eビジネスに関わる全ての人を幸せにする」
私達とともに新たな時代をつくりませんか?