2018年9月25日火曜日

OpenCV(3.4.3)-pythonのコンフィグレーションを調べてみた

どのようコンフィグレーションなのか下記コマンドで表示させてみた。
結果は、長いので一部省略

当然のことながら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-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の時からサポートされている


後で試した結果を掲載する

Ubuntu 16.04.5上にOpenCV-pythonの環境を構築した

初期状態のUbuntu上にOpenCv-Python(3.4.3)の環境を構築した時のメモ

お決まりコマンド
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アルファ版は、変更点が掲載されていたので、ざっくり訳してみた(一部分からないところは、省略している)

原文は、ここ

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への移動は触れられていない

以上