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

以上

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の準備が進んでいる


以上