詰まらぬ知恵の忘備録

メモ代わりです。

【Open CVを学ぶ】1.概要

この記事は、自分が研究するためのツールとして学んだOpen CVの忘備録です。

なんでもそうですが、やはりアウトプットというのは、如何なる場合においても大切なものだと感じます。

アウトプットしないと忘れてしまいますし、何よりアウトプットは思考の整理につながる感じがあるんですよね。

 

自分の忘備録なので、見づらい部分もあるかと思いますがそこはご容赦くだされ。

 

ではでは…

 

 

 

1.Open CV の概要(歴史的背景)

元々は、1999年にIntel社のGray Bradski がOppen CVを立ち上げました。

Open CV は、人工知能分野、コンピュータービジョンで働く人たちの、明確な基盤を提供することが目的だったそうです。

多少なりともプログラムをかじった人ならわかりますが、開発環境が沢山あると、逆にそれは問題なわけで。

ともすれば、最強のプラットフォームが用意されれば、世界の多くがそれを使ってくれたら、、、 なんて願いから作られたそう。

 

素敵。

 

Open CV自体はCとC++で書かれていて、Linux, Windows, Mac 上で動きます。

(この3つで動けばもう問題ないでしょう。Chrome Book とかあるけど、全然広まってないし。)

 

ただし、後々にPython, Java, MATLAB と、多言語展開がなされていて、更にはAndroid, iPhoneにも展開されてます。

 

1999年、Intel社 Gray Bradski がOpen CVを立ち上げてから

Intel, Google, Itseez(Intelに買収されたけど)が何度も改良をして、

最後にArraiyが改良に加わり、Free(無料)を死守し続けている、というなんとも素晴らしいもの。

 

 

特徴としては

・計算効率が優先されている

・リアルタイムアプリケーションに重点が置かれてる

C++で書かれてて、マルチコアプロセッサの活用が可能

Intelアーキテクチャ上での自動最適化を行いたいのなら、IPPライブラリを使うのも手。但し有料。

・様々な分野のアルゴリズムや関数がある(その数なんと2500以上)

 

機械学習には適してる」というのは私の周りでもよく聞きます。

 

 

2.コンピュータービジョンについて

 

コンピュータービジョン(Computer Vision)とは、カメラの映像データなどを変換して、何か判断したり、別表現をしたりすることを言います。

関数に似ていますね。誰しもが\displaystyle \ y=f(x)  という表現を見たことがあるでしょう。

入力が\displaystyle \ x:写真や映像データ

変換が\displaystyle \ f:変換器

出力が\displaystyle \ y:変換結果

 

みたいなイメージですね。

 

現在の私の研究は、画像認識分野です。この分野に初めて足を踏み入れた時、人間の直感と論理の往復がここまで難しいものか、とある種の感嘆を覚えた記憶があります。

 

 

次の写真は何を持っている女性でしょうか?

 

カメラ女子 美女 彼女 canon

Canon 7D Mark2 を手に取るカメラ女子|無料の写真素材はフリー素材のぱくたそ 

 

 

CanonEOS 7D MARKⅡを持っている、かわいい女性です。

 

ですが、これをコンピューターに自動認識させようとするとどうなるか?

 

残念ながら、コンピューターからするとこの写真は単にグリット(格子)上に並んだ数値列としか見ることができません。

(コンピューターの世界は2進法ですから、どんな情報も0と1の羅列になります)

 

人間の脳は知覚信号を、様々な情報に分割し、脳に送ります。

その後、私たちの脳にある注意システムによって、目的に即した大切な部分だけ

すなわち、処理するべき重要な部分を特定し、その他の領域については処理を省きます。

 

どういうことかというと、上の画像を見た時に、パッと目に入った情報は「女性」というだけでズボン(スカート)が黒色の可能性、という情報が入った人は多分いないでしょう。

 

 

つまり、人間は無意識のうちに必要な情報、不要な情報というのを、長年の自身の生活経験から判断し、画像処理をして、なんらかの情報を取り出します。

これは、実は最新の脳科学(認識処理とかっていう分野らしい)でもブラックボックスとなっていることが多く、解明にはまだまだ時間がかかるらしです。

 

 

これらの解決策の一種として、最近はDeep Learning(深層学習)というのがあります。

例えば、車ならば、膨大な数の車の画像を読み込ませまて、何らかの特徴を把握します。

そして、それらの膨大な蓄積情報を「ある種の基準」として活用することで、より正確な、高い精度で写真を認識しようとする試みです。

 

 

 

で、このような高速で大量な演算を行う場合には、前述したOpen CV との相性が良いということです。

 

 

3.実際に使うには

Open CV は、とにかく無料で使えます。インストール方法ですが、次の記事が個人的にはとてもよかったです。

 

https://www.nikkeibp.co.jp/seminar/atcl/vs/BDT_20180529/Mac.pdf#search='画像処理+python+環境構築+mac'

 

他にも、インストール方法はググれば山ほど出てくるので調べてみるのも良いでしょう。

 

現在、Windowsしか持っていない人は、もちろんWIndwosにインストールすることもできますが、Macの購入を検討しても良いと思います。

Macは想像以上に使いやすいです。(Windows から乗り換えた私の体験談) 

 

価格は決して安くはありませんが、作業効率が爆速になることを考えれば

元は十分に取れると思います。また、Apple製品は、各デバイス間の連携がとてもスムーズなのも特徴です。

 

 

4.終わりに

プログラム言語はある種、スポーツと似ているところもあるでしょう。

開発環境の構築が完了したら、後はとにかく書く!

これだけです。

サンプルコードでも何でも良いので、とにかく一度書いて動かす。

 

プログラムの勉強でやってはいけないことは、理論書を読みまくるだけで、書かないことです。

絶対に、演習を入れてください。

 

 

私も、色々なコードを、このブログに載せていきたいとも思います。