熊撃退プログラム

Contents

1

はじめに

このプログラムは、熊などの害獣を検知するとPush通知と共に音を出して害獣を追い払います。

プログラムの内容としては、標準搭載のAI検知プログラムと同じですが、検知した際にPush通知だけでなく、予め用意したWAVファイルを指定した時間繰り返し再生する、という処理が追加されています。

GitHub GitHubで公開中
2

音声出力対応Dockerイメージ

AIBOX OSには、標準でYOLO11をNCNNで実行できるDocker Imageが登録されています。

docker images
REPOSITORY TAG aicap/arm64/ultralytics 1.0.250923 aicap/arm64/ultralytics 1.0.250923-audio-bt

このイメージは、Ultralyticsが公開しているYOLO11用のイメージをベースに、ncnn変換・実行に必要なモジュールのインストールや、aicapコマンドを実行するための環境構築処理が行われていますので、 AIBOX OS上で稼働させるYOLO11を使用した基本的な検知プログラムは、このイメージから起動したコンテナ上で動作させることが可能になっています。

バージョン番号のみのTag(1.0.250923)がついたイメージは、他には何も追加されていないベースイメージです。

バージョン番号の後ろに[-audio-bt]がついたイメージ(1.0.250923-audio-bt)は、ベースイメージに、オーディオ再生に必要なモジュールとBluetoothデバイスアクセスに必要なモジュールが追加されたものになります。

今回実行する熊撃退プログラムは、YOLOによる物体検知の他に、音声を出力するための機能が追加で必要になりますので、オーディオ再生機能が入った「1.0.250923-audio-bt」の方を使用します。

GitHub 音声出力対応イメージ作成用のDockerfileはこちら

3

プログラムの差し替え方法

基本的なファイル構成は、標準搭載のAI検知プログラムと同じです。
(音声ファイルalert.wavが追加されています)
ただ、docker-compose.ymlの内容は、使用するDockerイメージが音声対応のイメージに変更したり、USB接続したサウンド出力デバイスへのアクセス許可をDockerコンテナに付与するパラメータが追加されています。
標準搭載AI検知プログラムから変更・追加があるファイルは以下になります。

ファイル名説明
extmod.py物体検出を行うPythonのプログラム
alert.wav検知時に鳴らすサウンドファイル
docker-compose.ymlDockerコンテナの構成・設定をまとめたファイル

これらのファイルを更新するスクリプトを用意してあります。

AIBOXにログインし、下記のコマンドを実行して、GitHubで公開されているupdate.zipをダウンロードし、解凍後に、update.shを実行すると、必要なファイルが一括で更新できます。

$ wget https://github.com/daddyYukio/AICAPTURE/raw/refs/heads/main/programs/bear_repellent/update.zip

更新できたら、USB接続のサウンド出力デバイスをAIBOXに接続して、再起動してください。

デフォルトでは検知物体は熊に設定されていますので、熊の写真などをカメラに撮して見てください。
検知されるとスマホへのPush通知と同時にアラート音が10秒間なります。

4

検知結果のリアルタイムプレビュー

検知の結果をリアルタイムに確認するには、検知結果のプレビュー機能を有効にしてください。

ウェブブラウザで検知結果をリアルタイムに確認できるようになります。

5

検知プログラムの解説

検知プログラムの解説は、Zennに記事として投稿していますので、そちらを参照してください。

Zenn 【AI CAPTURE】熊撃退プログラム
6

検知する物体の変更やアラート音の変更・鳴らす時間の修正

検知する物体の変更方法や検知精度の修正方法は、標準搭載AI検知プログラムと同じです。

検知した際に鳴らすアラート音は、プログラムファイルと同じ場所に保存されたalert.wavです。
リピート再生されるので、短めのWAVフォーマットのファイル担っています。
鳴らす音を帰る場合は、このalert.wavファイルを置き換えてください。
※フォーマットはWAVフォーマットです。

また、鳴らす時間は、下記の外部変数で定義されています。


# 再生継続時間(秒)
WAV_PLAY_TIME_SEC = 10