【How-to 記事】Edge ImpulseでエッジAI導入を始めましょう

**

  1. はじめに**
    アドバンテックのAOM-2721は、オープンスタンダードモジュール(OSM)であり、具体的にはOSM 1.1フォームファクタを採用したコンピュータオンモジュールです。コンパクトで統合されたコンピューティングプラットフォームとして設計されており、特に組み込みアプリケーションやエッジAIに適しています。

2. 前提条件
ハードウェア:
・Qualcomm Dragonwing™ QCS6490搭載のAOM-2721 OSM開発キット
・Qualcomm 8コアKryo CPU(最大2.7GHz)
・12 TOPSのAI機能を備えたHexagon™ Tensor Processor
・Adreno VPU 633(4K30エンコード/4K60デコード、H.264/265対応)
・Adreno GPU 643(OpenGL ES3.2/OpenCL 2.0対応)
・オンボード8GB LPDDR5メモリ(8533MT/s)
・オンボード128GB UFS + 128GB eMMCストレージ
・主なI/Oインターフェース:HDMI(1920 x 1080 @60Hz)×1、DP(1920 x 1080 @60Hz
×1、4LAN MIPI-CSI×2、USB×1 3.2 Gen1、PCIe Gen3 x1 x 2、PCIe Gen3 x2 x 1、GbE x 2
・16GB RAMと350GBストレージを搭載したx86開発マシン1台
・フルHD HDMIモニター1台とHDMIケーブル1本
・USBマウスとキーボードセット1組

ソフトウェア:
・Yocto OSのインストール(Ubuntuホストマシン経由)
・AOM-2721上でのAIランタイムのセットアップ

3. エッジインパルス設計
ステップ1:[実験]ページに移動し、[新しいインパルスを作成]をクリックして新しいインパルスフローを作成する準備をします。

ステップ2:インパルス設定ページで、後続の画像処理と学習の基礎となる入力画像サイズ(416x416)とリサイズモードを設定します。

ステップ3:インパルスに「処理ブロック」を追加し、画像モジュールを選択して画像の前処理と正規化を行います。

ステップ4:インパルス構成は、左側の入力画像パラメータと中央の画像処理モジュールで更新されます。

ステップ5:オブジェクト検出、FOMO異常検出、YOLOv5モデルなどのオプションを含む
「学習ブロック」を追加します。

ステップ6:インパルス応答の設定が完了しました。画像入力モジュールとYOLOv5学習
ブロックが組み込まれ、歪み、はんだ付け過剰、および墓石状の欠陥クラスに対する出力特徴量が得られました。

ステップ7:入力モジュールと学習モジュールが確立された状態で、インパルス構成が正常に
保存され、後続のトレーニングの準備が整いました。

4.特徴量生成
ステップ8:画像モジュールの設定ページで、元の画像、RGB色深度、および処理済みの特徴量結果を確認します。

ステップ9:特徴量を生成する準備。システムは、曲がった、はんだ付けが過剰、墓石状のカテゴリに分類された490個のトレーニングサンプルを表示します。

ステップ10:特徴量生成中、システムはデータセットを処理し、ジョブのスケジュールと進捗
状況を表示します。

ステップ11:特徴量生成が完了し、カテゴリごとのサンプル数と、処理時間やメモリ使用量などのデバイス上でのパフォーマンス情報が表示されます。

ステップ12:特徴可視化結果。曲がったサンプル、はんだ付けが過剰なサンプル、墓石状の
サンプルを色分けされた散布図として表示します。

5. モデル学習(YOLOv5)
ステップ13:YOLOv5の設定ページでは、学習プロセッサ(CPU/GPU)、学習サイクル数、
モデルサイズ、バッチサイズを設定できます。

ステップ14:YOLOv5のトレーニングパラメータを設定し、トレーニングサイクル数を200に
設定し、Smallモデル(720万パラメータ)を選択します。

ステップ15:トレーニングリソースとデータセットのサイズに合わせて、バッチサイズを16に調整します。

ステップ16:YOLOv5モデルのトレーニングを開始します。システムはトレーニングの進捗状況とリアルタイムのログを表示します。

ステップ17:トレーニング結果ページには、精度スコア99.2%と、mAPや再現率などの詳細な
パフォーマンス指標が表示されます。

6. 再学習とテスト
ステップ18:[モデルの再学習]ページで、既存の画像モジュールとYOLOv5学習ブロックを選択し、モデルの再学習の準備をします。

ステップ19:モデルの再トレーニング中、システムは進行中の特徴処理とYOLOv5のトレーニングを表示します。


ステップ20:再学習後、システムはすべてのモジュールが正常に実行され、モデルテストが完了したことを示します。

ステップ21:「ライブ分類」ページで、デバイスとカメラソースを選択し、「サンプリング開始」をクリックして、リアルタイム画像分類を開始します。

ステップ22:モデルのテスト結果は、テスト画像に対して100%の精度を示し、精度や再現率などの詳細な指標も示しています。

7. デプロイ
ステップ23:「デプロイ」ページで、デプロイ先としてLinux(Qualcomm QNN搭載のAARCH64)を選択し、モデル最適化オプションを設定します。

ステップ24:量子化(int8)モードまたはfloat32モードを選択してモデルのデプロイメントを
構成し、モデルテストを実行するオプションを選択します。

ステップ25:モデルの構築とデプロイのプロセス中に、システムはデプロイファイルの生成を
表示します。

ステップ26:モデルの構築が正常に完了し、ダウンロード可能な.eimデプロイメントファイルが利用可能になりました。

ステップ27:コンパイル済みのEdge Impulseモデルファイル(.eim)をQCS6490開発ボード上で実行し、推論プロセスを開始します。

ステップ28:マウントされたUSBディスクからコンパイル済みの.eimモデルファイルをQCS6490開発ボードのファイルシステムにコピーします。

image

ステップ29:edge-impulse-linux-runnerコマンドを使用して、開発ボード上で.eimモデル
ファイルを実行します。

image

ステップ30:システムはモデルバリアントの選択を促し、ユーザーは最適化されていない(float32)または量子化された(int8)のいずれかを選択できます。

Step30

ステップ31:量子化(int8)モデルを選択した後、システムはモデルをダウンロードして展開
します。

ステップ32:モデルの構築とデプロイが完了し、「バイナリの構築は正常です」と表示され、
デプロイファイルがバックアップされます。

ステップ33:モデルの構築とデプロイが完了し、「バイナリの構築は正常です」と表示され、
デプロイファイルがバックアップされます。

ステップ34:モデルの構築とデプロイが完了し、「バイナリの構築は正常です」と表示され、
デプロイファイルがバックアップされます。

8. EONチューナーによる最適化
ステップ35:EONチューナーページを開き、モデル最適化のためのハイパーパラメータ探索を設定します。

ステップ36:EON Tunerで、検証損失を最小限に抑えることを目的とした「Run #1」という
名前の新しい実験を設定します。

ステップ 37: EON Tuner の設定で、実験に「Run #1_AOI」という名前を付け、ユースケースとして「オブジェクト検出 (バウンディング ボックス)」を選択します。

ステップ38:EON Tunerの実験が開始され、システムが自動的に最適な構成を検索します。

ステップ39:EON Tunerは、さまざまなハイパーパラメータの組み合わせによるテスト結果を
含む、検索の進行状況を表示します。

ステップ40:EON Tunerの結果ページには、さまざまなモデル構成におけるパフォーマンス
比較が表示されます。


ステップ41:EON Tunerは最適なモデル構成を選択し、推奨される最適化設定を強調表示
します。

ステップ42:最適化後、システムは新しいモデル構成を再学習してデプロイするように促
します。

ステップ43:AOIモデルのデプロイが完了し、Edge Impulseプラットフォームに最適化された
モデルが正常に構築され、推論の準備が整ったことが表示されます。最後に、この最適化されたモデルをプロジェクトに追加することで、トレーニングに最適なデータを取得できます。