みなさんこんにちわ、こんばんわ
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も使えるようになりました。
今日はここまで。
次はディープラーニングですね。