【How-to 記事】ゼロからエッジへ:AOM-2721 OSM開発キットで最適化された物体検出を構築する

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/H.265))
Adreno GPU 643(OpenGL ES3.2/OpenCL 2.0)
オンボード8GB LPDDR5メモリ(8533MT/s)
オンボード128GB UFS + 128GB eMMCストレージ
主なI/Oインターフェース:
HDMI×1(1920×1080@60Hz)
DP×1(1920×1080@60Hz)
4レーンMIPI-CSI×2
USB×1 3.2 Gen1
PCIe Gen3 x1 x2
PCIe Gen3 x2 x1
GbE x2
16GB RAMと350GBストレージを搭載したx86開発マシン1台
フルHD対応HDMIモニターとHDMIケーブル1セット
USBマウスとキーボードセット1セット

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

3. ブートスイッチの設定方法
例えば、下の図はAOM-2721開発キットに搭載されているマイクロスイッチを示しています。
これらのスイッチはフラッシュ処理中に使用され、AOM-2721互換デバイスであれば共通して
使用できます。

アドバンテック AOM-2721 開発キット スイッチ

以下のセットアップ手順では、AOM-2721 開発キットが写真に示されている実際のデバイス
です。
AOM-2721 OSM をベースにした他のデバイスは、若干外観が異なる場合があります。

3.1 (オプション) AOM-2721 OSMのフラッシュ

AOM-2721 OSMを搭載した実際のデバイスには、既にYoctoベースのイメージがフラッシュ
されている場合があります。
その場合は、ステップ3に進んでください。

デバイスのフラッシュが必要な場合は、以下の手順に従ってください。
AOM-2721 Yoctoユーザーガイド → クイックスタート

AOM-2721 OSM向けにAdvantechが作成した公式Yoctoイメージは、こちらから入手できます。
AIM-Linux Qualcomm Yocto OSリリースノート

イメージバージョンaom2721a1_yl01301_k0606052_q6490_08g以降をダウンロードして
ください。

フラッシュ処理が完了したら、以下のステップ3に進んでください。

3.2(オプション)AOM-2721 OSM用の独自のYoctoイメージの構築
一部のユーザーは、AOM-2721 OSM用のカスタムYoctoイメージを構築したい場合があります。
その場合は、以下の手順を参照してください。
ビルドスクリプトによるYOCTOイメージの構築
Yoctoビルドホストを設定し、AOM-2721に対応したイメージを構築します。

4. AOM-2721 OSMの起動とインターネット接続
4.1 概要
このセクションでは、AOM-2721の電源投入、ネットワーク接続の確立、およびEdge Impulse CLIのインストール方法について説明します。

4.2 セットアップ手順

  1. ホストコンピュータにEdge Impulse CLIをインストールします。
    2. AOM-2721 OSMの背面に電源を接続します。
    3. シリアルコンソールを接続します。

    ○デバイスにCOM1シリアルポートが搭載されている場合は、シリアル-USB変換アダプタ
    (ジェンダーチェンジャーが必要な場合があります)を使用してホストPCのUSBポートに
    接続します。

       `Advantech AOM-2721開発キット - USB over Serial-to-USB`
    
    1. ホストコンピュータとボード間でシリアル接続を開きます。
      Edge Impulse CLIを使用して直接接続することもできます。

      edge-impulse-run-impulse --raw

    2. 電源ボタンを押して起動プロセスを開始します。

    3. 30~60秒後、シリアルターミナルにログインプロンプトが表示されたら、ログイン
      します。

      ユーザー名: root
      パスワード: oelinux123

    7. ネットワーク接続を設定します。
    ○オプションA: イーサネットケーブルを接続します。
    ○オプションB:Wi-Fi経由で接続する:
    ・Qualcomm Linux v1.3より前のバージョンの場合:
    wpa_supplicant.confファイルを編集してください。
    ・Qualcomm Linux v1.3以降のバージョンの場合:
    nmcliを使用してください。

    8. (オプション)SSH経由で設定を続行します。

○デバイスのIPアドレスを確認します。
ifconfig | grep "inet addr:" | grep -v "127.0.0.1"
出力例:
inet addr:192.168.1.38 Bcast:192.168.1.255 Mask:255.255.255.0

SSHでログインします(デフォルトパスワード:oelinux123):
ssh [email protected]

5. Edge Impulse Linux CLI のインストール
AOM-2721 SOM 上で、以下のコマンドを実行して Edge Impulse CLI と必要な依存関係を
インストールします。

$ wget ``https://cdn.edgeimpulse.com/firmware/linux/setup-edge-impulse-qc-linux.sh
$ sh setup-edge-impulse-qc-linux.sh

5. CLI

6. Edge Impulseへの接続
すべての依存関係をインストールしたら、次のコマンドを実行します。
$ edge-impulse-linux

これによりウィザードが起動し、ログインしてEdge Impulseプロジェクトを選択するよう
求められます。
プロジェクトを切り替えたり、別のカメラ(例:USBカメラ)を使用したりする場合は、
コマンドに「–clean」引数を追加して実行してください。
$ edge-impulse-linux –clean

7. デバイスが接続されていることを確認する
これで完了です!デバイスがEdge Impulseに接続されました。確認するには、
Edge Impulseプロジェクトを開き、「デバイス」をクリックしてください。デバイスが一覧に
表示されているはずです。

7, Verifying~

例えば、以下のURLにアクセスしてください。

8. Edge Impulseアカウントの作成とプロジェクト設定
まずアカウントを作成してください。

既にアカウントをお持ちの場合は、5. データ取得とアップロードに進んでください。

ステップ1:
アドバンテックブランドのEdge Impulseサインアップページで、ユーザー名、会社メール
アドレス、役職、パスワードを入力し、CAPTCHA認証を完了し、利用規約に同意してから
サインアップ」をクリックしてください。

ステップ2:
アドバンテックブランドのEdge Impulseログインページが表示されます。ユーザーはユーザー名または会社のメールアドレスを入力し、「次へ」をクリックして認証に進みます。

その他のオプションとして、パスワードのリセットや新規アカウントの作成も可能です。

ステップ3:Edge Impulseプラットフォームで新しいプロジェクトを作成します。プロジェクト名に「Automated Optical Inspection」と入力し、エンタープライズタイプを選択し、パブリックまたはプライベート設定を選択してから「新しいプロジェクトを作成」をクリックします。

ステップ4:Edge Impulseプラットフォーム上の「自動光学検査」プロジェクトのホーム
ページ。ユーザーはここで、既存データの追加、新規データの収集、モデルのアップロード、
チュートリアルに従った迅速なモデル構築を行うことができます。

9. データ取得とアップロード
ステップ5:Edge Impulseプロジェクトの「データ取得」ページで、「データの追加」を
クリックしてデータセットの構築を開始するか、デバイスを接続して新しい画像データを
収集します。

ステップ6:「既存データの追加」メニューでは、ユーザーはプロジェクトにデータを追加する
ための3つのオプションから選択できます。データのアップロード、別のプロジェクトからの
インポート、ストレージバケットの使用です。

ステップ7:「データのアップロード」ページでは、ユーザーは個々のファイルまたはフォルダをアップロードするか、データがトレーニングセットに属するかテストセットに属するかを指定し、ファイル名から推測してラベルを定義するか、ラベルを付けずにそのままにするか、手動で入力するかを選択できます。設定が完了したら、「データのアップロード」をクリックして
アップロードを開始します。

ステップ8:トレーニングデータセットを構築するために、ローカルのトレーニングフォルダ(train)を選択してEdge Impulseプラットフォームにアップロードします。

ステップ9:「データのアップロード」ページで、ラベル付けフォーマットをYOLO TXTに
設定し、ラベル付け方法として物体検出タスクのバウンディングボックスを選択します。

ステップ10:テストデータセットをEdge Impulseプラットフォームにアップロードし、データカテゴリを「テスト」として割り当てます。

ステップ11:テストデータセットのアップロードを完了し、フォーマットをYOLO TXTに設定し、バウンディングボックスラベリングを使用して完全なテストセットを作成します。

ステップ12:後処理データをEdge Impulseプラットフォームにアップロードし、「後処理」
カテゴリに分類する。

ステップ13:YOLO TXT形式とバウンディングボックスラベリング方式を用いて、後処理データのアップロードを完了します。

ステップ14:「データ取得」ページには、収集された500個のデータ項目が表示され、
トレーニング、テスト、後処理の各セットに分類されています。ラベルの編集、項目の移動、
データの有効化/無効化などのオプションも用意されています。

10. データラベリングと準備
ステップ15:ラベルの一括編集(ラベル編集)機能を使用し、
490個のサンプルに「曲がっている」ラベルを設定します。その他の欠陥カテゴリ(例えば、
はんだ付け過剰や墓石状欠陥など)は、ドロップダウンメニューから選択できます。

ステップ16:データセットにアップロードされた画像を表示します。右側にはサンプル画像とバウンディングボックスの注釈が表示され、例えば欠陥箇所に「曲がっている」といったラベルが付けられています。

ステップ17:[ラベルの編集]機能を使用して、選択した画像をオーバーソルダリングとして割り当てます。更新されたラベルは右側に表示されます。

ステップ18:墓石状欠陥のある画像を一括でラベル付けします。更新された注釈は右側に
表示されます。