AIによるハチの検出と追跡
農業におけるMixtile Edge 2キットの使用法:ミツバチの健康と生存に不可欠なミツバチ検出機能
農業におけるMixtile Edge 2キットの使用法:ミツバチの健康と生存に不可欠なミツバチ検出機能
MixtileはLinuxとAndroidベースの組み込みシステムに特化したプロのIoTハードウェアソリューションプロバイダです。
Mixtile Edge 2 Kitは高性能ARMシングルボードコンピュータです。2GBのLPDDR4 DRAMと16GBのeMMCフラッシュストレージ、または4GBのLPDDR4 DRAMと32GBのeMMCフラッシュストレージのバリエーションがあります。このシングルボードコンピューターには、Android 11がプリインストールされており、AndroidコンテナでUbuntu Linuxオペレーティングシステムが動作します。接続オプション(Bluetooth、4G/5G携帯電話、GPS、Lora、Zigbee、Z-Wave)も充実している。これらにはモジュールが必要だが、デフォルトでWi-Fi接続、ギガビット・イーサネット・ポート(RJ45)、シリアル・ポート(RS-485)が搭載されている。工業規格であるRS-485ポートが装備されており、頑丈なメタルケースに入っているので、工業プロジェクトで本当に使えそうだ。Mixtile Edge 2キットの電源には、公式のRaspberry Pi 5電源を使いました。
そこで私は、ミツバチの健康と生存に不可欠なミツバチ探知機を農業に使わないかというアイデアを思いついた。
このプロジェクトでは、カスタムYOLOv5ハチ検出モデルを学習するために、Mixtile Edge 2 Kitとカスタム写真データセットのセットアップを行う。
YOLOv5モデルは、そのデータ内のオブジェクトのクラスを学習するために、ラベル付けされたデータで学習されなければならない。
ビデオからデータを収集し、PCでモデルを学習させた。
モデルを訓練するために、私はpythonを使い、コマンドラインに入力した:
python train.py -img 640 -batch 16 -epochs 3 -data coco128.yaml -weights best.pt
私のトレーニング結果は以下の表にまとめられている:
この表から、画像が4つの検出クラスに分けられていることがわかる:
各クラスに100枚の画像(合計400枚)、合計1000枚のラベルを使用した。
各クラスの例を下の表にまとめた:
まず、プロジェクトのソフトウェア部分について書き、その後、認知を開始する手順について書く。
機械学習やディープラーニングの分野に以前から携わっている人なら、YOLOについてすでに耳にしたことがある可能性が高い。YOLOとは、You Only Look Onceの略である。YOLOは、シングルステージのディープラーニングに基づく物体検出器のファミリーだ。Python言語を使って書かれており、使用されているフレームワークはPyTorchだ。
コントロールしやすくするために、3つあるMixtile Edge 2 KitのUSB3ポートの1つにusbマウスを接続した。このプロジェクトにはUbuntu Linuxを使った。コンテナ上のUbuntuはデフォルトでMixtile Edge 2 KitのAndroidシステムにインストールされている。Mixtile Edge 2 Kit を起動すると、Android OS が起動します。Edge 2 Kit にリモートアクセスして、より簡単にコントロールしたかったので、このリンクから droidVNC サーバをインストールしました:
https://f-droid.org/en/packages/net.christianbeier.droidvnc_ng/.
Android 5+ APIを使用したAndroid VNCサーバーです。rootアクセスは必要ありません。
VNCサーバーを起動し、VNC Viewerで接続すると、以下のようなAndroid 11の画面が表示された:
その後、このリンクからSimpleSSHDをインストールした:
https://f-droid.org/en/packages/org.galexander.sshd/
SimpleSSHDは、DropbearをベースにしたSSHサーバーAndroidアプリです。ユーザーアクセス(ユーザーssh)、または完全なルートアクセス(ログインシェルを/system/xbin/suに設定する)が可能です(ルートが許可されている場合)。
SSHサーバーをインストールした後、putty SSHターミナルで接続した。ユーザー名とパスワードはroot/ルート。
com.hubware.ubuntuはコンテナ上のubuntuで、私たちはすぐにそれに接続している。
これから必要なソフトウェアをインストールする。
まず、コマンドを入力してUbuntuをアップグレードする必要があります: apt-get upgrade.
次に、pythonをタイプしてインストールした: apt-get install python.
また、以下のものも必要である。 ピップのパッケージインストーラです。 パイソン
まず始めに、YOLOv5リポジトリをクローンし、依存関係をインストールする。これで、オブジェクト検出トレーニングと推論コマンドを実行できるプログラミング環境が整う。
gitをインストールします: apt-get gitをインストールする
YOLOv5リポジトリをクローンする:
ギットクローン https://github.com/ultralytics/yolov5
YOLOv5フォルダに移動する:
cd yolov5
依存関係をインストールします:
pip install -r requirements.txt
YOLOv5以外にもインストールするpythonパッケージがたくさんあるので、私は25分待った。YOLOv5には、numpyパッケージ、scipy、OpenCVなどが必要だ。
puttyの接続とインストール手順は以下のようになる:
私のモデルbest.ptを ヨロフ5 のインストールフォルダをMobaXtermでSCP経由で取得します。
と入力するだけで、すぐに私のモデルをダウンロードすることができる:
ウィジェット https://github.com/sdizdarevic/beedetectionyolov5/raw/main/best.pt
また、オリジナルのビデオをダウンロードすることもできる:
ウィジェット https://sdizdarevic.typepad.com/cr/bees-orig.mp4
さて、最後のステップは検出である。
パイソン3 detect.py -weights best.pt -source
この行が何をするのかは、以下のステップで簡単に説明できる:
1. モデルをロードする
2. ビデオを読み込む
3. ビデオからフレームを一つずつ抽出する
4. 予測を適用し、結果を示す
検出のプロセスは以下のようになる:
最後の写真から最後の行では、どの時点でも検出されたハチの数を見ることができる。
検出を開始した後、以下のようなエラーが発生した場合:
SyntaxError:1 行目のファイル detect.py で 'xa3' で始まる非 UTF-8 コードがありますが、エンコーディングが宣言されていません;
の場合、最初の行を削除する必要があります。viテキストエディタでできる:
vi detect.py.
簡単な手順をまとめると以下のようになる:
デモ動画は、Mixtile Edge 2 Kitで検出が完全に終了したものです。出力ビデオはruns/detect/exp2にあります。
オリジナルビデオ
結果ビデオ:
最後に、重要なことですが、Mixtile Edge 2 Kitの電源を安全に切りたい場合は、シャットダウン(Rootなし)アプリケーションをインストールすることをお勧めします: https://play.google.com/store/apps/details?id=com.samiadom.Shutdown&hl=en.
テストした結果、Mixtile Edge 2 Kitは、産業用アプリケーション、IoTデバイス、スマートホームオートメーションから、有能なAIやエッジ検出まで、幅広いアプリケーションに対応するように設計されていることがわかった。低消費電力のデバイスで、多くの接続オプションが内蔵されている。
この素晴らしいハードウェアの平和を作り出し、特にMixtile Edge 2 Kitを送ってくれた素晴らしいMixtileの人々に感謝したいと思います。また、Mixtileはオープンソースの価値とソフトウェアを育てているので、このボードを使ってプロジェクトを作る人や企業がもっと増えると信じています。
全体として、ここに書いたようなプロジェクトを実施するには、このボードをお勧めする。
ギットクローン https://github.com/ultralytics/yolov5 cd ヨロフ5 pip install -r requirements.txt ウィジェット https://github.com/sdizdarevic/beedetectionyolov5/raw/main/best.pt ウィジェット https://sdizdarevic.typepad.com/cr/bees-orig.mp4 python3 detect.py --weights best.pt --source bees-orig.mp4
私は電気エンジニアで、石油・ガス業界でプロジェクトエンジニアとして働いています。余暇にはAI、コンピュータビジョン、組み込みシステム、シングルボードコンピュータ関連のプロジェクトに取り組むのが好きです。