Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

data ディレクトリは、AdamApp 用外部データファイルを配置できる唯一のディレクトリで す。 AdamApp 用外部データファイルを、インストール時に同時にコピーしたい場合には、そのフ ァイルをこの下に配置します。インストール時に、コピーしたい AdamApp 用外部データファイ ルがない場合は、このディレクトリは空にしておきます。
data_CV2Xディレクトリは、ambaCV2X用のAdamApp 用外部データファイルを配置できるディレクトリで す。
data_CV5Xディレクトリは、ambaCV5X用のAdamApp 用外部データファイルを配置できるディレクトリで す。
ambaCV2XおよびambaCV5Xで共用する場合はdataディレクトリにAdamApp 用外部データファイルを格納すれば、共用されます。ambaCV2XおよびambaCV5XでAdamApp 用外部データファイルを区別する場合はdata_CV2Xディレクトリおよびdata_CV5Xディレクトリの下に配置します。

AIアクセラレータを使用する場合は、変換したバイナリデータをcnn ディレクトリの下に配置します。

⚫ external ディレクトリ: AdamApp で使う外部ソフトウェアを配置するディレクトリ

...

AdamApp に必要なファイルの作成と配置が完了したら、AdamApp のビルドとパッケージ作成を行いま
す。具体的には、(1)AdamApp の実行環境に対応する設定ファイルを読み込み、(2)make の実行、を実施し
ます。
詳しい手順について、SDK v1.71以前を利用される場合はこちらを参照ください。
SDK v1.80以降を利用される場合はこちらを参照ください。

ambaCV2XおよびambaCV5Xの拡張アプリを1ファイルにまとめてビルドする

ambaCV2XおよびambaCV5Xのアプリを1ファイルにまとめる方法を説明します。1ファイルにまとめる必要が無い場合は実施しなくても問題ありません。
事前にambaCV2XおよびambaCV5Xのアプリをビルドしておきます。例としてPythonのsqlite_appをビルドした場合は、下記のファイルが生成されることになります。

SQLiteSampleAppPy_V0_1_ambaCV2X.ext
SQLiteSampleAppPy_V0_1_ambaCV2X.zip
SQLiteSampleAppPy_V0_1_ambaCV5X.ext
SQLiteSampleAppPy_V0_1_ambaCV5X.zip

このまま、下記の通り対象のディレクトリに移動しmake packを実行します。

Code Block
cd ${SDK_DIR}/src/adamapp-py/sqlite_app/
make pack

成功すると、ambaCV2XおよびambaCV5Xのアプリが1ファイルにまとめられます。

SQLiteSampleAppPy_V0_1_ambaCV2X5X.ext
SQLiteSampleAppPy_V0_1_ambaCV2X5X.zip

上記ファイルはambaCV2XカメラおよびambaCV5Xカメラに利用可能です。

Note

make pack後ののファイルサイズが約99MB以下の場合に、ambaCV2XおよびambaCV5Xカメラ両方へのアップロードが可能です。実動作はご確認ください。

ambaCV2XおよびambaCV5Xのアプリが1ファイルにまとめられると、その分ファイルサイズが大きくなります。ファイルサイズが大きいとアプリが動作しない場合があります。ファイルサイズ上限はカメラの機種や状態に依存して変動しますので、ご注意ください。

 

コンフィギュレーションファイルのフォーマット

...

コンフィギュレーションファイルとは、AdamApp の動作に必要な情報を記述したファイルです。Adam
実行環境は、このファイルの内容を参照して、AdamApp の制御(インストール/開始など)を行います。このため、このファイルの内容が誤っている場合は、AdamApp のインストールや開始に失敗することがありますので、正確に記述してください。
なお、このファイルは、AdamApp パッケージの作成時に参照されますので、AdamApp 作成のための
make 実行前までに作成しておく必要があります。

...

タグ名

説明

複数指定

選択性

ア プ リ ケ ー シ ョ ン 名 関 連 情 報

APPLICATION

AdamApp の実行ファイル名。 Makefile の PROG_NAME 変数と同じ名前を記載します。 使える文字は、英数字、ハイフン、アンダースコア、ピリオド で、256 文字以内です。

M

APPVERSION

AdamApp のバージョン。 使える文字は、英数字、ピリオドで、7 文字以内です。

M

APPNAME

AdamApp の正式名称。
この AdamApp の正式名称は、複数言語に対応しているため、
APPNAME0 Sample Application
というように APPNAME + リージョンコードというタグ名を構成
します。複数言語の正式名称を記載する場合には、この項目を複
数記載してください。

各言語に対応するタグ名は下記の通りです。

APPNAME0:英語

APPNAME1:日本語

APPNAME5:イタリア語

APPNAME7:フランス語

APPNAME9:ドイツ語

APPNAME11:スペイン語

APPNAME12:中国語

APPNAME13:ロシア語

APPNAME14:ポルトガル語

なお、APPNAME0(英語)は、必ず指定してください。その他の
APPNAME の指定については、任意です。
シングルクォートは使用できません。文字数は、32 文字以内です。
なお、文字コードは UTF-8 でなければなりません。

O

M

リ ソ ー ス 関 連 情 報

ROMSIZE (*1)

AdamApp が利用する ROM 使用量 (KB)。
この ROM 使用量には、AdamApp の実行ファイルだけでなく、
data ディレクトリに格納するファイルのサイズなども含みます。
AdamApp のインストール時に、この値を参照して、インストール可能かどうかを判断します。

M

RAMSIZE (*2)

AdamApp が利用する RAM 使用量(KB)。使用量(KB)
AdamApp のインストール時に、この値を参照して、インストール可能かどうかを判断します。
AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

M

CPURATE (*2)

AdamApp が利用する CPU 使用率(%)。使用率(%)

WEB API getApplicationListの応答に使用されます。

M

AIACCRATE (*23)

AdamApp が利用する AI アクセラレータ使用率(%)
AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

AIMEMSIZE (*3)

AdamApp が利用する AI メモリ使用量(KB)AdamApp の開始時に、この値を参照して、開始可能かどうかを判断します。

ス ク リ プ ト フ ァ イ ル 情 報

INSTALLER

インストール実行直後に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

UPDATER

アップデート実行直後に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

UNINSTALLER

アンインストール実行直前に実行されるシェルスクリプト名。
記述できるシェルスクリプトは、Bourne Shell(実際には、Bourne Shell 互換シェルである ash を利用)スクリプトのみです。
使える文字は、英数字、ハイフン、アンダースコア、ピリオドで、256 文字以内です。
なお、このシェルスクリプトを用いない場合は、値を記載しないか、この項目をコメントアウトしてください。

ラ イ セ ン ス 関 連 情 報

FUNCID

機能 ID。機能 ID は、AdamApp 毎に一意に割当てられる値で、通常、i-PRO 株式会社によって定められます。
この項目は、AdamApp に機能 ID を紐づけるためのものです。
使える文字は、16 進数で 8 桁の値です。

Info

AdamApp 開発時には、0000FF01~0000FFFF の間で設定してください。
なお、AdamApp 毎に違う機能 IDを設定してください。
もし、同じ機能 ID を設定されたAdamApp をインストールした時、後からインストールした AdamApp は、インストールエラーになります。

M

*1: ROMSIZE
以下の合計:
実行可能なファイルと共有ライブラリ(Linux サイズコマンドで取得した”text”と”data”のフィールドの合計値)。
Data ディレクトリの容量
Conf ディレクトリの容量

*2: RAMSIZE, CPURATE, AIACCRATE,
初めにサンプルアプリケーションと同じ値を設定してください。最後に、i-PRO カメラ上でアプリケーションを実行した際の値を設定してください。これらのパラメータについてはResource Monitorを参照ください。
また、利用可能な ROM/RAM のリソースについてはAppendix B: AdamApp で利用可能な CPU と RAMを参照ください。
*3: AIMEMSIZE

サンプルアプリケーションと同じ値を設定してください。

AIアクセラレーターの活用事例

Note

・AI アクセラレータは i-pro ambaCV2X モデル向けの AdamApp でのみ、利用可能です。

・ツール(cvtool)は AdamAppSDK には含まれていません。必要な場合には、i-PRO 株式会社にお問合せください。

i-pro ambaCV2X モデルのカメラには、AI の推論処理用アクセラレータ(CVFlow)を内蔵しています。
AdamApp からは、専用の API 経由でこのアクセラレータを使用することが可能です。API の入力として、アクセラレータ用のバイナリファイルが必要になります。以下の手順でバイナリの作成、およびAdamApp への組み込みを行ってください。

[手順]

  1. 学習済みの AI モデルを、アクセラレータ用のバイナリファイルに変換します。

  2. AdamApp パッケージの生成手順の記載手順にしたがって、AdamApp パッケージを作成します。この際に、手順 1.で作成したバイナリを data/cnn ディレクトリの下に置いてください。

...

Adam では、上記の手順 1.を行うためのツール(cvtool)を用意しています。cvtool の使用方法については、 AIモデル変換ツールを参照してください。

AIACCRATE,AIMEMSIZE

サンプルアプリケーションと同じ値を設定してください。内部処理で使用されることはありません。

Appendix

...

Appendix A: 製品のセキュリティについて

製品セキュリティを確保するため以下の事に注意して開発してください。
・静的解析を実施してください。
・脆弱性の検証を行ってください。
・OSS 使用時には、最新の OSS を使用する、或いは、既知の脆弱性を確認してからご使用ください。

Appendix B: AdamApp で利用可能な CPU と RAM

AdamApp で利用可能な CPU 使用率及び RAM 使用量は、i-PRO カメラの機種によって異なります。
CPU 使用率が上限に達すると、カメラはそれ以上 AdamApp が CPU を使用しないように制限します。
メモリ使用量が上限に達すると、AdamApp は強制終了されます。
機種ごとの利用可能なリソース情報は下記 URL を参照下さい。

https://dev-partner.i-pro.com/space/TPFAQ/694780048

Appendix C: Pythonでの開発について

i-PROカメラのPython環境

i-PRO カメラにあらかじめインストールされている Python 環境は下記の通りです。

Interpreter : Python 3.7.9

External library : python adam module for ADAM API

Python版AdamAppの構造

Python 版 AdamApp は、下記の図に示すように、Main スレッドと Python スレッドから 構成されている。

...

Python スクリプトに関しては、基本的に Python スレッドで実行される。 ただし、stopCallback、httpCallback、appPrefCallback 等のコールバック関数については、 Main スレッドで実行される。 Python 版 AdamApp が起動すると、まず Main スレッドが生成される。Main スレッドは AdamAppの初期化処理を行った後、Pythonスレッドを生成する。PythonスレッドはPython インタープリタを起動し、pymain.py を読み込み、Python スクリプトを実行する。 Python スクリプトが最後まで実行されると、Python スレッドは自動的に終了する。その 後 Main スレッドが終了処理を行い、AdamApp が終了する。