みなさんこんにちわ、こんばんわ

SAIです。

 

画像認識をするために重要なソフト

OpenCVをインストールします。

 

このOpenCVですが、

何度か再インストールする羽目になりました。

 

なんというか・・・・

わかりにくい!

 

 

というわけで、

インストールはコマンドライン一発なのですが、

今回はSAIの引っ掛かったエラー対策を羅列することにしました。

 

 

まず、

OpenCVをPythonのコマンドからインストールして、

コマンド実行時に必要となるDLLが足りないといわれるたびに

PythonからDLLをpipする(ダウンロード&インストール?)するのですが、

 

途中で認識用に”Anaconda”というのが必要になりました。

 

Anacondaは、を使うことになったのですが、

そのサイトに書いている通り、DLLをconda でダウンロードしたら、にっちもさっちも。。。

 

 

色々調べてみると、

どうやらpipとcondaは同時に使うと環境がぶっこわれるらしい。。

 

condaとpip:混ぜるな危険 - onoz000’s blog (hatenablog.com)

 

 

SAIは、pipのみを使うことにしました。

 

ということを踏まえて、

以下の順でいいのかなと思います。

 

①OpenCVをインストールする。

 pip install opencv-python
 pip install opencv-contrib-python

②TensorFlowのインストール

 pip install tensorflow-gpu

 

 

基本的にはこれで動きそうな感じです。

 

③不足モジュールの追加インストール

参考にしたサイトのコードをまねて実行してみたところ、

OpenCVのコマンドによっては、実行するタイミングで

◆① AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects'
とか

◆② ModuleNotFoundError: No module named 'sklearn'
とか

◆③ ModuleNotFoundError: No module named 'matplotlib'
 

こんなエラーが出てきました。

 

これらのエラー、

どうやらモジュールが環境内に足りないことによるもののようです。

 

これの対策ですが、

◆①はcondaとpipを混在したときに出てしまうやつです。

なので、アンインストール後にpipでインストールすれば解決できました。

 conda uninstall tensorflow -y

 pip install tensorflow --upgrade --force-reinstall
 

◆②や③は、LIBが足りないといわれてるだけのようです。

 どうも、Pythonのコマンドから該当モジュールをインストールすれば解決するようです。

 ↓こんな感じで、エラーになったモジュールをインストールすれば、解決しました。

 pip3 install sklearn

 pip3 install matplotlib

 

④不測のDLLがないといわれる

 モジュールを追加して進めていくと、

 また意味不明のエラーがまた出ました。

 cudart64_110.dll not found とか、

 cudnn64_8.dll not found とか、 似たようなエラーです。

 

 色々調べたのですが、どうもnVidiaの提供する"cudnn"のライブラリがないというもののようです。

 

 画像認識の重要なところは、やはりnVidiaのライブラリを使っているのですね。

 

 結局のところ、nVidiaのサイトに行ってユーザ登録して、

 cudnnをインストールする以外解決方法はなさそうでした。

 

 ユーザ登録自体は無料なので、個人として登録してダウンロードしてみましたよ。

 

 

 

確か、SAIが引っ掛かったエラーはこんなもんだったと思います。

 

あともう一つ。

 

OpenCVで画像を取得する際、

以下のようにデバイスNoを入力することになるのですが、

cv2.VideoCapture(0)

           ↑

外部カメラを繋いで認識を実行させようとしたのですが、

どんなに頑張っても、IDを変えてもPCのインカメラが認識されてしまう。

IDをforでぐるぐる回してみたりしたのですが、どうしてもインカムなんですよね。

 

むかついたので、デバイスを無効にして強引に外部カメラを認識させました。

何気に1時間くらい悩んだんですよね。

 

 

同じ症状になったらお試しください。

 

 

とりあえず、こんな感じでOpenCVも使えるようになりました。

 

 

 

今日はここまで。

 

次はディープラーニングですね。