Safie Engineers' Blog!

Safieのエンジニアが書くブログです

セーフィーのインターンに参加しました

こんにちは!

このたびセーフィー株式会社でインターンをさせていただきました、吉田と申します。 この記事を通して、インターンで得た学びや、会社の雰囲気などが伝われば嬉しいです。

インターンをした経緯・目的

私は就職活動において、大企業よりもベンチャー企業に魅力を感じていました。 ベンチャー企業のほうが、お客さんとも関われるし、事業全体に幅広く関わったり、新しいことにチャレンジできたりしそうだと思ったからです。 ただ、実際にベンチャー企業で働いてみた経験はなかったので、職場の雰囲気や業務内容がどうなのか体験してみたく、インターンをすることしました。

セーフィーは現在の研究テーマにあっていて、かつベンチャー企業ということで、大学の就職担当の方を通して紹介していただきました。

セーフィーのどこに興味をもったのか

私は、機械学習や神経科学を使って人間の知能について研究している研究室に所属しており、そのあたりの分野に関わりのある企業を探して就活をしていました。

セーフィーは、単に映像を扱っているだけでなく、将来的に「映像プラットフォーム」を作ろうとしています。 これは、複数のカメラの映像を一元管理し、膨大な映像を言語で検索したり、様々なアプリを使って解析したりできる場を作ろうというものです。 連続的な映像データから、起きたイベントなどの抽象的な情報を取り出して言語で検索できるようにするというのは、人間が見たものの意味を理解するということと共通する点が多いと感じ、興味を持ちました。

また、映像プラットフォームでは、他社製を含む映像解析アプリのプラットフォームを作り、そこから自由に選んで自社のデータに使えるようにするという構想があり、ビジネスの発展性という点からも面白い企業だなと思いました。

選考

インターンにあたり、面談とコーディングテストを受けました。 面談は会社説明を兼ねたカジュアルなもので、給与面や、私個人の将来についてのことも含め、いろいろ相談させていただきました。 コーディングテストは初めてだったので緊張していましたが、思ったよりも軽めのもので、ゆるく競技プログラミングに触れていたこともあり通過することができました。

インターンの概要

プロダクト開発部のイメージングチームに加えていただき、10月から12月にかけて週に2日、計16日間の日程でインターンを行いました。

出社するかリモート勤務にするかは自分で決めることができ、今回はどちらも経験してみようということで、リモートと出社を半分ずつで行いました。 業務は会社から貸与されたラップトップで行いました。

チームのエンジニアの方にメンターとしてついてもらい、課題に取り組みました。 業務中は基本的にSlackでコミュニケーションをとりながら作業しました。 勤務時間の終わりにはミーティングを行い、作業ログを見ながらその日の振り返りをしつつ、次回以降の方針を決めました。このように毎回密にフィードバックを貰えたのは心強かったです。

また、Googleドキュメントにレポートの雛型を作っておき、それを埋めていくというドキュメントベースの形で作業を進めました。こうすることで、あとどのくらいで終わりそうかという見通しが立ち、短い期間の中でも安心感がありました。 レポートは最後に共有会を行い、エンジニアチームのほか、企画や営業の方からもフィードバックをいただきました。

出社した日には毎回いろんな部署の方とランチの予定が組まれていて、緊張もしましたが、どの方も気さくに話しかけてくれたので楽しかったです。

やったこと

私の興味がある分野と、社内の課題とを照らし合わせ、事前にいくつかタスクを準備していただいていました。 面談の際に、将来やってみたいこととして、映像解析の技術を応用してライフログの解析をしてみたいと伝えていたので、関係しそうなものとして、行動認識アルゴリズムの実用性を評価するというタスクをすることになりました。

行動認識の既存モデルの検証

行動認識とは、映像中に映っている人を検知し、その人が何をしているのかラベル付けするというタスクです。 店内に設置したカメラで顧客の行動から興味があるか判別してマーケティングに活かしたり、社員の姿勢や動きを認識してより働きやすいオフィスづくりに活かしたりするなどのニーズが考えられます。

今回は、PoseC3D、SlowFast Networksという2つの既存モデルに対して、社内カメラのデータを使って評価しました。

PoseC3Dは、人物の骨格を検出するスケルトンベースの行動認識アルゴリズムです。人物ごとのスケルトンと、映像全体がどんなシーンかというラベルを出力します。

github.com

f:id:safie:20211215131628p:plain
PoseC3Dの出力結果

SlowFast Networksは、2段階の時間解像度で映像を認識することでより正確に・効率的に認識をするという行動認識アルゴリズムです。人物ごとに行動のラベルを出力します。

github.com

f:id:safie:20211215133402p:plain
SlowFast Networksの出力結果

個人ごとに行動を認識できるSlowFast Networksについて、より詳しく評価を行うと以下のような結果となりました。

  • 被写体の距離
    • 距離が遠かったり、画面の端のほうにいたりすると人物検知されにくく、行動認識の精度も低下した。
    • 遮蔽物がなく全身が映っていればある程度認識できた。
  • 被写体の行動
    • 立ち上がる、座るなどの姿勢が大きく変化する動作だと行動認識の精度が低下した。
  • 映像の画質
    • 画質(圧縮方式)を変更することで、同時に検知される人数が増加した。
  • 映像の画角
    • 急な角度で見下ろすような画角の場合、人物検知、行動認識の精度がともに低下した。
    • 被写体と水平になるようにカメラを設置することで改善した。

今後より実用的な状況で使うためには、以下のような工夫が考えられます。

  • 対象の全身が大きく映るようカメラ位置を調節する。
  • 特殊な画角の場合はファインチューニング*を行う。
  • 認識したい行動に絞って再学習する。

*ファインチューニング: 学習済みモデルの一部を再利用してネットワークを再構築する方法。

ユースケースを想定しながら実サービスとしてサーバーで運用する場合のコストの試算を複数のパターン行いました。行動認識における推論処理を定常的に行い続けるとコストが高くなるため、動体検知と組み合わせてイベントが起こったタイミングの映像でだけ推論を行うことで、コストパフォーマンスを上げるアプローチも考えました。

機械学習モデルの量子化

時間が余ったため、ほかに提案していただいていたタスクである、機械学習モデルの量子化の実験も行いました。 量子化とは、ネットワークのパラメータをより少ないビット数で表現することでモデルの軽量化を行う技術です。 通常は32bitの浮動小数点数として扱う数値を、もう少し粗くして、8bitや16bitなどの固定小数点数で表現することで、機械学習のモデルサイズを抑えることができます。結果としてメモリ消費量を軽減できたり、計算を高速化したりできる利点があります。 サーバーではなくカメラ側で画像認識を行う「エッジAI」で特に重要な技術です。

今回は、PyTorchで実装された物体検知モデルを、エッジデバイス向けの推論ライブラリであるTensorflow Liteのモデルに変換して量子化し、量子化による計算時間や推論性能の変化を調べました。 苦労した点としては、Tensorflow Liteはエッジデバイスで使われるARMプロセッサ向けに最適化されていて、intelプロセッサのPCで実行すると遅くなってしまうという落とし穴がありました。これは、Tensorflow Liteをintelプロセッサ向けのオプションをつけてビルドすることである程度緩和されました。 機械学習モデル自体の研究ではなかなか量子化やエッジAIの技術に触れることがなかったので、勉強になりました。

そのほかにも、セーフィー製品を使っている企業の見学に同行したり、協業企業とのミーティングに参加したり、社内の勉強会に参加したりと、貴重な体験をいくつもさせていただきました。 社内で定期的に開かれている勉強会では、メンバーが自分の専門分野や最近触っている技術について気軽に共有していて、とても良い文化だと感じました。

学んだこと・感想

今まで企業でしっかり実務に携わった経験がなかったこともあり、新鮮な経験ばかりで、あっという間に終わってしまったなという感じでした。 特に、実サービスを想定したサーバー運用コストの試算や削減については、研究ではほとんど意識しないことだったので新鮮でした。研究も、実用的に使われてこそ意味があるものなので、このあたりの感覚を持っていることは大事な気がしました。

また、会議やミーティングでは、大人数が参加する場であっても立場の上下なく若い人が積極的に発言していて、フランクで働きやすい雰囲気だなと感じました。

インターン期間を通して、いろいろな方が進路の相談に乗ってくださって、大変励みになりました。みなさんキャリア設計をきちんと考えていて、私ももっと自分の将来を具体的に考えなければと思わされました。

最後になりますが、メンターの方をはじめ、面倒を見ていただいたイメージングチームの皆様、そのほかお世話になった社員の皆様、本当にありがとうございました!

© Safie Inc.