AI Dynamics Japanの「Builder」で F1ミニカーを分類するAIアプリを作ってみた

# 概要
AI Dynamics Japanは、エッジデバイス向けアプリ開発に注力するスタートアップです。

AIアルゴリズム内製ツール[「__Builder__」](https://aidynamics.jp/services/builder)は、SORACOMのAIカメラ[「 __S+ Camera__ 」](https://soracom.com/ja-jp/service/spluscamera/)向けAIアプリをノーコードで作成できるクラウドサービスです。Pythonコード等を一切書くことなく、GUI操作のみでAIアプリの作成・実装が可能です。

__Builder__ は、2022年5月現在、β版として提供中、無料で使えます：https://aidynamics.jp/services/builder

# Builderを使用したAIアルゴリズムの作成手順

例として、F1ミニカー判別AIアルゴリズムを、__Builder__ で作ってみたいと思います。 以下の6つのステップを踏みました：
 1.   F1ミニカーの写真を集める
 2.   画像中のF1ミニカーを枠で囲む（アノテーション作業）
 3.   教師データを __Builder__ にアップロードする
 4.   AIアルゴリズムを __Builder__ で学習させる
 5. __Builder__ からAIアルゴリズムをダウンロードする
 6.   AIアルゴリズムをS+ Cameraに転送する
 
### 1. F1ミニカーの写真を集める
![F1_toy_photos4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/41ff56b9-9c28-9bfd-1132-f0f75a182bd8.png)

今回は、5種類のF1ミニカーを用意し、これらを様々なアングルから撮影しました。
* Mercedes W10
* Ferrari F10
* Ferrari SF90
* Renault B201
* Minardi PS01

一般に、一定の基準を満たす精度のAIを作るためには、判別単位（クラスといいます）毎に1000枚程度の画像を用意することが必要と言われています。今回は少々譲歩し、各車種300程度撮影、合計1500枚程度の写真を集めました。


### 2.画像中のF1ミニカーを枠で囲む（アノテーション作業）
![F1_toy_photos2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/00bb145f-72e9-d1a0-48c7-53f9b95bffe3.png)

集めた画像には様々なF1ミニカーが写っています。各写真に対し、「ここに写っているのがXXXです」といった指定をします。具体的には枠（バウンディングボックスといいます）で囲んでいくのですが、この作業を「アノテーション」といいます。

今回は、アノテーション作業にマイクロソフト製のフリーウェア「VoTT」を使用しました。「VoTT」のダウンロードおよびアノテーション作業方法は[__こちら__](https://aidynamics.jp/services/vott_manual)をご覧ください。

アノテーション作業を経て出来上がったデータを「教師データ」といいます。


### 3. 教師データを Builderにアップロードする

![2022-05-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/d83c8419-e43e-a12d-6a27-c003d416ffb8.png)
はじめにアカウントを作る必要があります。メールアドレスとパスワードを設定すると、アカウントは簡単に作れます。
![2022-05-15 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/af8e797c-1a82-1d01-9a31-5181e48189ed.png)
「新しいモデルを作成」のボタンを押し、
![2022-05-15 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/a061b41c-00a1-e0e1-efd9-1a0979c16b26.png)
「モデル名」を入力、「次へ」を押し、
![2022-05-15 (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/04794b5e-7cc7-cd5a-24d0-726bce8a57a3.png)
「学習を開始」を押しましょう。
![F1_toy_photos5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/a69867d1-fa4f-30b1-4704-f216ff2f7ce0.png)
教師データのBuilderへのアップロードは、VoTTの出力フォルダを __Builder__ にドラッグ・アンド・ドロップすれば、完了です。

### 4. AIアルゴリズムをBuilderで学習させる
![two_clicks.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/5ff5fdc7-6ec2-24e3-79fc-d75b1e7ccfa2.png)

教師データをクラウド環境にアップロードすると、__Builder__ が、自動的にAIアルゴリズムの作成を開始します。__Builder__ の特徴として、煩わしい環境構築やパラメータの設定は、一切必要ありません。2時間ほど待つと、AIアルゴリズムが完成します。


### 5. BuilderからAIアルゴリズムをダウンロードする
![count_or_alert.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/2842ab9c-d5c3-b13d-2f5c-766a51fbce86.png)

__Builder__ は、現在2種類のAIアルゴリズムに対応しており、ダウンロード時に選択します：

* 「物体カウント」：カメラが定期撮影し、F1ミニカー数をクラウド報告
* 「物体検知アラート」：カメラがF1ミニカーを新たに検知すると、メール通知

AIアルゴリズムファイル（.tgz形式）のダウンロード時に、いずれかの種類を選択します。


### 6. AIアルゴリズムをS+ Cameraに転送する
AIアルゴリズムファイルのダウンロード後、AIアルゴリズムが含まれる.tgzファイルをSORACOM AIカメラS+ Cameraにアップロードすると、「F1ミニカー分類アプリ」が動作を開始します。

AIアルゴリズムのS+ Cameraへの転送は、
* AIアルゴリズムのSORACOM Harvest Filesへのアップロード
* SORACOM Mosaic Consoleを通じた、S+ Cameraへのインストール

の手順を経ます。


# 結果
AIカメラの前にF1ミニカーを置くと、こんな感じの結果が出力されます。
いかがでしょうか？ AIアルゴリズム内製ツール[「__Builder__」](https://aidynamics.jp/services/builder)、是非お試しください！
![F1_toy_photos3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2589602/96971483-5ef0-79db-714f-9455a3e90915.png)