4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FastLabelで学習したモデルをi-PROモジュールカメラで使ってみた

Last updated at Posted at 2023-04-18

FastLabelで学習したモデルをi-PROのモジュールカメラで使う

はじめに

こんにちは、FastLabel Developmentチームの爲西です。

今回は、FastLabelで作成したモデルをi-PROモジュールカメラで使用する方法について紹介をします!

FastLabelとは

FastLabelは、データセット購入、アノテーションツール、教師データ作成代行、MLOps構築を包括したアノテーションプラットフォームです。教師データの作成と改善を高速かつ正確に行うためのアノテーションツールと、高度人材によるきめ細かいアノテーションサービスにより、高品質な教師データを素早く提供できるのが特徴です。

これまで、建設・インフラ、不動産、製造業、医療、農業、水産業など、既存産業の課題をAIで解決している多くの企業にFastLabelを導入。従来、担当者自身やクラウドソーシングで教師データの作成を行っていた導入企業の担当者からは、「FastLabelの活用により、大幅なアノテーション作業時間短縮と、レビュー・管理コストの削減が実現できた」とご好評いただいています。

FastLabelの特長

  1. 直感的なUIで効率的なアノテーションを実現
    端末へのインストール不要で、画像や動画、テキスト、音声などのアノテーションをウェブ上からすぐに開始できます。コピー&ペーストなどホットキーによる作業効率化の機能が豊富に備わっており、YOLO、COCO、PascalVOC、VoTT、labelme 形式にも標準対応しています

  2. 深層学習を使用した自動化でコスト・期間を70%削減
    ディープラーニングを使ったアノテーション作業の自動化によって、教師データ作成にかかるコストや期間を大幅に削減できます。人手による作業だけでなく、テクノロジーを活用し効率よく教師データを蓄積することで、AI開発のPDCAを高速に回し、目標精度をより速く達成できます。

  3. 国内の開発拠点で高いセキュリティ体制を構築
    データ・リソースロケーションは日本国内で、カントリーリスクが低く、アノテーションサービスも国内人材で対応可能です。また、情報セキュリティマネジメントシステム(ISMS)の国際規格である「ISO/IEC 27001:2013 / JIS Q 27001:2014」も取得しています。

FastLabelを使ってみる
FastLabelについてのドキュメント

モデルを作成する

FastLabelで、人物検出モデルを作成をしていきます。

1. アノテーションの準備をする

プロジェクトを作成します。今回は物体検出のモデルを作成していくので、画像 - 矩形のプロジェクトを作成します。

そして、画像をアップロードします。サイドバーより「タスク」を選択します。「タスクを作成」のボタンを押し、画像をアップロードするとタスクを作成ができます。タスクというのは、FastLabelで画像とアノテーションを管理するための一つの単位です。

最後に、アノテーションについての設定をするとアノテーションの準備が完了です。サイドバーの「アノテーションクラス」を選択、「アノテーションクラスを作成」ボタンを押します。今回は、personクラスの作成をしていきます。

プロジェクト作成ータスク作成ークラス作成.gif

2. アノテーションを開始する

アノテーションをしていきましょう。

サイドバーの「ダッシュボード」を選択肢、「アノテーションを開始」ボタンを押します。

以下動画のように、右のサイドバーより作成をしたいアノテーションクラスを選択肢、画像のアノテーションをしたい位置を選択していきます。

アノテーションを開始.gif

3. モデルを作成

i-PROのカメラモジュールで使用するモデルを作成します。

 
画面収録 2023-03-22 9.46.19.gif

学習が終了するとモデルをダウンロードすることができます。

モデルダウンロード2.gif

i-PROカメラモジュールでモデルを動かす

i-PROのカメラモジュールでFastLabelで作成したモデルを動かしてみましょう。

カメラモジュールについては「AIスターターキット i-PRO モジュールカメラ【camera kit/python/c++ / Ambarella SoC / OV2732】研究開発用 (MK-DVASTNP01)」を使用しております。

ここからは、i-PROのカメラモジュールについて簡単に説明をしていきます。

詳しくは、こちらのリンクをご参照ください。

i-PROカメラモジュールへ搭載するための準備

1. SDK・ConverterTool・開発者ライセンスを入手する

moducaカメラポータルサイトより、サインイン・ログインをしてSDK・ConverterTool・開発者ライセンスを入手します。(ConverterTool、開発者ライセンスについてはサポートに問い合わせが必要)

2.ConverterToolを用いて、FastLabelでエクスポートしたモデルをバイナリ形式に変換

ConverterToolのreadme.mdに沿って、FastLabelでエクスポートしたYOLO形式の物体検出モデルをバイナリ形式に変換します。

💡 YOLO形式をバイナリ形式に変換する際にONNX形式に一度変換する必要があります。

以下のコマンドでdockerのコンテナを作成・起動し、必要なモジュールをインポートします。

cat cvtool_v1.16-001.tar.bz2 | sudo docker import - adam-app-cvtool_v1.16
docker run -d -it --name adam-app-cvtool_v1.16-container adam-app-cvtool_v1.16 /bin/bash
sudo docker exec -it -u cvtool adam-app-cvtool_v1.16-container /bin/bash

sudo apt-get update
sudo apt-get install apt-transport-https 
sudo apt-get install ca-certificates 
sudo apt-get install curl 
sudo apt-get install gnupg-agent 
sudo apt-get install 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 

cd /home/cvtool
source setup_env.sh

cd conversion/onnx/yolov5

次に、dockerコンテナの中にモデルファイルを配置し、ONNX形式に変換します。

cd conversion/onnx/yolov5

// YOLOのgithubをクローンする
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
git reset --hard 702c4fa53eeaecfa5563c1441cb4a0c4aa8e908e
cd ..

// モデルファイルをdockerに配置
docker cp ローカルのパス adam-app-cvtool_v1.16-container:/home/cvtool/conversion/onnx/yolov5/yolov5/yolov5s.pt

python3 ./models/export.py --weights yolov5s.pt --img-size 416 --batch 1
mv yolov5/yolov5s.onnx sample/yolov5/models/
💡 YOLO形式からONNX形式への変換がうまくできない場合は、ローカルで最新のYOLOのレポジトリをクローンして、以下のコマンドで実行することができます。
python [export.py](http://export.py/) --img 416 --weights yolov5s.pt --include onnx --opset 11 --batch 1
💡 また、ONNX形式のモデルの出力層が「onxx::」で始まる場合、出力層の名前を変更する必要があります。出力層の名前の確認は、Netronというアプリケーションで行います。(別途インストールが必要)名前の変更については[こちらの記事](https://zenn.dev/akiya_souken/articles/directly-edit-onnx-file-in-text-format)を参照ください。

そして、ONNX形式のモデルをカメラのアプリケーションに載せるためのバイナリ形式に変換します。

cd /home/cvtool/conversion/onnx/yolov5/sample/yolov5/models
ls
// sample/yolov5/models/の配下にONNX形式のモデルが配置されているかを確認する。

cd /home/cvtool/conversion/onnx/yolov5
./onnx_conversion.sh /home/cvtool/conversion/onnx/yolov5/setting.conf

// ↑のコマンドの処理はかなり時間がかかる場合があります
// 実行の際はsetting.confの中身をモデルに合わせて変更する必要があります。
// (入力画像のサイズや出力層の名前など)
docker cp adam-app-cvtool_v1.16-container:/home/cvtool/conversion/onnx/yolov5/out/yolov5/MIX/yolov5s.onnx/yolov5_cavalry.bin ローカルのパス

3. SDKを用いて、バイナリ形式のモデル・開発者ライセンスを含めたアプリケーションをビルドする

VirtualBoxでUbuntuの環境を立ち上げます。こちらの操作はVirtualBoxのUbuntu環境で行います。

sudo apt purge 'virtualbox-guest-*'
sudo apt update
sudo apt install -y dkms

sudo apt-get update
sudo apt-get install -y g++
sudo apt-get install -y g++-multilib
sudo apt-get install -y libjpeg-turbo8-dev
sudo dpkg --add-architecture i386 
sudo apt-get update 
sudo apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386
sudo apt-get install -y multiarch-support
sudo apt-get install -y -y python3

Ubuntu環境のデスクトップにSDKを配置し、AdamAppSDKに含まれるAmbarella_Toolchain_Linaro_2018.08をインストールする。

<AdamAppSDK’s Installation Directry>/conf/development.key の箇所にmoducaポータルサイトより申請・ダウンロードしたキーを配置する。

sudo chmod +x ubuntuToolChain-201808
./ubuntuToolChain-201808

以下のコマンドを実行してビルドをします。(個別にアプリケーションをビルドすることも可能です。)

cd /home/{ホームディレクトリ}/デスクトップ/iPRO_CAMERA_SDK_V1_62

// 使いたいアプリケーションにモデルを配置する(私の場合はyuv_yolov5_appを使用)
source setup_env.sh ipro-ambaCV2X
cd src/adamapp
make

4. Googleの拡張機能より、カメラにアプリケーションをアップロードをする

ここからはVirtualBoxのUbuntu環境ではなく、ローカルのPCで行います。

拡張機能についてはSDKに添付をされているものを使います。SDK配下のtoolディレクトリのAdamControlExtensionをインストールします。

以下の画面が表示できれば、インストールに成功をしています。カメラのIPアドレスを入力してConnect を押し、Application List の箇所よりアプリをアップロードします。

スクリーンショット 2023-03-31 12.05.56.png

推論結果の表示

カメラのIPアドレスを叩いて、推論結果を確認するとこんな感じです!

スクリーンショット 2023-04-17 9.04.20.jpg
スクリーンショット 2023-04-17 9.03.59.jpg

今回はモデルをI-PROカメラに搭載して動かすことにピンを置いているため、精度にばらつきがございます。ご了承ください。

最後に

本記事では、FastLabelを使用して人物検出モデルを作成し、i-PROカメラーモジュールで実際に試しみました。意外と簡単にモデルをモジュールに搭載することができるので、一度試していただけると良いと思いました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?