SDK同梱ドキュメント:PythonModuleInstallManual
目次
...
Table of Contents | ||||
---|---|---|---|---|
|
責任制限
...
本ツールはセキュリティカメラ上で動作するアプリを開発するための機能を提供するもので、ツールを利用したアプリの動作保証を行うものではありません。また、追加アプリ動作中はセキュリティカメラに組み込まれた機能の動作は保証されません。
付属のサンプルはツールの使用方法を記述したものであり、実際の監視運用を目的として作成されたものではありません。
弊社は、いかなる場合も以下に関して一切の責任を負わないものとします。
本製品に関連して直接または間接に発生した、偶発的、特殊、または結果的損害・被害
お客様の故意や誤使用、不注意による障害または本製品の損傷など
お客様による本商品の逆コンパイル、逆アセンブルが行われた場合、それに起因するかどうかにかかわらず、発生した一切の故障または不具合
セキュリティデバイスからダウンロードしたデータ等のパソコンにおける消失、あるいは漏洩等によるいかなる損害、クレームなど
ネットワーク上からの不正アクセスなど悪意を持った第三者による画像データ、音声データ、認証情報(ユーザー名、パスワード)の漏えいなどによるいかなる損害、クレームなど
概要
...
AIを使用する追加アプリを開発する際には、Caffe/Tensorflow/ONNXで作成したモデルをAIカメラ内蔵のアクセラレータ(CVFlow)で実行可能なバイナリ(cavalry.bin)に変換する必要があります。
CVツールはこの変換処理に関連するツールAIモデル変換ツール(以下、CVツール)はこの変換処理に関連するツール(Convert Tool)を提供します。
...
注
Note |
---|
本ドキュメントは、ユーザがAIモデルの学習に習熟していることを前提として、作成されています。 ・CVツールはAIモデルの学習に関する機能を提供するものではありません。 各フレームワークでの学習は、ユーザが前もって実施してください。 ・CVツールはAIモデルとしてCNNを対象としています。 ・tensorflow v2.xのモデルは事前にtfliteに変換が必要です。 ・pytorchのモデルは事前にONNXに変換が必要です。 |
開発フロー
学習済みモデルをCVflowの実行可能バイナリに変換するまでのフローを記載します。
CVツールでは図中の色付きの項目に対する処理を実施します。
...
Conversion
学習モデルをcavalry.binに変換します。
Conversionではモデルの再学習は行いません。
...
通常、8bitの方が推論時間は高速になりますが、精度は劣化します。
環境構築
...
Info |
---|
CVツールの入手方法はこちらをご参照ください。 |
チュートリアルでのインストール対象OS
Ubuntu 18.04.6 LTS
Dockerをインストールする
Docker環境の構築に必要なパッケージをインストール、環境設定を行います。
...
Code Block |
---|
$ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io |
Dockerイメージをインポートする(初回のみ)
インポートが完了するまでに数分程度の時間がかかります。
Code Block |
---|
$ cat cvtool_v1.18.tar.bz2 | sudo docker import - [image name] |
コンテナを作成する(初回のみ)
ホストOSとコンテナとの間でデータをやりとりする際は –v オプションも指定してください。
...
Code Block |
---|
$ sudo docker run -d -it --name [container name] [image name] /bin/bash |
CVツールを実行する
コンテナを起動します。
Code Block |
---|
$ sudo docker start [container name] |
...
Code Block |
---|
$ cd /home/cvtool $ source setup_env.sh |
モデルを変換する
...
学習済みのサンプルモデルを変換する手順を記載します。モデルの変換方法はこちらを参照してください。
変換時の設定ファイルについてはこちらを参照してください。 サンプルモデルをダウンロードして変換する
...
任意のモデルを変換する
Code Block |
---|
$ cd conversion/caffe |
サンプルモデルをダウンロードする
Code Block |
---|
$ wget https://github.com/shicai/MobileNet-Caffe/blob/master/mobilenet.caffemodel
$ mv mobilenet.caffemodel sample/mobilenet_v1/models |
モデル変換を実行する
Code Block |
---|
$ ./caffe_conversion.sh setting.conf |
変換用設定ファイル仕様について
Caffe
# Network Name
設定ファイル(setting.conf)仕様
Caffe
Note |
---|
caffeのSSDモデルは、3rdParty様の環境では変換非対応となっております。 必要な場合はこちらからお問合せください。 |
Code Block |
---|
# Network Name NET_NAME=mobilenetv1 |
...
# Path to Deploy Prototxt |
...
DEPLOY_PROTOTXT=./sample/mobilenet_v1/mobilenet_deploy.prototxt |
...
# Path to Directory for (Deploy) Caffe Models |
...
MODEL_DIR=./sample/mobilenet_v1/models |
...
# Path to Directory for DRA Images |
...
DRA_IMAGE_DIR=../dra_img |
...
# Path to Directory for Output Data |
...
OUTPUT_DIR=./out |
...
# Quantization |
...
# FIX8 : Fixed-point 8bit
...
Mode # FIX8 : Fixed-point 8bit # FIX16 : Fixed-point |
...
16bit # MIX : FIX8/FIX16 mixed |
...
PARSER_OPTION=FIX8 |
...
# Input Data Format (0:NHWC, 1:NCHW) |
...
IN_DATA_FORMAT=1 |
...
# Input Data Channel |
...
IN_DATA_CHANNEL=3 |
...
# Input Data Width |
...
IN_DATA_WIDTH=224 |
...
# Input Data Height |
...
IN_DATA_HEIGHT=224 |
...
# Input Data Mean Vector or Name of .binaryproto |
...
IN_MEAN=103.94,116.78,123.68 |
...
# Input Data Scale |
...
# IN_SCALE=1/Scale |
...
IN_SCALE=58.823529411 |
...
# RGB or BGR (0:RGB, 1:BGR) |
...
IS_BGR=1 |
...
# Input Layer Name |
...
IN_LAYER=data |
...
# Output Layers Name |
...
OUT_LAYER=mbox_loc,mbox_conf_flatten |
...
#cavalry version |
...
#if not specified -> "" |
...
CAVALRY_VER="2.1.7" |
...
# Unique preprocess |
...
# if use im2bin -> NONE |
...
# if use unique preprocess -> script path |
...
PREPRO=NONE |
...
PREPRO_ARG="" |
...
# Input file data format |
...
IN_DATA_FILEFORMAT=0,0,0,0 |
...
# Transpose indices(NONE:without transpose , 0,3,1,2:transpose (EX)) |
...
IN_DATA_TRANSPOSE=NONE |
NET_NAME:ネットワーク名
任意の名前を設定できます。
DEPLOY_PROTOTXT:deploy用prototxtファイルへのパス
MODEL_DIR:caffemodelが格納されたディレクトリ
ディレクトリ下の全てのモデルに対して、変換処理を実行します。
DRA_IMAGE_DIR:量子化の最適化処理で使用する、画像ファイルが格納されたディレクトリ
学習に使った画像を格納してください。100~200枚が推奨枚数です。
画像フォーマットはJPEGやPNGなど、OpenCVで対応しているものです。
任意サイズの画像を使用可能です。
OUTPUT_DIR:変換後のデータ出力先ディレクトリ
PARSER_OPTION:量子化モード
FIX8/FIX16/MIX(FIX8/FIX16混合)から選択します。
IN_DATA_CHANNEL:モデルの入力画像チャネル数
N_DATA_WIDTH:モデルの入力画像サイズ(幅)
IN_DATA_HEIGHT:モデルの入力画像サイズ(高さ)
IN_MEAN:入力画像の正規化パラメータ(平均値)
数値またはbinaryprotoファイルでの設定が可能です。
数値で設定する場合には、以下のように”,”の間に空白を入れないようにしてください。
IN_MEAN=127.5,127.5,127.5binaryprotoファイルで設定する場合には、以下のようにファイルへのパスを設定してください。
IN_MEAN=./model/mean.binaryproto
IN_SCALE:入力画像の正規化パラメータ(スケール)
チャネルごとに異なる設定値にする場合は、”,”で値を区切ってください。”,”の間には空白を入れないようにしてください。
IS_BGR:入力画像のフォーマット(RGB or BGR)
IN_LAYER:ネットワークの入力レイヤ名
次ページの ”注” もご覧ください。
変換後のモデルでは入力レイヤ名が “${IN_LAYER}_0” に変わります。
したがって追加アプリ上で変換後のモデルを動かす際も、モデルの入力レイヤとして “_0” を付ける必要があります。
OUT_LAYER:ネットワークの出力レイヤ名
複数指定する場合は”,”で区切ってください
CAVALRY_VER:使用するcavalryバージョン
PREPRO:前処理スクリプトパス(python)
スクリプトの作り方は“/home/cvtool/common/prepro.py”を参照してください。
PREPRO_ARG:前処理スクリプトの引数
IN_DATA_FILEFORMAT:入力データのフォーマット
例:uint8-> 0,0,0,0,float32-> 1,2,0,7,float16-> 1,1,0,4)
N_DATA_FILEFORMAT を”0,0,0,0”から変更した場合はPREPROの設定が必要になります
N_DATA_TRANSPOSE:入力データに対してTRANSPOSE を行う場合指定する
Info |
---|
deploy用のprototxtでinputレイヤが定義されていない場合は、以下のようにレイヤを追加してください。 |
...