どのようコンフィグレーションなのか下記コマンドで表示させてみた。
結果は、長いので一部省略
当然のことながらcudaは未対応
>>> import cv2
>>> print(cv2.getBuildInformation())
General configuration for OpenCV 3.4.3 =====================================
Version control: 3.4.3
CPU/HW features:
Baseline: SSE SSE2 SSE3
requested: SSE3
Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2
requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
SSE4_1 (3 files): + SSSE3 SSE4_1
SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
AVX2 (9 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
Extra dependencies: /opt/Qt4.8.7/lib/libQtGui.so /opt/Qt4.8.7/lib/libQtTest.so /opt/Qt4.8.7/lib/libQtCore.so /lib64/libz.so /opt/libjpeg-turbo/lib64/libjpeg.a avcodec avformat avutil swscale dl m pthread rt
3rdparty dependencies: ittnotify libprotobuf libwebp libpng libtiff libjasper IlmImf
OpenCV modules:
To be built: calib3d core dnn features2d flann highgui imgcodecs imgproc java_bindings_generator ml objdetect photo python3 python_bindings_generator shape stitching superres video videoio videostab
Disabled: js world
Disabled by dependency: -
Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 ts viz
Applications: -
Documentation: NO
Non-free algorithms: NO
GUI:
QT: YES (ver 4.8.7 EDITION = OpenSource)
QT OpenGL support: NO
GTK+: NO
VTK support: NO
Media I/O:
ZLib: /lib64/libz.so (ver 1.2.3)
JPEG: /opt/libjpeg-turbo/lib64/libjpeg.a (ver 62)
WEBP: build (ver encoder: 0x020e)
PNG: build (ver 1.6.34)
TIFF: build (ver 42 - 4.0.9)
JPEG 2000: build (ver 1.900.1)
OpenEXR: build (ver 1.7.1)
HDR: YES
SUNRASTER: YES
PXM: YES
Video I/O:
DC1394: NO
FFMPEG: YES
avcodec: YES (ver 58.21.104)
avformat: YES (ver 58.17.101)
avutil: YES (ver 56.18.102)
swscale: YES (ver 5.2.100)
avresample: NO
GStreamer: NO
libv4l/libv4l2: NO
v4l/v4l2: linux/videodev.h linux/videodev2.h
Parallel framework: pthreads
Trace: YES (with Intel ITT)
Other third-party libraries:
Lapack: NO
Eigen: NO
Custom HAL: NO
Protobuf: build (3.5.1)
OpenCL: YES (no extra features)
Include path: /io/opencv/3rdparty/include/opencl/1.2
Link libraries: Dynamic load
Python 3:
Interpreter: /opt/python/cp35-cp35m/bin/python (ver 3.5.5)
Libraries: libpython3.5m.a (ver 3.5.5)
numpy: /opt/python/cp35-cp35m/lib/python3.5/site-packages/numpy/core/include (ver 1.11.1)
packages path: lib/python3.5/site-packages
Python (for build): /opt/python/cp35-cp35m/bin/python
Java:
ant: NO
JNI: NO
Java wrappers: NO
Java tests: NO
Matlab: NO
OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。
2018年9月25日火曜日
OpenCV-pythonの開発用にVisual Stuidio Codeをインストールした
Visual Stuidio Codeはここにアクセスしダウンロードする
Ubunutは、 .debの64bitを
Windows10は、UserInstallerの64bitをそれぞれダウンロードした
拡張機能のインストール
あると便利なので上記画像のものを使用している日本語化
Japanese Language Pack for Visual Studio Code が必要
インストール後に、[Ctrl]+[Shift]+[P] でコマンドパレットを表示させ「configure」を入力
下記画面の様に、ロケールをjaに変更し再起動すればよい
メモ
pylintを有効にすると、cv2の警告がうるさいので向こうとしている
pylintには、ホワイトリストの設定で警告を回避できるが、VSCのpylintはその機能がない
Windows10 64bit上にOpenCV(3.4.3)-Python の環境を構築してみた
最近Pythonを使う頻度が増えてきたので、Windows10 ノートPC上にOpenCV(3.4.3)-Pythonの環境を構築してみた
最初にWindows10上にPython環境を構築する。そのためにAnacondaをダウンロードしインストールする
ここにアクセスし、Python 3.6 version 64-Bit Graphical Installer (631 MB) を選択する
ダウンロードしたファイルを実行し、指示通りに進めていく
インストールタイプを選択する画面があるが、ここでは、JustMeを選択し、使用しているアカウントのみをインストールの対象とする
(インストールの仕方は、Google先生に聞くと画面付きの手順が多々みつかる)
インストールの途中で、Visual Studio Codeのインストールを聞かれるが、インストール時はパスした (結局後で、自分でインストールを行った)
インストールが完了すると、
Windows のスタートメニューに、Anaconda3 (64-bit)が作成される
その中のAnaconda Promptを選択するとPythonが使用できるコンソールが起動される
事前にcondaを最新にしておく(インストールしたばかりは、環境は、Base(root)しかない)
conda update -n base conda
conda update -y --all
メモ
pythonは、以下のものが使用される
C:\Users\hogehoge\AppData\Local\Continuum\anaconda3\python.exe
(hogehogeはユーザネーム )
新規環境を構築するとC:\Users\hogehoge\AppData\Local\Continuum\anaconda3\envの下に、関連ファイルが一式保存される
pip関連
pipのバージョン確認
pip -V
pip 18.0
pipでインストールした物
pip list
pip の更新
python -m pip install --upgrade pip (--proxy=proxy.hogohoge.co.jp:8080)
pipでインストール
pip install opencv-python==3.4.3.18
pip install ipython
pip install matplotlib
pip install jupyter
参考にしたページ
Windows で Anaconda 5.2.0 のインストールと Python 3.6 の設定(パッケージのインストールなど)2018年9月24日月曜日
OpenCV3.4.3のDNNのサンプルを眺めてみた
4.0のアルファが公開されているので今さらだがメモ
3.4.2との比較
mask_rcnn.py tf_text_graph_common.py tf_text_graph_mask_rcnn.pyが追加されている
tf_textは、モデルのネットワーク構成を図にするサンプルであるが、実行にはtfパッケージが必要なので、OpenCVで描画する必要性は疑問である。
mask_rcnnは、4.0の更新に記載されているが、3.4.3の時からサポートされている
後で試した結果を掲載する
3.4.2との比較
mask_rcnn.py tf_text_graph_common.py tf_text_graph_mask_rcnn.pyが追加されている
tf_textは、モデルのネットワーク構成を図にするサンプルであるが、実行にはtfパッケージが必要なので、OpenCVで描画する必要性は疑問である。
mask_rcnnは、4.0の更新に記載されているが、3.4.3の時からサポートされている
後で試した結果を掲載する
Ubuntu 16.04.5上にOpenCV-pythonの環境を構築した
お決まりコマンド
sudo apt-get -qq update && apt upgrade -y
必要なパッケージのインストール
sudo apt install --no-install-recommends -y wget unzip libglib2.0-0 libsm6 libxrender1 libxext6 python3 python3-dev python3-numpy
PIPのインストール(認証エラーが生じたので、オプションを追加)
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
OpenCV-pythonをインストール
pip install matplotlib opencv-python
最後に
echo 'alias python="python3"' > .bashrc
確認
メモ
cv2をインポートした時にライブラリがないとの警告が出た場合、
apt-cache search libXrender
でパッケージ名を探し、apt-get install すればよい
使用できるOpenCVを調べる
pip install opencv-python==5
存在しないバージョンを指定する
Could not find a version that satisfies the requirement opencv-python==5 (from versions: 3.1.0.0, 3.1.0.1, 3.1.0.2, 3.1.0.3, 3.1.0.4, 3.1.0.5, 3.2.0.6, 3.2.0.7, 3.2.0.8, 3.3.0.9, 3.3.0.10, 3.3.1.11, 3.4.0.12, 3.4.0.14, 3.4.1.15, 3.4.2.16, 3.4.2.17, 3.4.3.18)
No matching distribution found for opencv-python==5
以上
2018年9月21日金曜日
カーネルを更新したらログインループとなり困ってしまった。
Ubunt16.04LTSを使用しているので、カーネルを更新する必要はなかったが、魔がさしてしまい更新したところ、ログインループと呼ばれる現象が生じ、GUI環境が使用できなくなってしまった
Google先生で調べてみると、nVidiaのドライバー特有の問題で、様々な対策方法が見つかった。
(何回、ドライバーのインストールと削除を繰り返したか忘れた)
最終的には、以下のコマンドを実行し、rebootしたらGUI環境に戻っていた。
sudo apt-get install --install-recommends linux-generic-hwe-16.04 xserver-xorg-hwe-16.04
uname -a
旧 4.4.0-135-generic 新 4.15.0-34-generic
nvidia-smi
Driver Version: 390.87
設定を見ると、396.54も選べそうだが、しばらく様子見とする
OpenCV4.0 アルファのchange logを訳してみた
昨日、リリース予定の件を書いたら、翌日には4.0アルファがリリースされていた。
当初は、ベータだったのに、アルファに後退している。あと、数回中間でのリリースがされることが予想される
3.4.3の変更点は、9/21の時点では、TBDになったいるが、4.0アルファ版は、変更点が掲載されていたので、ざっくり訳してみた(一部分からないところは、省略している)
原文は、ここ
OpenCV 3.xは、 - DENABLE_CXX11=ONflagをCMakeに渡すことでC ++ 11ライブラリとして構築することができる
しかし、いまでは、そのフラグは不要で、りようできない。
拡張されたC ++ 11標準ライブラリのおかげで、独自のcv::String and cv::Ptrを取り除くことができる
現在、cv::String と std::string は同じで、cv::Ptr は、std::shared_ptrのラッパーである。
Linux/BSD parallel_for_ のデフォルトは、pthreadsの代わりに、std::threadsを使用します
ONNXパーサーの統合により、多くの分類用ネットワークを読み込むことができる。
ONNX 版の YOLOは、 最終領域情報を出力する最終層がサポートされていない。
Intel DLDTサポートを組み込んだDNNモジュールのパフォーマンスをさらに向上させた。
ターゲットプラットフォームとコンパイルフラグに応じて、これらの関数は、SSE2, SSE4, AVX2, NEON or VSXにMAPされている。
CPU_BASELINE=AVX2 CMake flagを設定してコンパイルすれば、特定の画像処理操作で、15から30%速度が向上する
OpenCV 4.0では、より多くのカーネルをこのような組み込み関数に変換し、ダイナミックディスパッチメカニズムを採用する予定。
実際のハードウェアが、AVX2命令をサポートしている場合、AVX2最適化カーネルが実行時に選択される
QRコード検出が、サンプルとともに、物体検出モジュールに追加された。
人気のあるKinect Fusionが、CPUとGPU(OpenCL)用に最適化されて実装され、opencv_contrib/rgbd モジュールに統合された
ライブサンプルを作成するために、opencv/videoioモジュールに、 Kinect 2サポートを行った。
CUDAのcontribへの移動は触れられていない
以上
当初は、ベータだったのに、アルファに後退している。あと、数回中間でのリリースがされることが予想される
3.4.3の変更点は、9/21の時点では、TBDになったいるが、4.0アルファ版は、変更点が掲載されていたので、ざっくり訳してみた(一部分からないところは、省略している)
原文は、ここ
4.0前の最初の中間リリースである
OpenCV 4.0 は現在C ++ 11ライブラリであり、そのため、C ++ 11準拠のコンパイラが必要。OpenCV 3.xは、 - DENABLE_CXX11=ONflagをCMakeに渡すことでC ++ 11ライブラリとして構築することができる
しかし、いまでは、そのフラグは不要で、りようできない。
拡張されたC ++ 11標準ライブラリのおかげで、独自のcv::String and cv::Ptrを取り除くことができる
現在、cv::String と std::string は同じで、cv::Ptr は、std::shared_ptrのラッパーである。
Linux/BSD parallel_for_ のデフォルトは、pthreadsの代わりに、std::threadsを使用します
DNN の改良
Mask-RCNN モデルサポートONNXパーサーの統合により、多くの分類用ネットワークを読み込むことができる。
ONNX 版の YOLOは、 最終領域情報を出力する最終層がサポートされていない。
Intel DLDTサポートを組み込んだDNNモジュールのパフォーマンスをさらに向上させた。
パフォーマスの改良
ワイドユニバーサル組み込み関数により、多くの基本カーネルを書き直した。ターゲットプラットフォームとコンパイルフラグに応じて、これらの関数は、SSE2, SSE4, AVX2, NEON or VSXにMAPされている。
CPU_BASELINE=AVX2 CMake flagを設定してコンパイルすれば、特定の画像処理操作で、15から30%速度が向上する
OpenCV 4.0では、より多くのカーネルをこのような組み込み関数に変換し、ダイナミックディスパッチメカニズムを採用する予定。
実際のハードウェアが、AVX2命令をサポートしている場合、AVX2最適化カーネルが実行時に選択される
QRコード検出が、サンプルとともに、物体検出モジュールに追加された。
人気のあるKinect Fusionが、CPUとGPU(OpenCL)用に最適化されて実装され、opencv_contrib/rgbd モジュールに統合された
ライブサンプルを作成するために、opencv/videoioモジュールに、 Kinect 2サポートを行った。
CUDAのcontribへの移動は触れられていない
以上
2018年9月19日水曜日
数日以内にOpenCV 4.0ベータがリリースされる予定である。
先週の会議メモによると今週水曜日(日本時間だと木曜)に4.0のベータ版のリリースが予定されている
4.0アルファ(午前の記述はベータだった)のIssuesは、23時の時点で2個Openなっている。これが0になったらリリースされるのか、そのままリリースされるのかは分からない
公式リリースを待たなくてもmasterのファイルを調べてみると、いくつかの追加機能が確認できる。
力を入れているdnnモジュールは、ONNX対応になっている。リリースされたら、試してみる予定である。
2018年9月5日水曜日
OpenCV 3.4.3でYolo V3を試してみた (I tried Yolo V3 with OpenCV 3.4.3)
3.4.2の時の話はここ。
3.4.2でためした時から以下の変更あり
1. サンプルのtipoが修正されている
issueへの報告により、line 23の変数がnmsに2 windowサイズの問題
縮小表示される原因がわかり対処オリジナルのサイズで結果が表示されるようになった。
原因
スクロールバーを表示するために事前にwindwoを作成していたため
対処
line 92から94をコメントアウト
3 関連データの場所
configファイルはここWeightファイルはここ
クラス名はここ
これらは、dnn サンプルページの下段のここからたどる
コマンドは、以下のもの
(オリジナルを修正しているため、ファイル名を買えている)
./yolov3_object_detection -config=yolov3.cfg -model=yolov3.weights -input=train1.png -width=416 -height=416 -scale=0.00392 -classes=object_detection_classes_yolov3.txt -rgb=true
OpenCV 3.4.3 がリリースされた (OpenCV 3.4.3 was released)
3.4.2同様に公式発表はありませんが、3.4.3が8/29にリリースされました
リリース情報 なし
ドキュメント
変更点 (書きかけ)
github
また、予定日は記載されて以内が、3.4.4の準備が進んでいる
以上
登録:
投稿 (Atom)