コンテンツにスキップ
【vol.4】はじめての電子工作⊹₊⋆ Arduino Uno Qで自分の服を見分けるAIを作る

【vol.4】はじめての電子工作⊹₊⋆ Arduino Uno Qで自分の服を見分けるAIを作る

こんにちは!アルバイトの中川です♩

前回の記事では、Arduino Uno Qを使って簡単な画像認識を試してみました!

こんな感じ

この連載では、電子工作未経験の私が成長していく姿をお届けできればと思っています!!

これまでの記事

【vol.1】はじめての電子工作⊹₊⋆ Arduino Uno R4 WiFiでLEDを光らせる

【vol.2】はじめての電子工作⊹₊⋆ Arduino Uno R4 WiFiで傘忘れないよセンサーを作る

【vol.3】はじめての電子工作⊹₊⋆ Arduino Uno QでAI画像認識を試してみる

前回は簡単な画像認識を試すことができました!オリジナルの画像認識AIを作ってみたいので、今回はArduino Uno Q で自分の服を見分けるAIモデルを作ってみようと思います♩

✴︎使用機器

✴︎作業環境

  • PC(MacBook Air)
    CPU:Apple M5
    RAM:32 GB
    OS:macOS 26.4.1

何事も0から作るのは難しいですよね……ご安心ください!前回の記事で扱ったようにすでにある例を少し変更して画像認識できるようにしていこうと思います!

USBハブには、こんな感じで接続してみてください!上部白いコードはPCに、黒いコードは電源にさしてください!スマートフォンのカメラを使う場合には、Hubを使わずにArduino Uno QをそのままPCに繋ぐだけで大丈夫です!

目標⸝⋆ 服を2着学習させて画像認識モデルを作る

今回は、前回使ったAIモデルをそのまま使うのではなく、自分で撮影した服の写真を使ってオリジナルのAIモデルを作ります!

まずはArduino App Labを開きます。前回は、用意されているExampleのAIモデルをそのまま使って画像認識を試しましたが、今回は自分のモデルを使いたいので、Inspirationsの「Detect Objects on Camera」をコピーして編集していきます。(webカメラではなくスマートフォンのカメラを利用する場合は、Inspirationsの「Detect Objects on  Smartphone Camera」を使ってください!)

Runの右のコピーマークをクリックするとこの画面になるので、適当に名前をつけて保存しましょう!Appsには自分のプロジェクトが保存されているので、今作ったプロジェクトを選択します。

画面左のBricksからVideo Object DetectionをクリックしてAI modelsを開くと、このような画面になります。

すると、「Train New AI Model」という項目があります。ここをクリックすると、オリジナルのAIモデルを作成することができます!

初めて使う場合は、Arduinoのアカウントでサインインし、AIモデル作成サービスの「Edge Impulse」と連携します。連携するとEdge Impulse Studioに進み、ここで学習データの登録やAIモデルの作成・学習を行うことができます。

今回は、自分が持っている服を撮影し、その画像を学習データとして使って、自分の服を見分けられる画像認識モデルを作ってみます!いきなり持っている服をすべて登録するのは大変そうなので、まずはお試しでトップスを2枚登録し、それぞれを判別できるようにすることを目標に進めてみます!

物体検出チュートリアルドキュメントはこちら

ここから失敗談です

「Data acquisition」から服を登録していきましょう!同じ服でも、角度や距離、背景などを変えながら複数枚撮影してデータを集め、UNO Qでどの程度服を判別できるのか検証していきます。

Edge Impulseへの画像の追加方法には、先に撮影した写真をまとめてアップロードする方法のほか、スマートフォンを接続してその場で撮影する方法もあります。私はスマートフォンも使いながらデータを集めてみました!そして、画像の中にある服を四角形で囲ってラベリングしていきます。

やってみた結果

嘘すぎる!!!FOMO物体検出では、中心の位置を示す小さな丸になるみたいです。

データを1着に対して30枚ほどしか写真を撮っていなかったことが原因だと考えたので、データを増やしましたがうまくいかず、撮影場所や構図、服の種類や色を変えてもうまくいきませんでした……

気を取り直して再スタートです.⊹˖ᯓ★. ݁₊

自力であれこれやるのをやめて、入門チュートリアルに向き合ってみることにしました

入門チュートリアルは、一番下のLaunch getting started tutorialから実行できます!チュートリアルでは、

  • tops1:30枚
  • tops2:30枚
  • unknown:30枚

というように、判別したい物体だけでなくどちらでもないもののデータも集めてモデルを作ります。さっきまでの失敗は、無関係なunknownをとることをしなかったのが敗因かもしれないです。着画だけだと判別できないことが多かったので床に平置きしたものも追加しました。

また、入門チュートリアルの方法では、基本的に画像全体に対してラベルを付けて判定します。しかし、私が最終的にやりたいのは、カメラに服を何着か同時に映して、それぞれを判別することなので、画面のここにtops1、ここにtops2がありますと認識してほしいです。そのため、最終的には再び物体検出用のモデルに変更して学習し直しました。

① Labeling methodを変更する

  • Edge Impulseのプロジェクトを開く
  • Dashboard の右側 Project info → Labeling methodをBounding boxes (object detection) に変更する

これは、画像全体ではなく、画像内のどこに物体があるかを四角形で指定して学習するための設定です。

② 服を四角形で囲ってラベル付けする

  • 左側のメニューから Data acquisition → Labeling queueで、服を四角形で囲ってtops1,top2などのラベル付けをします

複数の服が写っている画像では、それぞれを別々に囲ってラベルを付けます。

③ Impulseを作る

  • Impulse → Create Impulseを開きます

ここでは、AIに画像をどのように処理させ、どのような方法で学習させるかを設定します。

  • Processing blockを Imageにする
  • Learning blockを Object Detection (Images) にする

設定したら、Save Impulseで保存します

④ FOMOを選択する

  • 左側のメニューから Object detection を開く
  • Choose a different model から FOMO を選ぶ

FOMOは、画像の中にある物体の位置を検出するためのモデルです。一般的な物体検出のように大きな四角形をそのまま表示するというより、物体がある位置を中心点として検出するのが特徴です。

⑤ 学習する

設定ができたら、Save & Trainをクリックしてモデルを学習させます。
結果はこんな感じになりました!

ここで、Arduino App Labの方に作成したAIモデルが反映されなくなってしまい、大変だったので手順を説明します!右上のICチップのマークをクリックして、ターゲットとなるデバイスをArduino Uno Qに設定しておくのを忘れないでください!

次に、左側のメニューからDeploymentを開きます。Deploymentでは、作成したAIモデルを実際に使用するデバイス向けに変換します。Deployment targetをArduino Uno Qに設定して、Buildを実行します。Buildが完了したら保存します。

その後、Arduino App Labを一度終了して再起動します。再びBricks → Video Object Detection → AI modelsを開くと、作成したモデルが一覧に表示されているはずです!作成したモデルを選択したら、実際にRunしてみましょう!

こんな感じで実行できたら成功です!

Tops1とTops2が同じ画面上にあっても同時に判別できているのが確認できると思います˗ˏˋ ✩ ˎˊ˗⊹˚.⋆

まとめ

今回は、自分の服を学習したオリジナルのAIモデルを作り、Arduino Uno Qで実際に認識させるところまで挑戦しました!

次回はここからさらに進めて、天気・気温を組み合わせてみたいと思います。以前作った「傘忘れないよセンサー」ではWebから天気情報を取得しましたが、今回は気温などの情報を使って、「今日の気温なら、この服がおすすめ!」と提案してくれる仕組みを作れないか考えています。

果たしてArduino Uno Qは私の服選びを助けてくれるのでしょうかᐢ ᴗ ‧̫ ᴗ ᐢ次回もお楽しみに♩


✴︎ちょこっと用語解説

最後に、今回の記事で出てきた用語を簡単にまとめます!

Edge Impulse
センサーやカメラなどから集めたデータを使って、AIモデルを作成・学習・デバイス向けに変換できるサービスです。

ラベル(Label)
AIに、教えるためにつける名前です。今回は「tops1」「tops2」などの名前を付けました。

unknown
今回判別したい服のどちらにも当てはまらないデータです。「これはtops1でもtops2でもない」ということをAIに覚えてもらうために使いました。

画像分類(Image Classification)
画像全体を見て、「この画像は何か」を判定する方法です。

物体検出(Object Detection)
画像の中に「何が」「どこにあるか」を検出する方法です。

Bounding box
画像の中で認識したい物体を囲む四角形です。物体検出モデルでは、この四角形を使って「この場所にこの物体がある」とAIに教えます。

FOMO
Edge Impulseで利用できる物体検出モデルのひとつです。物体の位置を中心点として検出するのが特徴です。

Impulse
Edge Impulse上で、「画像をどう処理して、どんなAIモデルで学習するか」をまとめた処理の構成です。

Deployment
学習したAIモデルを、Arduino Uno Qなど実際に使用するデバイスで動かせる形に変換する工程です。

次の記事 【vol.3】はじめての電子工作⊹₊⋆ Arduino Uno QでAI画像認識を試してみる