機械学習エンジニアのhayakawaです。
弊社には社内で菓子パンを扱うミニ販売コーナーがございます。
私は好物のあんパンをよく買うのですが、他の社員にも人気があるのですぐ売り切れます。早い。
あんパンを多めに仕入れてもらいたいのですが、
欠品よりも売れ残りを嫌うパン購入担当社員を説得するには、
パンにかける熱意よりも、パンがいつ売り切れたかの統計が必要です。たぶん。
そこで
SORACOM S+ Camera(サープラスカメラ) (以下、S+ Camera)
という製品を使って簡単な在庫管理システムを組んでみました。
※弊社はS+ CameraのAIパートナーです。
S+ Cameraとは
S+ Cameraはソラコム社のエッジ処理カメラです。
この筐体に
- カメラ
- Raspberry Pi
- データ通信ボード+SIM
が入っています。
これにプログラムをデプロイすると、
電源を入れると撮影した画像を処理してSORACOM プラットフォームに送ったり、
何か別の通信(アラートとか)をすることができます。
カメラ向けにプログラムをデプロイするのもプラットフォーム経由でできます。
構成
構成、というほどの内容もないですが、こんな感じです。
一番上の
Torrentio Videoは、弊社の画像・映像解析AIソリューションです。
www.site.torrentio.tech
特定の物体検出などを、学習モデルの作成から推論まで、簡単に実現できるようになっています。
カメラ内にはRaspberry Piが入っており、
そこにはインストールされる"SORACOM Mosaic(プライベートベータ)"というエッジプロセッシングサービス上で
アプリケーションを動かすことになります。
流れとしては次のようになります。
- S+ Cameraがカメラで撮影
- Torrentio Videoカメラ画像を取得
- Torrentio Videoが画像内からパンの欠品を検知
- 欠品していたらSORACOMのデータ通信越しに通知
プログラム
まずデータサイエンスの基本作業、アノテーションのお時間です。
今回やりたいのは物体検知のタスクなので、画像内からパンの位置を長方形で指定する作業をひたすらにやります。
だんだんおなかがすいてきました。夕食前にやる作業ではない。
それが終わったらRaspberry Piでも動作可能な軽量モデルで転移学習。
プログラムから呼べるようにします。
また弊社は社内チャットにMS Teamsを採用していますので、
このプログラムの通知もMS Teamsに投げるようにしました。
最初、投稿を5分間隔にしたのですが、
「あんパンが欠品しています」「あんパンが欠品しています」「あんパン…」「あ…」
と1時間に10回以上のペースで延々とつぶやき続けることになってしまいました。呪いか。
作りたいのは在庫管理システムでありスパムBotではないので、
在庫に変化があったときだけ投稿するように改修しました。
物理
電源ケーブルをつなげばとりあえず動きます。
現在はトライアルパッケージ提供のため、
SORACOM ユーザーコンソールの方でSIMカードを登録する必要がありますが、
それさえ済んでいればデータ通信の準備が整います。
筐体が横倒しになっているのは、パンの棚が縦長なのに対して、カメラの撮影画像が横長だったからです。雑ですね。
なお取り付け台は、会社の倉庫にあったUSBディスプレイを載せる台にブックエンドをワイヤーでしばりつけた物です。雑ですね。
結果
で、冒頭のGIFのようになりました。
下のキャプションは、実際はMS Teamsに投稿されている内容です。
毎回、売り切れたものすべてがメッセージに載る仕様です。
なお、判定処理は正面からパンの有無だけを見るようにしました。
本来は在庫管理ですので残り個数をカウントしたかったのですが、
現状の社内のパンのキャビネですとパンと上の棚の隙間が狭すぎて上からの撮影できず、
今回はカウントはあきらめました。
実際のMS Teamsへの投稿はこんな感じです。
MS TeamsはWebhookをかんたんに構成できるので、楽に接続できました。
あとはこのチャネルをパン購入担当にフォローしてもらえば、売り切れ状況をすぐ把握してもらえます。
良い時代になりましたね。
感想
エッジ機器+カメラ+データ通信が1つの筐体に収まっているので、
電源さえつながれば場所を選ばないので便利です。
また、SORACOMプラットフォーム経由でS+ Cameraにデプロイする仕組みがあるので、
TorrentioVideoで学習したモデルを、遠くの機器ですぐ試せるのは良いと思いました。
今回は弊社のTorrentioVideoをインストールしましたが、
何をさせるかは自由に入れ替えられるので、
「会議室に予約時間を越えて居座っている社員を警告音で追い出すシステム」
「御手洗いの清掃中の札が消えたら教えてくれるシステム」
など、ニッチすぎて市販されていない用途のものでも気軽に自作できそうです。
色々と使ってみましょう。
Acroquest Technologyでは、キャリア採用を行っています。
- ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
- Elasticsearch等を使ったデータ収集/分析/可視化
- マイクロサービス、DevOps、最新のOSSを利用する開発プロジェクト
- 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長
少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。Kaggle Masterと働きたい尖ったエンジニアWanted! - Acroquest Technology株式会社のエンジニアの求人 - Wantedlywww.wantedly.com