
こんにちは三谷です。
今回は画像認識のディープラーニングで活躍するオープンソースの画像処理ライブラリ、OpenCVについて詳しくまとめてみました。
画像認識のAI(人工知能)を作りたい方は是非活用してください。
OpenCVとは?
OpenCVとは、正式名称を「 Open Source Computer Vision Library(オープン・ソース・コンピュータ・ヴィジョン・ライブラリ)」といい、その名が表すとおり画像処理・画像解析および機械学習等の機能を持つオープンソースのライブラリのことです。
オープンソースですので、基本的に無料で使用することができます。
Pythonを始め、C/C++、Java、MATLAB用として公開されており、もともとはインテルが開発・公開しています。
OpenCVの公式Webサイトはこちらですので、必要に応じてご参照ください。
https://opencv.org
OpenCVのバージョンについてまとめ
現在の最新バージョンは2019年4月に公開されたOpenCV 4.1ですが、OpenCV 3系は約3年半前からマイナーバージョンアップを続けていたため、情報はOpenCV 3のほうが多くなっているかもしれません。
OpenCV 4.0.0からは、QRコードを検出する機能が標準で入ったなど、進化を続けています。
今回の記事では、どちらのバージョンにも対応した内容をお伝えしていきます。
OpenCVでできること一覧
OpenCVには、コンピュータ上で画像処理を行うための幅広い機能が実装されており、以下のリストで表すとおり、できることが非常に多くあります。
- 画像の読み込み・表示
- 画像の作成・保存
- 画像のトリミング・リサイズ・重ね合わせ
- 画像の回転・上下反転・左右反転
- グレースケール変換・色チャンネル分解・減色処理
- モザイク処理・マスク処理・2枚の画像を合成
- 図形の描画・文字の描画
- ノイズ除去・平滑化・ぼかしフィルタ・メディアンフィルタ・ガウシアンフィルタ
- 物体検出
- テンプレートマッチング
ここでは、それぞれの機能別にどのようなことができるのかを確認してみましょう。
OpenCVによる画像の読み込み・表示
みなさんが普段目にしている画像は、コンピューターから見れば数値の羅列です。
画像データに含まれるピクセルごとの色情報はRGBと呼ばれる色情報として、0~255までの数値で表されます。
OpenCVでは画像を入力すると、画像の数値情報を読み込み、プログラム内で使用できるようにリスト化してくれる機能が搭載されています。
OpenCVによる画像の作成・保存
OpenCVでは画像の読み込みだけではなく、画像を作成したり保存したりもできます。
読み込んだ画像に何らかの処理を加えたり、数値情報を元に画像ファイル自体を作成したり保存(上書き保存)したりもできるのです。
画像のトリミング(切り抜き)・リサイズ・重ね合わせ
入力された画像ファイルはリスト形式で読み込まれ、読み込まれた画像に対してトリミングをしたり、画像のリサイズなどをすることができます。
バラバラの大きさの画像データを元に機械学習すると制度に影響があったりしますから、こうした工程を挟むことは重要な画像の前処理となるのです。
画像の回転・上下反転・左右反転
画像を元にディープラーニングをする場合、非常に多くの教師データ(学習データ)が必要となります。
一般的な教師あり学習のクラス分類問題だと1クラスごとに最低でも1,000枚以上の画像データが必要となると言われています。
それほどの大量の画像を用意するのは非常に大変なため、画像をトリミングしたり、回転したり、上限反転したり、左右反転することで、全く異なるピクセル配置のデータとして扱うことができ、データの水増しをすることができるのです。
データの水増しのことをデータオーグメンテーション(Data Augmentation)といいますが、そのような処理にもOpenCVは活用されています。
グレースケール変換・色チャンネル分解・減色処理
OpenCVは、画像データの色情報に対しての処理も行えます。
画像のディープラーニングを行なう際には、非常に多くの計算リソースが必要となることが多々あります。
その際には、場合に応じて3チャンネルあるカラー情報を利用せず、一度グレースケールに変換することで計算量を減らし、演算時間を抑える事もできるようになるのです。
モザイク処理・マスク処理・2枚の画像を合成
機械学習目的では多くは使われませんが、OpenCVはモザイク処理やマスク処理を行なうこともできます。
一部にモザイク処理を行うことで、データの水増しに使われることもあります。
図形の描画・文字の描画
こちらも機械学習ではあまり使用されませんが、OpenCVでは図形や文字を描画することもできます。
ノイズ除去・平滑化・ぼかしフィルタ・メディアンフィルタ・ガウシアンフィルタ
画像データはきれいなものばかりとは限りません。
全体にノイズが乗っているような場合に機械学習の精度に影響することもあります。
その場合には、様々なフィルター処理を通すことでノイズを除去するなどの作業が必要になることもあります。
OpenCVにはあらかじめいくつかのフィルター処理が含まれているため、ノイズ除去の画像前処理を簡単に行えます。
物体検出
物体検出とは、人や車などの物体を囲む四角い領域(バウンディングボックス)の場所を特定することを目標とする処理です。
この物体認識をした領域に対して、ディープラーニングで学習させたクラス分類の学習済みモデルを使用することで、ある画像のどの位置に何があるのかを認識できるようになります。
物体検出の中には、顔検出・アニメ顔検出・人物検出などが含まれます。
テンプレートマッチング
テンプレートマッチングとは、物体の一部が写ったある画像を元に、全体の写った画像の中でどこにその一部分が該当するかを認識する方法です。
部分的な画像をテンプレートとして少しずつずらしていくことで、どこに該当する部分があるのかを認識できます。
OpenCVでできることを動画で確認!
ここまでOpenCVでできることをご紹介しましたが、文章で説明されたのでは、なかなかどう機能するのかイメージができないという方もいるでしょう。
OpenCVの画像処理で、どんなことができるのか視覚的に見たいという方や、まずは入門編として簡単な解説が欲しいという方には、以下の動画をおすすめします。
この動画を見たあとで、ここまでの解説を見返すと、理解も深まるでしょう。
OpenCVを導入するメリットとは
それではOpenCVを導入すると何が良いのかを簡単にご説明していきます。
特にまだOpenCVを導入するのに迷っている…という方はぜひ参考にしてください。
OpenCVは画像の前処理に使える
ノイズのある画像の処理や、データの数を増やすデータオーグメンテーションなどで画像を編集する作業は非常に繁雑です。
この作業を簡単に行えるOpenCVは、画像処理をする上では必須と言えます。
クラス分類のための物体検出に使える
最終的には畳込みニューラルネットワークなどを利用したクラス分類をする際にも、画像のどこに何が存在しているのか、という物体検出でOpenCVは効果を発揮します。
OpenCVを無料でインストールする方法
OpenCVをインストールする手順は、こちらの記事にまとめてあります。
OpenCVの使い方
OpenCVの使い方については、こちらの記事にまとめてあります。
OpenCVをより詳しく学ぶ方法
OpenCVは、導入して独学で触りながら確かめて行くのはかなり難しいでしょう。そこでここからは、OpenCVの操作や関数の使い方、詳しい活用方法、コツなどを学ぶのにおすすめの方法をご紹介します。
こちらでご紹介するOpenCVを学ぶ方法で、入門レベルから効率よく学べば、OpenCVを使いこなすことができるようになるでしょう。
OpenCVの学び方①セミナーで学ぶ
OpenCVやAIのプログラミングについてもっと学びたい方は「AIエンジニアになるための3日間集中セミナー」を受講することをおすすめします。
このセミナーでは、AIエンジニアに必要なAIのプログラミングスキルや、 OpenCVとAIを使った画像認識、AIの仕組みを理解したデータの処理方法を学ぶことができるため、これからAIのエンジニアを目指している方や、ビジネスでAIを活用したい方におすすめのセミナーです。
受講形態 | 会場受講 / ライブウェビナー / Eラーニング |
---|---|
定員 | 6〜8名 |
必要な前提スキル | 前提スキルは必要ありません。どなたでも学べるわかりやすいエンジニアセミナーです。 AIエンジニアに少しでも興味があればOK! |
セミナーページ | https://ai-kenkyujo.com/ai-technical/ |
席数に限りがございますのでお早めにお申し込みください!
OpenCVの学び方②書籍で学ぶ
セミナーを受講するほかに、書籍などの本から学ぶのもおすすめです。
自分のペースでゆっくり学びたい人はこちらをおすすめします。
OpenCVおすすめ本:詳解 OpenCV 3
OpenCVの開発者によって書かれた本です。
インターフェースはC++を元に書かれていますが、OpenCVについて最も詳しく書かれた本と言っていいでしょう。
OpenCVおすすめ本:OpenCVとPythonによる機械学習プログラミング
Pythonを使ったOpenCVの使用方法だけではなく、サポートベクターマシンやクラスタリングを使用した機械学習アルゴリズムの実装までできる書籍です。
OpenCVとは?まとめ
いかがだったでしょうか?OpenCVは画像に特化して様々な処理ができることがご理解いただけたのではないでしょうか。
画像認識というと難しい印象がありますが、OpenCVを使えば意外と簡単にディープラーニングさせることができます。
是非PythonとOpenCVをインストールして画像処理の世界に飛び込んでみてください!