FastLabelで学習したモデルをi-PROのモジュールカメラで使う
はじめに
こんにちは、FastLabel Developmentチームの爲西です。
今回は、FastLabelで作成したモデルをi-PROモジュールカメラで使用する方法について紹介をします!
FastLabelとは
FastLabelは、データセット購入、アノテーションツール、教師データ作成代行、MLOps構築を包括したアノテーションプラットフォームです。教師データの作成と改善を高速かつ正確に行うためのアノテーションツールと、高度人材によるきめ細かいアノテーションサービスにより、高品質な教師データを素早く提供できるのが特徴です。
これまで、建設・インフラ、不動産、製造業、医療、農業、水産業など、既存産業の課題をAIで解決している多くの企業にFastLabelを導入。従来、担当者自身やクラウドソーシングで教師データの作成を行っていた導入企業の担当者からは、「FastLabelの活用により、大幅なアノテーション作業時間短縮と、レビュー・管理コストの削減が実現できた」とご好評いただいています。
FastLabelの特長
-
直感的なUIで効率的なアノテーションを実現
端末へのインストール不要で、画像や動画、テキスト、音声などのアノテーションをウェブ上からすぐに開始できます。コピー&ペーストなどホットキーによる作業効率化の機能が豊富に備わっており、YOLO、COCO、PascalVOC、VoTT、labelme 形式にも標準対応しています -
深層学習を使用した自動化でコスト・期間を70%削減
ディープラーニングを使ったアノテーション作業の自動化によって、教師データ作成にかかるコストや期間を大幅に削減できます。人手による作業だけでなく、テクノロジーを活用し効率よく教師データを蓄積することで、AI開発のPDCAを高速に回し、目標精度をより速く達成できます。 -
国内の開発拠点で高いセキュリティ体制を構築
データ・リソースロケーションは日本国内で、カントリーリスクが低く、アノテーションサービスも国内人材で対応可能です。また、情報セキュリティマネジメントシステム(ISMS)の国際規格である「ISO/IEC 27001:2013 / JIS Q 27001:2014」も取得しています。
FastLabelを使ってみる
FastLabelについてのドキュメント
モデルを作成する
FastLabelで、人物検出モデルを作成をしていきます。
1. アノテーションの準備をする
プロジェクトを作成します。今回は物体検出のモデルを作成していくので、画像 - 矩形のプロジェクトを作成します。
そして、画像をアップロードします。サイドバーより「タスク」を選択します。「タスクを作成」のボタンを押し、画像をアップロードするとタスクを作成ができます。タスクというのは、FastLabelで画像とアノテーションを管理するための一つの単位です。
最後に、アノテーションについての設定をするとアノテーションの準備が完了です。サイドバーの「アノテーションクラス」を選択、「アノテーションクラスを作成」ボタンを押します。今回は、personクラスの作成をしていきます。
2. アノテーションを開始する
アノテーションをしていきましょう。
サイドバーの「ダッシュボード」を選択肢、「アノテーションを開始」ボタンを押します。
以下動画のように、右のサイドバーより作成をしたいアノテーションクラスを選択肢、画像のアノテーションをしたい位置を選択していきます。
3. モデルを作成
i-PROのカメラモジュールで使用するモデルを作成します。
学習が終了するとモデルをダウンロードすることができます。
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/
python [export.py](http://export.py/) --img 416 --weights yolov5s.pt --include onnx --opset 11 --batch 1
そして、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
の箇所よりアプリをアップロードします。
推論結果の表示
カメラのIPアドレスを叩いて、推論結果を確認するとこんな感じです!
今回はモデルをI-PROカメラに搭載して動かすことにピンを置いているため、精度にばらつきがございます。ご了承ください。
最後に
本記事では、FastLabelを使用して人物検出モデルを作成し、i-PROカメラーモジュールで実際に試しみました。意外と簡単にモデルをモジュールに搭載することができるので、一度試していただけると良いと思いました。