こんにちは、こいけです。お久しぶりの投稿です。
弊社では、本社に常備してあるペットボトルのミネラルウォーターを社員が自由に飲めるようになっています。本数が少なくなったら、本社によく出社している社員がSlackで社長に連絡して注文してもらうという流れになってます。
ただ、連絡忘れでペットボトルの在庫が0になる時もあったり、Slackでの連絡いつも面倒そう・・・と考えた私は、通知を自動化できないかと検討してみました。
ということで、物体検出AIのYOLO(You Only Look Once)を使って、ペットボトルの水が少なくなったらSlack通知をするという仕組みを検討してみました。
とはいえ、ラズパイなどの必要機材をいきなりそろえる前に、まずはPCで検証してみることにしました。
・・・物体検出AIとは?
その名の通り、映像や写真の中に特定の物体がどこにあるかを教えてくれるAIのことです。YOLOも物体検出AI技術の1つで、Ultralyticsという会社が公開しているものになります。Ultralytics社の会社ページにYOLOの活用事例が載っているので良ければご参考に。→https://www.ultralytics.com/ja/customers
検証開始
我が家は炭酸水のペットボトルを定期購入しているのでそちらで検証してみます。
ちなみにYOLOには「学習済みモデル」と呼ばれる、あらかじめ用意されているものに関しては自前で学習しなくても識別できるようになっている仕組みがあります。学習済みモデルの中に「bottle」という項目があるので、ペットボトルをちゃんと検知してくれる・・・はず。(瓶のボトルしか認識してくれなかったらどうしよう)
まずはペットボトルの写った画像を用意します。
次に以下のようなPythonコード書いて実行し、画像を読み込んでYOLOに推論させます。(imgに上記の画像をbottle.jpgという名前で配置してます)
from ultralytics import YOLO
# モデルを読み込む
model = YOLO("yolov8n.pt")
# 推論
results = model("img/bottle.jpg")
# 結果保存
results[0].save(filename="img/detected.jpg")
お、問題なく検知してくれていそうですね。
次回は写真ではなくカメラから取り込んだ映像を使い、本数を数えて閾値を超えていたらSlackに通知というところを作っていこうと思います。道のりはまだまだ長い。
続く。