ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

isaax 勉強会でラズパイ監視カメラ作ってみました

 こんにちは、赤沼です。以前アスキーの展示会でサービスについてご紹介いただいたのをキッカケに、 isaax の勉強会に参加してきましたので、内容についてご紹介させていただこうと思います。

isaaxug.connpass.com

 会場はヒカリエ内の、KDDI株式会社 旧∞Labo(むげんラボ)でした。

f:id:akanuma-hiroaki:20181025092301j:plain:w300

isaax とは

 isaax とは、一言で言うと IoT デバイスの管理プラットフォームで、死活監視やファームウェアのアップデートに利用することができます。対象としているデバイスは Raspberry Pi などの Linux ベースのデバイスで、 GitHub リポジトリと連携させておくことで、 GitHub へのプッシュをトリガーにして登録されている全てのデバイスのファームウェアをアップデートすることができます。 IoT デバイスを用いたサービスでは通常の Web サービスと違い、ハードウェアを遠隔地に配置することになるので、その状態監視やファームウェアの管理については課題が多いところです。 isaax のようなサービスを使うことで運用を効率化できるのではないかと思います。

f:id:akanuma-hiroaki:20181025091340p:plain

ハンズオン内容

 isaax では isaax camp という情報共有サイトを公開されていて、今回のハンズオンの内容もそこで公開されているので、詳細な手順はそちらを参照いただくのが良いかと思います。

camp.isaax.io

 主なポイントは下記のようなものになります。

  • Raspberry Pi + Camera モジュールと OpenCV を用いた人数検出
  • isaax のプロジェクト作成、デバイス登録
  • GitHub と isaax を連携させたファームウェアアップデート

 それぞれ簡単にご紹介します。

Raspberry Pi + Camera モジュールと OpenCV を用いた人数検出

 使用機材については Raspberry Pi 3 Model B だけ持ち込みましたが、それ以外は貸し出していただき、下記の写真のように Raspberry Pi にカメラモジュールを接続したものを使用しました。

f:id:akanuma-hiroaki:20181025092348j:plain:w400

 コードについても Python でベースの部分は用意していただいていたので、リポジトリを fork して、ハンズオンのテキストに従って処理を追加します。カメラモジュールで撮影した画像を OpenCV で処理して人数を検出し、検出した人物に枠をつけるという内容です。また、画像内に一人以上の人物を検出した場合は、1分間隔で画像を Slack に Post します。最終的には下記のように Slack に画像が表示されるようになります。

f:id:akanuma-hiroaki:20181025092553j:plain:w400

isaax のプロジェクト作成、デバイス登録

 isaax を使い始めるには isaax にログインしてプロジェクトを作成します。作成時には連携する GitHub のリポジトリを指定する必要があるので、あらかじめ作成しておきます。今回はサンプルのリポジトリを fork したリポジトリを指定しました。

f:id:akanuma-hiroaki:20181026075342p:plain

 プロジェクトを作成するとプロジェクトトークンと、デバイスを登録するためのインストールスクリプトが表示されるので、それを Raspberry Pi で実行します。

$ curl -fsSL get.isaax.io | sh -s stable <プロジェクトトークン>
No previous isaaxd installation

### Download and unpack stable artifact version v0.5.0
================================================================================
--2018-10-25 23:01:16--  http://cdn.isaax.io/isaaxd/stable/linux_armv7/v0.5.0.gz
Resolving cdn.isaax.io (cdn.isaax.io)... 152.195.38.225
Connecting to cdn.isaax.io (cdn.isaax.io)|152.195.38.225|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3245446 (3.1M) [application/octet-stream]
Saving to: 'isaaxd.gz'

isaaxd.gz                                                   100%[=========================================================================================================================================>]   3.09M  1.09MB/s    in 2.8s    

2018-10-25 23:01:19 (1.09 MB/s) - 'isaaxd.gz' saved [3245446/3245446]

installed successfully

### isaaxd installation complete
================================================================================
        Version:         v0.5.0
        Built:           Mon Jul 2 05:21:50 2018
        Go version:      go1.10
        OS/Arch:         linux/arm
        RPC port:        1226
        Update URL:      https://isaaxartifacts.blob.core.windows.net/isaaxd/
        Working dir:     /var/isaax/
        Project dir:     /var/isaax/project
        Log dir:         /var/log

 これでデバイスがプロジェクトに登録されます。今回は用意していただいたリポジトリを使いましたが、ゼロから作る場合は isaax.json という設定ファイルを作成する必要があります。

GitHub と isaax を連携させたファームウェアアップデート

 デバイスの登録まで成功していれば、あとは isaax と連携させている GitHub リポジトリにコードをプッシュすればその内容がデバイスにデプロイされます。アップデートの受信やログの出力内容は isaax のコンソールから確認することができます。

f:id:akanuma-hiroaki:20181026081157p:plain

 また、コンソールからは環境変数も設定できますので、登録されているデバイス全てに一括で環境変数を設定することが可能です。

f:id:akanuma-hiroaki:20181026081321p:plain

まとめ

 最近ではデバイスを管理するプラットフォームも AWS IoT や Mbed Cloud、 Arduino Cloud など様々増えてきました。 isaax は Mbed や Arduino 等のマイコンには対応していませんが、 Raspberry Pi などの Linux デバイスのみが管理できれば良いのであれば、最初の設定も簡単なので、選択肢として検討してみても良さそうに思います。まずは無料枠内で色々と試してみようと思います。

VTuberっぽくLT発表してみた

こんにちは、rightgo09です。

開発部 Beer Bash

ユニファ開発部では、毎月末に「開発部 Beer Bash」という自由LT会を行っています。過去には他社と合同で開催したこともありました。

ここ半年ほどは私はエンタメ枠(自称)で参加しています。
このエントリーでは前回の発表を紹介します。

発表中の様子

f:id:rightgo09:20180930224957j:plain
f:id:rightgo09:20180930225019j:plain

続きを読む

練習問題

こんにちは、ヘルスケア事業部のちょうです。最近並列処理の勉強で「 The Art of Multiprocessor Programming」という本をひたすら読んでいます。どうやらこの本はコンピューターサイエンス修士の教科書として使われるらしく、宿題も付いています。第一章の練習問題の中で、一問を選び、みなさんと一緒に検討しようと思います。

第一章なので、何を前提に学ばないと解けない程度ではなく、かつ選んだ一問は並列処理に詳しくなくても問題ないのでご安心ください。

続きを読む

Railsでメール送信方法を自作してみる

Webエンジニアの本間です。 昨日、Rails 6で追加される予定の Action Text の概要をDHHが紹介している 動画 を見て、「おぉ、なんかすごい!」と思い紹介しようかと思ったのですが、いかんせん時間が少ないのであきらめます(^_^;)

今回は、少し前にRailsのメール送信を独自に実装したいケースがあり、その時に調査、実装した内容をサンプルコードを交えて紹介しようと思います。

続きを読む

Serverlessconf Tokyo 2018に参加してきました

ひさびさにブログ書きます、ユニファのインフラ担当すずきです。

台風が24号がお強いですね。
先週末ServerlessConf Tokyo1日目と2日目参加しましたが、3日目は台風24号が来て中止になったようです。 24号と同じような軌道で25号も来ているので今週末も台風でイベント等中止になってしまうかもしれませんね。

では本題。 上の方でも書きましたが、今週末(9月28日(金)〜9月30日(日))とServerlessconf Tokyo 2018に参加していました。
※ 30日は中止

続きを読む

FaceNet の学習済みモデルを使って顔画像のクラスタリングを行う

お久しぶりになります、iOSエンジニアのしだです。
開発部ブログも更新する人が多くなって、前回からだいぶ日が空いたように感じます。

今回は、あるまとまった写真から顔を切り出して、FaceNetから特徴量を抽出しクラスタリングを試しました。
以下の FaceNet のトレーニング済みのモデルがあるので使用しています。 FaceNet は、Triplet Loss と呼ばれる基準となる Anchor と Positive の距離を近くに、Negative との距離を遠くにマッピングされるように学習されます。 顔画像から特徴ベクトルとして利用可能なのでクラスタリングなどのタスクに利用できます。

github.com

続きを読む

R&D エンジニアが考えていること

こんにちは。今年からユニファに新設されたR&Dチームで画像やバイタルデータの分析を行っている浅野です。今日は現在携わっている仕事の内容やその背後にある想いをご紹介したいと思います。

弊社で提供しているサービスのひとつに「ルクミー午睡チェック」があります。加速度センサーを使って園児が午睡(=お昼寝)中の身体の向きをチェックして自動で記録するものです。うつぶせ寝や動きの停止を検知してアラートを出す機能もあります。

f:id:unifa_tech:20180911123251p:plain 「ルクミー午睡チェック」公式サイト

このサービスは、5分おきに手書きで園児の様子を記録していた保育士さんの手間と、命を預かることの心理的負担を軽減することに役立っていますが、実はセンサーから得られる波形データ(例:下図)には身体の向きや動きの他にもたくさんの情報が含まれていると考えています。睡眠中にどれだけ寝返りや体動があったか、呼吸の深さや速さはどのように変化したか、いつもと傾向は同じかどうか。「息が荒くなる」という表現があるように、体調の変化が呼吸に表れることもあり、園児がどのような状態で午睡をしていたかをより深く理解することで大きな価値につながる可能性があります。どんな情報を誰にどのように提供するとサービス向上に役立つのか、日々考えながら分析を行っています。

f:id:unifa_tech:20180911111423j:plainf:id:unifa_tech:20180911111430j:plain
私が実際にセンサーを身につけて得られた波形。左: 1分間に15回のペースで呼吸した場合。右: 1分間に30回のペースの場合。右の方が波の山と谷の間隔が短くなっています。乳幼児は大人と比べてかなり呼吸が速いのが特徴です。

人生に寄り添うデータ分析

ところで、私はたくさんの午睡データを眺めてきたおかげで、 最近では加速度センサーの値の推移をみただけで園児の状況がリアルに想像できるようになってきました。例えば、下図のような波形(実例をもとにして作成した仮想データ)をみると、この子は最初なかなか寝付けなかったけど、保育士さんに抱っこしてもらったことで安心してすやすやと眠れたんだな、よかったなぁ、と少しほっこりした気持ちになります。

f:id:unifa_tech:20180911111437j:plain
とある園児の午睡ものがたり。データからここまで想像(妄想)できれば一人前(笑)

データ分析で大事なのは技術的なことだけでありません。ドメインの知識も総動員してデータの背後にある人生に寄り添う。そこから見えてくる仮説をまたデータや理論に戻って検証する。想定と異なる結果が出たら、それが実世界で何を意味するのかをまた考える。常に複眼で物事を捉えることでまだ誰も手にしていないインサイトを引き出すことが可能になります。

また、ユニファでは午睡データ分析だけでなく、保育園内の日常を撮影したたくさんの画像データから様々な技術をつかって有用な情報を引き出すことにも挑戦しています。園児の安心安全と豊かな学びの場をつくりたい。園での様子を保護者にフィードバックすることで家族コミュニケーションを豊かにしたい。そんな想いでデータと向き合っています。

保育の世界を変えるエンジニア募集中

弊社では一緒に働く仲間を大募集中です。少しでも興味を持たれた方はぜひ声をかけてください!

ユニファ 株式会社の採用/求人 | 転職サイトGreen(グリーン)

ユニファ株式会社の採用/求人一覧 - Wantedly