Hololens 向け物体検知アプリケーションの実装を行いました

f:id:numanuma08:20180601100933p:plain

みなさんこんにちは。大阪でリモート勤務をしております @numa08 です。この度、 Hololens 向けのアプリケーションとして自動車の検知及び描画を行うアプリケーションの開発を行いました。

このアプリケーションは、物体検知機能を持った自動車の見ている視点を人間が体験をしてみる、という目的のものに開発されました。Hololens を着用したユーザーが自動車の助手席に乗り込み、前方の窓から見える他の自動車や人間を機械学習エンジンが認識し、結果を Hololens 上に描画します。この一連のフローを通して、自動車に搭載されたセンサーがどう言った物を認識し、そしてそれを安全なドライビング体験にフィードバックしているのかを体験してもらおうと言うものです。

今回作ったシステムでは実際の道路にいるであろうバイクや人も認識することができます。

少し文字が見にくいですが person, motorbike, bikeを認識している様子です。

f:id:mironal:20180531111105p:plain

技術スタック

今回のシステム構成は次のようになりました。

f:id:numanuma08:20180522180032p:plain

Hololens から取得した画像をPCにインストールした機械学習フレームワーク及び学習済みデータを利用して認識し、認識結果を Hololens 上で描画します。機械学習エンジンには Darknet を、物体認識及び学習済みモデルには Yolo v3 を利用しました。

pjreddie.com

pjreddie.com

Tensorflow の利用も検討しましたが、ベンチのマークの結果 darknet を利用することとしました。

Hololens と PC の通信は http を利用しています。PC には Hololens から送られてくる画像データを受け取る HTTP サーバーを、 Hololens には PC から送られてくる認識結果を受け取る HTTP サーバーをそれぞれ起動して、データのやり取りを行うようにしました。

屋外での Hololens 利用について

こんにちは。 ここからは東京のオフィスにいる山口が書きます。

私は Hololens 側のアプリケーションの実装と現地デモ、改善案の提案などを行いました。

Hololens は基本的に屋内での使用を想定していて屋外や車内で使用すると様々な問題が発生しました。

例えば Hololens の周辺環境スキャンにより自分の周囲に壁があると認識してしまい、壁の向こう側にあるものは何も描画しないという仕組みによって車の外側に何も描画しなくなってしいます。

そこで Hololens 本体にフィルムを張ってセンサー類を無効化、ディスプレイの輝度を上げることで対応しました。

f:id:numanuma08:20180529153038j:plain

また、車内で走行しながら使っていると度々 Tracking loss が発生し、アプリが停止してしまいます。

これに対応するには

Tracking loss in Unity - Mixed Reality | Microsoft Docs にあるように Tracking loss をマニュアルハンドリングにすることによってアプリの停止を抑制することができました。

以上が Hololens 側のノウハウとなります。 Hololens のノウハウについてご質問ある方はぜひぜひお問い合わせください。

まとめ

今回の案件はいくつかの点でコベリンにとって挑戦的な内容でした。機械学習フレームワークを利用したアプリケーションの開発を行うことも初めてでした。大阪からリモートで作業をする @numa08 と東京オフィスのメンバーがうまく連携を取れるようにプロジェクトを管理する必要があり、新たなノウハウが身についたと思います。また、 Hololens を屋外で利用する部分に関しても、先行する事例も少なく体当たり的に山口が調査と実践を行ってくれました。

Hololens もアップデートが予定されていて今後は今回の案件で構築したようなシステムをより作りやすくなると予想され、非常に楽しみです。

Rocket CI開発、サービス終了のお知らせ

この度、昨年の夏よりベータ版として提供、開発を行っておりました従量課金でチームにフィットするCIサービス『Rocket CI』のサービス提供、開発を2017/11/08をもって終了させて頂くこととなりました。

Rocket CIは昨年夏の段階で類似のサービスはリリースされておらず、従量課金で利用することで開発の緩急や人数に応じてスケールのできるCIサービスとして提案、開発を行っておりました。

ご利用、応援をしていただいていた皆様には申し訳ありませんが、何卒ご了承いただきますよう申し上げます。

短い間でしたが、ありがとうございました。

今後も合同会社コベリンをよろしくお願いします。

コベリンオープンDay、始めます

こんばんは!コベリンでエンジニアをしている @numa08 です。

コベリンでは10月から大阪でリモートワークをする予定です。そのあたりの経緯は私のブログを見てください。

numa08.hateblo.jp

現在、コベリンのオフィスは池袋にありますがメンバー全員分の机と椅子が用意されています。しかし、社員である私が引っ越しをしてしまうため机が1つ余ることとなりました。

このスペースを無駄にしておくのも良くないためちょっと考えました。

本来なら「新入社員募集!!」とかって言いたいところですが、申し訳ありません現在コベリンでは新入社員の募集は行っていません。そこで、コベリン・オープンDayを始めます。

コベリン・オープンDayとは

せっかく机が1つあるので有効活用してもらおうと外部から誰でもコベリンオフィスに来て自分の仕事や勉強や読書などのスペースとして使ってもらおうという試みです。私達が提供するのは次の環境です。

  • 事務机
  • 椅子
  • ディスプレイ2枚
  • 無線LAN
  • Chrome Cast(調整中)
  • トイレ(1個だけしかありません)
  • 水道
  • 電子レンジ
  • 冷蔵庫
  • ジュースとか飲料水とかお菓子

椅子のスペックが良い!とか4kディスプレイあるよ!みたいなすごいことは言えないですが、時々メンバーの一人がスペシャルティコーヒーを淹れてくれることがあります。そこは運次第かな?

この環境をほぼ無料で利用可能です。「ほぼ」無料。タダというわけではありません。私達の環境を利用してもらうには次の条件があります。

  • オープンDayの中でやった作業に関係することでも関係しないことでもなんでも良いので夕方16時半からのお茶会の中で発表をする

コベリンではお茶会という仕組みを導入しています。

qiita.com

この時間の中で何かを発表してください。内容は何でも構いません。作業中にやったことを発表してもらうのも良いですが、口外できない場合や進捗がない場合を考慮して作業に関係しないことでも大丈夫です。

開催概要・参加方法

コベリン・オープンDayは基本的に毎週水曜日に開催します。誰でも参加可能と書いたのですが、すいません当面は私達の知り合いやフォロワー関係の方のみとさせてください。運用が軌道に乗ったら広く公募をしてみようと思います。気になる方は私達が用意したオープンなslackチャンネルに参加をしてコベリンのメンバーに声を掛けてください。

Join covelline (Public) on Slack!

また、コベリンのタイムスケジュールは次のようになっています。

  • 10:30 この時間くらいからメンバーが出社を始める
  • 11:05 朝会
  • 13:00 ランチ
  • 14:00 午後の仕事
  • 16:30 お茶会
  • 19:00 この時間くらいからメンバーが帰り始める

この時間の中で参加ができる方が応募条件となります。

当面はフォロワーや知り合いからの応募となりますが、よろしくお願いします。

弊社が開発協力を行ったアクティブ・ラーニング教材が JSEE 研究講演会のポスター発表賞を受賞しました

小山工業高等専門学校准教授、鈴木真ノ介先生と弊社が共同開発している AR 技術を用いたアプリによりアクティブ・ラーニングを実現する手法を含む研究が、第65回工学教育研究講演会にてポスター発表賞を受賞しました。

アクティブ・ラーニングは、これまでの教員が学生に一方向的に教える講義とは違い、学生が主体性を持って能動的に参加する学習法で、近年様々な教育現場で注目されています。

鈴木先生の提案するアクティブ・テキストというシステムは、学生が授業で使用するプリントや教科書に印刷された図や数式にスマートフォンをかざすと立体的なグラフや動画などが AR で表示されるもので、本研究では AL を実現する要素として活用されます。

弊社は本システムの iOS アプリケーションとコンテンツ管理サーバーの開発を行いました。

続きを読む

HoloLens 向け車両メンテナンスアプリケーション Hologarage が Microsoft JPC2017 で披露されました

先日9月1日に行われた Microsoft のパートナー向けイベント、Microsoft Japan Partner Conference 2017 Tokyo~Inspire Japan!のキーノートにて、弊社が UI/UX 改善とメニュー実装を担当した車両メンテナンスアプリケーション 「Hologarage」が披露されました

Microsoft の西脇資哲さんにデモしていただいている様子

youtu.be

続きを読む

Rocket で成果物の保存をサポートしなくなりました

こんにちは、コベリンの @numa08 です。アップデート情報をお届けします。

成果物の保存のサポートを終了します

環境変数 ROCKET_ARTIFACT のパスへ格納したファイルを成果物ファイルとして保存する機能を提供してきましたが、今回のアップデートで機能の提供を終了します。

環境変数 ROCKET_ARTIFACT をビルドスクリプトの中でご利用の方は修正をお願いします。

今後の対応について

Google Drive や Google Cloud Storage, Amazon S3 などの外部サービスへ転送を行う機能などを提供させて頂く予定です。

それでは、今後ともコベリンと Rocket をよろしくお願いします。

Rocket CI

rocket-ci でキャッシュや環境変数が利用できるようになりました

こんにちは、コベリンの @numa08 です。アップデート情報をお届けします。

キャッシュが利用できるようになりました

依存ライブラリのダウンロードなどが必要な際に、ダウンロードしたデータを次回以降のビルドでも利用できるようキャッシュ機能が実装されました。ビルド定義ファイルの rocket.sh の中で環境変数 ROCKET_CACHEを参照することで利用できます。

例えば Android アプリの場合

mkdir -p "${HOME}/.gradle"
if [[ -d $ROCKET_CACHE/.gradle ]];then
    cp -r $ROCKET_CACHE/.gradle $HOME
fi 
./gradlew assemble
cp -r ${HOME}/.gradle $ROCKET_CACHE

とすることでダウンロードをした gradlew のバイナリや依存ライブラリをキャッシュとして保存し再利用することが可能です。

なお、キャッシュの上限は1GBで容量を超えるデータを保存しようとするとエラーが発生してビルドが失敗となる可能性があります。

また、キャッシュには最後に成功したビルドのものが保存されます。

環境変数が利用できるようになりました

ビルド一覧画面から開くことのできるリポジトリ設定画面で環境変数をセットできるようになりました。

f:id:numanuma08:20161102163727p:plainf:id:numanuma08:20161102163734p:plain

ビルド時に rocket.sh の中から参照ができます。外部連携しているサービスに関する情報やビルドに関する情報を保存することで、リポジトリには含めたくいデータを与えることが可能です。

Rocket CI は現在クローズドα期間です。テスターとして利用をしてみたい方は Slackチームに参加をしていただいたあと、チーム内のコベリンメンバーに声を掛けていただけたらテスター登録を行います。

それでは、今後共コベリンと Rocket CI をよろしくお願いいたします。