Arduino UNO Qのサンプルアプリ調査(画像・音関連編)

下記の記事で、カメラに映った人が誰であるかを判別するために、サンプルアプリ「Image Classification」などに使用される「video_objectdetection」というBrickの学習要領について調べたが、本記事では、AIに関連するサンプルアプリ「Concrete Crack Detector」と「Glass Breaking Sensor」について調査したので紹介する。

(注)本記事の内容は正確性を保証するものではない。

(2025年12月25日 追記)YouTube動画を追加しました。  https://youtu.be/4EfQSl_UxBE


本記事で取り上げる2つのアプリの説明の前に、BricksとそのBricksを使うアプリをまとめたので先にそれを紹介する。

目次

Bricks一覧

各サンプルアプリ(Examples)で使用されているBricks(機能ブロック)の情報を、公式ドキュメント等の情報を補足してまとめた。以下に、Bricksの名称、その機能、およびそのBricksが使用されているアプリの名称を表形式で提示する。

Arduino UNO App Lab Bricks 一覧

Bricksの名称機能使われているアプリの名称
visual_anomaly_detectionコンピュータビジョンと機械学習を使用して、コンクリート表面のひび割れや構造的欠陥を検出する。Concrete Crack Detector
web_ui画像アップロード機能、信頼度制御、リアルタイム結果表示などを備えたWebインターフェースを作成する。(※アプリにより表示内容が異なる)Concrete Crack Detector
Glass Breaking Sensor
Image Classification
Linux Blink with UI
Object Detection
System Resources Logger
UNO Q Pin Toggle
Code Detector
Detect Objects on Camera
Face Detector on Camera
Home Climate Monitoring
Real Time Accelerometer Data
Person Classifier on Camera
audio_classification事前学習済みモデルを使用して音声ファイルを分類し、特定の音パターン(例:ガラスが割れる音)を検出・分析する。Glass Breaking Sensor
image_classification画像ファイル内のオブジェクトを分類する。Image Classification
object_detection画像ファイル内のオブジェクトを特定・分類する。Object Detection
dbstorage_tsstoreCPUやメモリの使用率、センサーデータなどを時系列データベースに保存し、保持・集計機能を提供する。System Resources Logger
Home Climate Monitoring
weather_forecastopen-meteo.com APIから天気データを取得し、シンプルな気象コードに変換する。Weather Forecast on LED Matrix
camera_code_detectionカメラを使用してバーコードやQRコードを検出する。Code Detector
dbstorage_sqlstore検出されたコードなどのデータをデータベースに保存する。Code Detector
video_objectdetectionカメラからのライブ映像フィード内のオブジェクトや顔を分類・検出する。Detect Objects on Camera
Face Detector on Camera
keyword_spotting音声パターンを検出し、一致した場合にイベントをトリガーする(例:「Hey Arduino」の検出)。Hey Arduino!
motion_detection加速度センサーのデータを処理し、機械学習を用いて特定の動作パターンを検出する。Real Time Accelerometer Data
video_imageclassificationカメラからのライブ映像フィードを使用してオブジェクト(人物など)を分類する。Person Classifier on Camera
arduino_cloudArduino Cloudへの接続を作成し、クラウドダッシュボードからの制御を可能にする。Blinking LED from Arduino Cloud

※ 一部のアプリ(Air Quality Monitoring AppBlink LED など)は、Bricksを使用せず、PythonスクリプトとArduinoスケッチ間の直接通信(Router Bridge経由)で動作している。

画像・映像内のオブジェクトの特定・分類に関するBrickが多いので、用途をAIに伝えて、最適なBrickがあるかを調べる必要がある。

サンプリアプリ一覧

Arduino UNO App Labに含まれるサンプルアプリについて、各アプリの概要、必要な追加パーツ(Arduino UNO Q本体以外)、およびメモリサイズが大きいモデル(4GB RAM)の推奨有無をまとめた一覧表を作成した。

アプリ仕様・推奨モデル一覧表

モデル選択の基準について:

  • 4GBモデル推奨: カメラ映像のリアルタイム処理(物体検出・分類など)を行うアプリは、メモリ消費量が大きいため、動作の安定性と速度の観点から4GBモデルが強く推奨されます。
  • 2GBモデルで十分: 静止画の処理、音声処理、テキストデータのログ記録などは、2GBモデルでも十分に動作します。
アプリ名称概要必要なパーツ・センサ (UNO Q以外)推奨モデル (条件)
Concrete Crack Detectorコンクリートのひび割れ画像を学習し、カメラ映像からひび割れを自動検出するシステム。USBカメラ (Webカメラ)4GBモデル推奨
(映像のリアルタイムAI処理のため)
Glass Breaking Sensorマイクで音を常時監視し、ガラスが割れる音を検知した際にアラートを出す。USBマイク2GBモデルで可
Image Classificationアップロードされた静止画ファイルをAIで分析し、何が写っているかを分類する。なし (PC等から画像をアップロード)2GBモデルで可
Object Detectionアップロードされた静止画ファイルをAIで分析し、物体の位置と種類を特定する。なし (PC等から画像をアップロード)2GBモデルで可
System Resources LoggerArduino UNO Q自体のCPU使用率やメモリ使用率を記録し、ダッシュボードに表示する。なし2GBモデルで可
UNO Q Pin Toggleブラウザ上のスイッチ操作で、Arduino UNO QのLEDやGPIOピンをON/OFFする。LED、抵抗 (動作確認用)2GBモデルで可
Code Detectorカメラ映像からQRコードやバーコードを読み取り、内容をデータベースに保存する。USBカメラ (Webカメラ)2GBモデルで可
(AI処理が比較的軽量なため)
Detect Objects on Cameraカメラのライブ映像から、映っている物体(人、車、動物など)をリアルタイムで検出し枠で囲む。USBカメラ (Webカメラ)4GBモデル推奨
(高負荷な映像AI処理のため)
Face Detector on Cameraカメラのライブ映像から「人の顔」を認識し、その位置を特定する。USBカメラ (Webカメラ)4GBモデル推奨
(高負荷な映像AI処理のため)
Home Climate Monitoring室内の温度・湿度等の環境データを取得し、時系列データベースに記録・可視化する。Arduino Cloud対応センサー
または USB/I2C接続の環境センサー
2GBモデルで可
Real Time Accelerometer Data加速度データをリアルタイムで取得・グラフ化し、特定の動き(ジェスチャー)を検出する。加速度センサー (USBまたはI2C接続)2GBモデルで可
Person Classifier on Cameraカメラに映っている人物が誰であるか(または属性)をリアルタイムで分類する。USBカメラ (Webカメラ)4GBモデル推奨
(高負荷な映像AI処理のため)
Weather Forecast on LED Matrixインターネットから天気予報を取得し、LEDマトリクスに天気アイコンを表示する。LEDマトリクスユニット
(MAX7219等、SPI/I2C接続のもの)
2GBモデルで可
Hey Arduino!「Hey Arduino」というウェイクワード(特定の呼びかけ)を検知して反応する。USBマイク2GBモデルで可
Linux Blink with UIWebブラウザ上のボタン操作で、ボード上のLEDを点滅させる基本的な制御アプリ。なし (内蔵LEDを使用)2GBモデルで可

補足事項

  • カメラ・マイクについて: Arduino UNO Q(Linuxベースの環境)では、一般的なUVC対応のUSB WebカメラUSBマイクがそのまま利用できるケースがほとんど。
  • センサー接続: 加速度センサーや環境センサーは、Arduino互換のピンヘッダ経由(I2C/SPI/GPIO)またはQwiicコネクタ等を経由して接続する必要がある。具体的なセンサー型番は、各Examplesのコード内で指定されているライブラリに依存する。

Concrete Crack Detector 調査

「Concrete Crack Detector」について下記の点を回答してください。
・カメラの条件
・適切な撮影条件(環境光、撮影距離など)
・学習の必要性
・ハードウェアまたはソフトウェアの調整の必要性

Gemini 3 Proの回答

Arduino UNO App Labの「Concrete Crack Detector(コンクリートひび割れ検知)」サンプルアプリについて、技術的な要件と運用条件を回答します。

このアプリは、あらかじめ学習済みのAIモデルを使用して、カメラ映像から「ひび割れ」と「正常」を判別する仕組みです。

1. カメラの条件

特別な産業用カメラは不要で、一般的なWebカメラが利用可能です。

  • 接続方式: USB接続 (UVC対応) のWebカメラ。
  • 推奨スペック:
    • 解像度: AIモデルの入力サイズは小さいため(例: 96×96や320×320など)、カメラ自体が4Kなどの高解像度である必要はありません。一般的なHD(720p)またはフルHD(1080p)のWebカメラで十分です。
    • オートフォーカス: コンクリート表面との距離が一定であれば「固定フォーカス」の方が安定しますが、手持ちで近づける場合はオートフォーカス機能があるものが便利です。

2. 適切な撮影条件

AIの精度を維持するために、以下の環境が推奨されます。

  • 環境光(ライティング):
    • 均一な明るさ: 影が落ちると、AIが「ひび割れ(黒い線)」と誤認識しやすくなります。直射日光よりも、曇りの日や拡散光(照明)の下での撮影が適しています。
    • 逆光禁止: カメラに向かって強い光が入らないようにしてください。
  • 撮影距離:
    • 30cm 〜 50cm程度: カメラの性能によりますが、対象物が画面の大部分を占める距離が理想的です。遠すぎてひび割れが「細い線」として映らない場合、検知できません。
  • 背景:
    • 検出対象(コンクリート)以外のもの(草、靴、道具など)が映り込むと誤検知の原因になります。画面いっぱいにコンクリートが映るようにフレーミングします。

3. 学習の必要性

基本的には不要です(すぐに使えます)。

  • プリセットモデル: このExampleには、すでに大量のコンクリート画像(正常な状態とひび割れた状態)で学習を済ませたAIモデルが含まれています。
  • ユーザー作業: アプリを起動するだけで、すぐに推論(検知)が始まります。ユーザーが画像を集めて学習させる工程は、このサンプルアプリを試す段階では発生しません。

4. ハードウェアまたはソフトウェアの調整の必要性

導入時に以下の微調整が必要になる場合があります。

  • ソフトウェア調整(しきい値の変更):
    • 信頼度(Threshold / Confidence): Web UI(操作画面)には、通常スライダーバーなどが用意されており、感度を調整できます。
      • 感度が高すぎる場合: 汚れや影を「ひび割れ」と誤検知します。
      • 感度が必要な場合: 細いひび割れを見逃します。
    • 現場の明るさやコンクリートの質感に合わせて、この数値をWebブラウザ上で調整する必要があります。
  • ハードウェア調整(フォーカス):
    • カメラのピントが合っていないと、ひび割れの特徴(エッジ)がぼやけて検知できません。マニュアルフォーカスのカメラを使用している場合は、設置距離に合わせてレンズを回して調整します。

まとめ

  • 準備: Arduino UNO Q (4GB推奨)、USB Webカメラ
  • 設置: 影ができない均一な照明下で、コンクリートにカメラを向ける。
  • 操作: 学習作業は不要。Webブラウザの画面を見ながら、誤検知しないギリギリのラインに「感度」をスライダーで調整するだけで運用可能です。

このアプリは役に立ちそうですか。目視で判別しにくいひび割れを、このアプリを使えば検出できそうですか。実績はありますか。

Gemini 3 Proの回答

結論から申し上げますと、このアプリは「定型業務の自動化(ロボットへの搭載など)」には非常に役立ちますが、「熟練者の目視検査を超えるような超高性能な分析」を期待するのは難しいと言えます。

具体的に、ご質問の3点について回答します。

1. 目視で判別しにくいひび割れを検出できますか?

基本的には「できません」。

このアプリの検出能力は、AIの性能よりも「接続するカメラの性能(レンズと解像度)」と「照明」に依存します。

  • 人間の目と同等以下: 一般的なWebカメラを使用する場合、人間がパッと見て「ひび割れがある」と分かるレベルのものは検出できますが、人間が目を凝らさないと見えないようなヘアクラック(微細なひび割れ)は、カメラの解像度が足りず、画像上で「線」として映らないため検出できません。
  • マクロレンズを使えば可能性あり: Webカメラに拡大レンズ(マクロレンズ)を付け、接写に近い状態で撮影すれば、肉眼で見えにくいものを映し出せるため、検出できる可能性は上がります。

つまり、魔法のように見えないものが見えるようになるわけではなく、「画像に写っている線」を判定するツールです。

2. 役に立ちそうですか?(実用性について)

「スクリーニング(粗選別)」や「自動巡回」の用途では非常に役に立ちます。

  • 疲れを知らない: 人間はずっとコンクリートを見ていると集中力が切れますが、AIは24時間監視しても精度が落ちません。
  • ロボットへの搭載: ドローンやクローラロボットにArduino UNO Qを搭載し、自動で壁面を撮影させ、「怪しい箇所(ひび割れ判定が出た箇所)」だけをピックアップして、あとで人間が詳しく検査する、という使い方が最も現実的で効果的です。

3. 実績はありますか?

この「Concrete Crack Detector」という特定のアプリ(サンプルコード)自体は、あくまで「技術デモ(教育・実験用)」であり、実際の建設現場で公式な検査ツールとして採用された実績がある製品ではありません。

ただし、このアプリで使われている技術(画像認識AIによるインフラ点検)そのものは、すでに多くの建設コンサルタントやドローン点検サービスで実用化されている、信頼性の高い技術です。

このアプリのAIモデルは、学術的によく利用される「Concrete Crack Images for Classification」などの公開データセット(40,000枚以上の画像)で学習されていることが多く、「適切な撮影条件下」であれば90%以上の高い正解率を出すことが研究レベルでは実証されています。

結論

このアプリは、「手持ちのWebカメラで、プロ並みの精密検査ができる魔法のツール」としては期待できません。

しかし、「自作ロボットに搭載して、ひび割れがありそうな場所を自動でリストアップさせる」という用途であれば、十分に実用的で強力なツールになります。まずは手持ちのWebカメラで、どの程度の「細さ」まで映るか試してみるのが良いでしょう。

工場のラインに組み込んで、商品のひび割れを検出させる用途には、そのひび割れを学習させた別アプリが必要ということですね。

Gemini 3 Proの回答

はい、その通りです。「コンクリートのひび割れ」を学習したモデルを、そのまま工場の製品(金属、プラスチック、食品など)に使うことはできません。

工場のラインで自社製品の検査を行いたい場合は、「その製品の正常な状態」と「不良(ひび割れ)の状態」を学習させた、独自のAIモデル(頭脳)に差し替える必要があります。

なぜそのまま使えないのか、そしてどうすれば実現できるのかを解説します。

1. なぜ「コンクリート用」ではダメなのか

AIは「ひび割れの形」だけを見ているわけではなく、「背景の質感」との組み合わせを見ています。

  • コンクリート用AIの認識: 「ザラザラした灰色の背景」にある「黒い線」=ひび割れ
  • 工場の製品(例:金属部品): 「ツルツルして光沢がある背景」にある「ひび割れ」

背景が違うと、AIはそれが何かわからなくなります。また、工場の照明が反射してできる「光の筋」を「ひび割れ(白い線)」と誤認することもあります。

2. 工場ライン向けのおすすめ手法:「異常検知 (Anomaly Detection)」

工場で不良品検出を行う場合、実は「ひび割れを見つける学習(物体検出)」よりも、「正常な状態を覚える学習(異常検知)」の方が向いているケースが多いです。

先ほどのBricks一覧にあった visual_anomaly_detection という機能ブロックがまさにこれに該当します。

手法仕組み工場でのメリット・デメリット
物体検出
(Object Detection)
「ひび割れ画像」を大量に集めて、「これがひび割れだ」と教える。デメリット: 工場のラインでは、不良品(ひび割れ品)を何百個も集めるのが大変です。また、学習していない「新しい傷」には反応できません。
異常検知
(Anomaly Detection)
「良品(正常な製品)」の画像だけを大量に学習させ、「これと違うもの」をすべて「異常」と判定させる。メリット: 良品はいくらでも流れてくるので学習データが集めやすいです。未知の汚れや、想定外の欠けも「異常」として弾くことができます。

3. 実現するためのステップ

Arduino UNO Qを使って工場のライン用アプリを作る場合、手順は以下のようになります。

  1. データの収集:
    • Arduino UNO Qにカメラを繋ぎ、ライン上を流れる「良品」の画像を数十枚〜百枚程度撮影して保存します。
  2. 学習 (Edge Impulse等のツールを使用):
    • 撮影した画像をPCに取り込み、AI作成ツール(Arduinoと親和性の高い「Edge Impulse」などが一般的)にアップロードします。
    • 「これが正しい形(良品)」であると学習させ、モデルファイルを作成します。
  3. アプリの書き換え:
    • 「Concrete Crack Detector」のアプリの構造(カメラから画像を取り込む→AIで判断する→結果を出す)はそのまま使えます。
    • 中身のAIモデルファイルだけを、ステップ2で作った「自社製品用モデル」に入れ替えます。

4. 導入時の注意点(工場のライン特有の課題)

工場のラインに組み込む際は、以下のハードウェア的な課題をクリアする必要があります。

  • シャッタースピードとブレ:
    • ラインが高速で動いている場合、カメラの画像がブレてしまい、ひび割れが見えなくなります。
    • 対策: 製品がカメラの下に来た瞬間にラインを一時停止させるか、非常に明るい照明を当ててシャッタースピードを速くする必要があります。
  • 照明の管理:
    • 外光(窓からの光)が変わるとAIの判定が狂います。
    • 対策: カメラと検査対象をボックスで覆い、常に一定の照明(LEDリングライトなど)が当たるようにします。

結論

「アプリ(プログラムの骨組み)」は再利用できますが、「モデル(脳みそ)」は自社製品の画像を使って作り直す(学習させる)必要があります。

もし手元に「良品」がたくさんあるなら、visual_anomaly_detection(異常検知) のアプローチで学習させるのが、最も近道で成功率が高い方法です。

Glass Breaking Sensor 調査

「Glass Breaking Sensor」について下記の点を回答してください。
・マイクの条件(付属品含む)
・適切な設置条件(設置環境、ガラスからの距離など)
・学習の必要性
・ハードウェアまたはソフトウェアの調整の必要性

Gemini 3 Proの回答

Arduino UNO Q向けの「Glass Breaking Sensor(ガラス破損検知センサー)」アプリについて、技術的な要件と運用条件を回答します。

このアプリは、audio_classification(音声分類)というBrickを使用しており、マイクから入ってくる音の波形をリアルタイムで解析し、「ガラスが割れる音」の特徴パターンと一致するかを判断します。

1. マイクの条件(付属品含む)

Arduino UNO QはLinuxベースのボードであるため、PCと同じようにUSB機器の扱いに長けています。

  • 接続方式: USBマイクの使用が最も簡単で推奨されます。
  • 指向性: 「全指向性(オムニディレクショナル)」のマイクが強く推奨されます。
    • 理由: ガラスが割れる場所(窓やショーケース)がマイクの正面にあるとは限らないため、360度あらゆる方向の音を拾える必要があります。単一指向性(YouTuber用など)のマイクだと、マイクの背後でガラスが割れても反応しない恐れがあります。
  • 周波数特性: ガラスが割れる音は高周波成分(高い音)を多く含むため、高音域までしっかり拾える一般的な会議用USBマイクなどが適しています。
  • 付属品: 特になし。ただし、風が当たる場所(エアコンの直下など)に置く場合は、風切り音を防ぐスポンジ(ウィンドスクリーン)があると誤検知を減らせます。

2. 適切な設置条件

「音」を扱うため、カメラ以上に環境の影響を受けます。

  • ガラスからの距離:
    • 推奨: 半径 3m 〜 5m 以内
    • 家庭用・会議用の安価なUSBマイクの場合、あまり遠いと「環境ノイズ」に埋もれてしまい、AIが特徴を掴めません。部屋の中央や天井など、見通しの良い場所に設置するのが理想です。
  • 障害物:
    • 厚手のカーテンやパーティションは高音を吸収してしまいます。マイクとガラスの間に遮蔽物がない状態(Line of Sight)が理想です。
  • 環境ノイズ(静粛性):
    • テレビや音楽: 激しいアクション映画の音や、シンバルの音などは「ガラスの音」と周波数特性が似ているため、誤検知の原因になります。
    • 生活音: 鍵束を落とす音(ジャラッという音)もガラスの音に似ているため、AIが迷う原因になります。静かなオフィスや、夜間の店舗などでの使用が適しています。

3. 学習の必要性

基本的には不要です。

  • プリセットモデル: このアプリには、標準的な「ガラスが割れる音」を大量に学習させたAIモデルが組み込まれています。
  • 注意点(特殊なガラス): 一般的な窓ガラスやコップが割れる音には反応しますが、以下のような特殊なケースでは反応しない可能性があります。
    • 合わせガラス(車のフロントガラス等): 割れても飛び散らず、「バシャーン」という高い音が鳴らずに「ベコッ」「メリメリ」という低い音が鳴る場合、学習済みモデルの想定と異なるため検知できない可能性があります。これを検知したい場合は、別途「合わせガラスの割れる音」で学習(追加学習)させる必要があります。

4. ハードウェアまたはソフトウェアの調整の必要性

導入時に「誤検知(False Positive)」を防ぐための調整が重要になります。

  • ソフトウェア調整(感度/しきい値):
    • Web UI上で「Threshold(しきい値)」「Sensitivity(感度)」を調整します。
    • 初期設定のままだと、少し大きな物音(咳払い、ドアを閉める音)で反応してしまうことがあります。実際に現場で「手を叩く」「鍵を振る」などの音を立ててみて、それらに反応しないレベルまでしきい値を上げる調整が必要です。
  • ハードウェア調整(入力ゲイン):
    • PCの設定でマイクの「入力ボリューム」が適切か確認してください。音が小さすぎると検知できず、大きすぎて音が割れる(クリッピングする)と、AIは正しい波形として認識できません。
  • 誤検知対策のロジック:
    • (応用)もし実用化を目指すなら、「0.5秒以内に2回以上検知したらアラートを出す」といったロジックをプログラム側に追加することで、単発のノイズによる誤報を減らす調整が有効です。

まとめ

  • 推奨機材: 安価な全指向性のUSB会議用マイク
  • 設置: 窓から数メートル以内の、遮蔽物がない場所。
  • 運用: 学習は不要だが、「鍵の音」や「テレビの音」で誤作動しないか、Web UIで感度(しきい値)を微調整する作業は必須です。

「Glass Breaking Sensor」は一般的なガラスが割れる音を検知するアプリですが、Arduino UNO Qに一般的に音を学習させる方法について教えてください

Gemini 3 Proの回答

Arduino UNO Q(および一般的なArduinoボード)に独自の音(特定の機械の異音、目覚まし時計の音、特定の呼びかけなど)を学習させるには、「Edge Impulse(エッジインパルス)」というクラウド開発ツールを使用するのが標準的かつ最も簡単な方法です。

Arduino App LabのBricksであるaudio_classificationも、裏側ではこの仕組みで作られたモデル(頭脳)を使用しています。

独自の音を学習させる一般的な手順(ワークフロー)は以下の通りです。

全体の流れ(4ステップ)

  1. データ収集: マイクで「検知したい音」と「それ以外の音(ノイズ)」を録音する。
  2. 設計: 録音した音をAIが理解できる形(スペクトログラム)に変換する設定を行う。
  3. 学習: クラウド上でAIモデルにデータを読み込ませ、パターンを覚えさせる。
  4. 実装: 完成したモデルファイルをダウンロードし、Arduino UNO Qのアプリに入れる。

ステップ1:データ収集(Data Acquisition)

AIを作る上で最も重要な工程です。PCまたはスマホを使って録音します。

  • 検知したい音(ターゲット):
    • 例:「ベルの音」を検知したいなら、実際にベルを鳴らして録音します。
    • ポイント: 1回だけでなく、距離を変えたり、叩き方を変えたりして、バリエーションを持たせて最低でも数分間分(50サンプル以上)録音します。
  • 検知したくない音(ノイズ/背景音):
    • 重要: 「静寂」だけでなく、「話し声」「足音」「エアコンの音」など、その環境で鳴りそうな「ターゲット以外の全ての音」を録音します。これがないと、AIは何でもかんでも「ベルの音」と間違えてしまいます。

ステップ2:設計(Impulse Design)

Edge Impulseの画面上で、音を画像のように変換する処理を設定します。

  • スライシング: 長い録音データを、1秒や2秒ごとの短いクリップに切り分けます。
  • 特徴抽出(DSP): 音声を「スペクトログラム」という、音の高さと強さを色で表した画像データに変換します。
    AIは音を「耳で聞く」のではなく、この「スペクトログラムの模様を見る」ことで判断しています。

ステップ3:学習(Training)

「ニューラルネットワーク」の設定を行い、学習ボタンを押します。

  • 自動学習: 近年のツールは優秀なので、細かい設定をしなくても、データさえ良ければ数分で学習が完了します。
  • 精度の確認: 学習が終わると「正解率 95%」のように結果が出ます。ここで精度が低い場合は、ステップ1に戻ってデータを増やします。

ステップ4:実装(Deployment)

学習済みモデルをArduino UNO Qで使える形に書き出します。

  1. Edge Impulseから「TensorFlow Lite (.tflite)」形式のモデルファイルを選択してダウンロードします。
  2. ダウンロードした .tflite ファイルを、Arduino UNO QのApp Labアプリフォルダ内にある既存のモデルファイル(例: glass_breaking_model.tflite など)と置き換えます。
  3. アプリの設定ファイル(JSONやPythonスクリプト)に記載されている「検知するクラス名(ラベル)」を、新しく学習させた名前(例: bell_sound)に書き換えます。

うまく学習させるコツ

  1. 「その他」クラスを作る:
    • 特定の音以外をすべて「Unknown(不明)」または「Noise(ノイズ)」というクラスに分類するように学習させると、誤検知が激減します。
  2. 実際の環境音を混ぜる:
    • 静かな部屋で録音したきれいな音だけでなく、実際に使う現場のザワザワした音をバックグラウンドノイズとして混ぜて学習させると、現場に強いAIになります(Edge Impulseにはこの「ノイズ合成機能」があります)。
  3. マイクを合わせる:
    • 学習時に使うマイクと、実際に運用時に使うマイクは、できるだけ同じ機種(または同じ周波数特性のもの)を使うと精度が上がります。

この手順を踏むことで、「ガラスが割れる音」だけでなく、「工場のプレス機の異音」や「赤ちゃんの泣き声」など、あらゆる音を検知する専用アプリを自作することができます。

誤検知を減らして検知精度を向上させるための調整に手間がかかりそうなので、闇雲に調整するよりも、AI立ち会いのもと調整の方向性を指示してもらいながら調整するのがいいかもしれない。

目次