FutureStandard MAKERS

東京にある動画解析プラットフォーム「SCORER」の開発をしているスタートアップのブログです

SCORER SDK正式版リリース

 

はじめに

1月31日にラズパイとUSBカメラを使ってPythonで簡単に映像解析(顔検知とかバーコード読み取りとかAI物体認識とか)を使うことができるSCORER SDKをリリースしたので簡単に紹介します。

SCORERとは?

ラズパイにUSBカメラをつけてスマホから登録すると、クラウド上に映像を長期間ためたり、撮った映像に顔が映ってたりすると自動的に何秒見ていたかなどカウントしてくれるスマートカメラのシステムです。

使えるアルゴリズムが多岐にわたるため、アパレルショップのマネキンとかにつけて視聴率を測ったり、飲食店の込み具合を測定したり、パスポートの文字を読み取ったりといろいろなことに活用できたりします。最近はやりのディープラーニングを使った認識などもつかえます。

f:id:FutureStandard:20170202234520p:plain

詳細ページはこちら

https://peraichi.com/landing_pages/view/scorer

SCORER SDKは、もともといろいろな用途に使えるSCORERをさらにプログラム可能にした開発環境で、温度や光センサーとカメラを連動したIoTシステム(明るくなったら写真撮るなど)を簡単に開発することができるようにしたものです。

詳細・ダウンロードはこちら

https://peraichi.com/landing_pages/view/scorersdk

ためしに使ってみよう 

いろいろ細かいことはおいておいて、実際使ってみた方が良さを分かっていただけると思うので、今回は顔をカメラに移したらLINEに通知するだけの簡単なシステムを組んでみたいと思います。

全体図

ハードウェア

f:id:FutureStandard:20170203000506j:plain

 ラズパイ3にBuffaloのUSBカメラと電源をさします。とりあえずこれだけ。

ソフトウェア

f:id:FutureStandard:20170203001922p:plain

顔を映し続けると何回も通知が行ってしまうので、そうはならないように1度検知したら5秒間は送らないという処理を入れます。

LINE notifyのアクセストークンを取得する

Lineに通知を行うために今回はLINE Notifyを使います。

ほんとはBotを使いたいところですが、双方向でやりとりが必要なBotだとローカルアドレスしかないラズパイだけで実現することは難しく、インターネット上にSSLのサーバーを立てなければいけないなど少し手間がかかりそうでしたので、一方的に通知ができるLINE notifyを選びました。

notify-bot.line.me

にアクセスして、スマホのLINEアプリとおなじログインID・PASSでログインします。

マイページを開くと

f:id:FutureStandard:20170204121131p:plain

という画面になるので、「トークンを発行する」を押します。

f:id:FutureStandard:20170204121241p:plain

1:1でLINE Notifyから通知を受け取る

を今回選び、トークン名を記入して発行するボタンを押すと

f:id:FutureStandard:20170204121551p:plain

トークンが発行されます。

このコードを下に書いてあるプログラムの

【Line Notifyのパーソナルアクセストークン】

に代入します。

プログラムを書く

SCORER SDKはラズパイをモニターにつないだりせず、PCのブラウザだけで簡単に使い始められる仕組みです。

開発環境までは下記のマニュアルをご覧ください

http://downloads.scorer.jp/sdk.html

 

【参考】ブラウザ内開発環境のCloud9の画面

f:id:FutureStandard:20170203003952p:plain

今回書いたプログラムがこちら

 【Line Notifyのパーソナルアクセストークン】

 には先ほど取得したトークンを各自入れてください。

 

 実質30行ちょいのコードですが、

cap = scorer.VideoCapture(0)

scorer.imshow(1, gray)

などSCORERライブラリを使ったところがいくつかあります。

可能な限りopenCVの書式に合わせ、openCVではできないWEB経由での画像配信(imshow相当)などを実装しています。

フレーム取得時間なんかも取れるので、通知に使ったフレームから5秒たつまで通知のIFブロックから除外するという処理を入れています。

顔検知については模様などを誤検知することがあるので、通知は最低サイズで足切りしています。

 画像送るところはLINE Notifyの公式ブログでもきちんと書かれたところがなかったので、

curl.setopt(pycurl.HTTPPOST, [('message', buffer.encode('utf-8')),('imageFile', (curl.FORM_FILE, 'detected.jpg'))])

このように一度detected.jpgで保存したものをフォームとして渡す処理をしています。

【参考】

developers.linecorp.com

検知結果

f:id:FutureStandard:20170204125620p:plain

検知されました!

 

検知の様子を動画にしてみました。

youtu.be

 

旧大統領だけでなく現大統領もいます

さいごに

今回は顔検知+LINE通知でしたが、これを温度センサー+Slack通知にもできますし、たくさんのSCORERカメラを用意して、雨雲監視網を作るなど様々なIoT的な用途に活用できるのが想像できるのではないでしょうか?

SCORERはとにかく簡単に、誰でもカメラやセンサーを使ったIoTの仕組みを最速で作り上げられるように考えて日々改善しているので、無料で使えるので是非一度おためしください!

https://peraichi.com/landing_pages/view/scorersdk