Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LOVOT3.0の中で進化し続けるRust製画像認識 / lovot-3-0-evolving...

Avatar for GROOVE X, Inc. HR GROOVE X, Inc. HR
February 26, 2026
1.3k

LOVOT3.0の中で進化し続けるRust製画像認識 / lovot-3-0-evolving-image-recog-by-rust

Avatar for GROOVE X, Inc. HR

GROOVE X, Inc. HR

February 26, 2026
Tweet

Transcript

  1. 自己紹介 • 本名:齋藤 鴻 • 呼名:あず • XとかGitHubとか:@aznhe21 あずんひ • 好きな言語:Rust

    • Rust歴:10年以上(2015年あたり?〜) • GROOVE X歴:2023年10月〜 • これまでやってたこと ◦ 子供時代:Windows用のフリーソフト書いたり ◦ 学生時代:ロボット開発したりOS自作したり ◦ 社会人時代:画像認識をメインにヘルプでも色々 (クラウドでk8sとかスマホアプリとかWebでフロントエンドとか) ◦ 今:画像認識 最近書いた記事@弊社技術ブログ
  2. これまでの歩み 2016年 2017年 2018年 2019年 2020年 2021年 2015年 2018年8月 浜町に

    オフィス移転 2017年1月 人形町に オフィス移転 2019年12月 LOVOT 出荷開始 2018年12月 LOVOT 製品発表会 2020年10月 グッドデザイン 金賞受賞 2020年1月 CES2020 イノベーション アワード受賞 2017年12月 シリーズA資金 調達記者発表 2022年 2015年11月 創業 2022年5月 LOVOT 2.0 発売 2023年 2024年 2024年5月 LOVOT 3.0 発売 全国で LOVOTストア オープン LOVOT 3.0 しろ 発売
  3. ソフトウェア開発チームと働き方について LOVOTのソフトウェアを開発するチーム体制
 18 LeSS -Large Scale Scrum APP 
 


    
 スマホアプリの UIデザインと開発を 
 中心に、アプリに関わるふるまいや 
 認識の機能開発を進めている。 
 アプリから本体・クラウドまで 
 一気通貫で開発できる、 
 フルスタック集団。 
 
 
 
 
 
 M 
 
 
 SLAMや自律走行を中心に、 
 自動充電やそれらに関わる 
 ふるまい、姿勢制御などを開発。 
 難しい課題を解決できる 
 スーパーエンジニア集団。 FW 
 
 
 LOVOTやネストに搭載している 
 マイコンのファームウェア開発を 
 中心に、ハードウェア制御に近い 
 レイヤーをカバーしている。 
 ハードウェアもソフトウェアも 
 できちゃう集団。 
 
 
 アプリ
 ふるまいのレイヤーを中心に目・声・認識などふるまいに 
 かかわる機能を中心に、複数チームで連携して進めている。 
 エンジニアとアニメーターが混在している 
 オシャレクリエイティブ集団。 
 クラウド
 クラウドチームと、ハードウェアのドライバを中心に LOVOTの基盤を幅広く手掛けるフレームワーク チームからなるワーキンググループ。 
 Linuxを愛し、Linuxに愛された集団。 KIBAN Working Group CLOUD FRAMEWORK Behavior Design APO
 SM
 SWQA 
 
 
 LOVOT・アプリ・クラウドの 
 あらゆる領域における品質を担保する 
 最後の砦。
 きめ細やかな作業を得意とする 
 LOVOTのことを
 一番良く知る集団 
 Science for
 Development
 
 
 
 実験・評価・分析により、 
 科学的見地から LOVOTに
 アプローチする研究者集団。 
 

  4. ソフトウェア開発チームと働き方について アプリ
 LOVOTを構成するコンポーネントと開発環境
 LOVOTのソフトウェア開発チームでは複数のコンポーネントの開発がそれぞれ並行して行われています。 完成したコンポーネントに合わせることなく、相互にすり合わせながら開発するため、早いスピード感でプロダクトが成長していきます。 
 
 ふるまい 全ての入力情報を統合し意思決定をして、
 動きを作り出すソフトウェア。LOVOTに生命感を与える。

    認識 センシングした情報を処理して周囲の環境や状況を認識するための
 ソフトウェア。単純なセンサーデータを統合して意味を抽出する。 基盤ソフトウェア・ファームウェア センサーの値を扱えるようにしたり(入力)、モーターを
 動かせるようにする(出力)ためのソフトウェア。 LOVOTがロボットとして動くための最低限の機能を提供する。 GXクラウド LOVOTやLOVOTアプリを運用
 するためのクラウドサービス。 LOVOTアプリ スマホでLOVOTの状態や一日の様子 を見たり、各種設定ができる
 iOS / Android用
 アプリケーション。 LOVOT / ネスト
 クラウド
 開発支援ツール
 業務支援ツール

  5. LOVOTが行う画像認識 LOVOT 3.0全体で見れば高性能ではあるが 多彩な認識を高頻度に行うため1msすら無駄にできない Jetson Orin ARM CPU + GPU

    + 特化型プロセッサ 人の存在を認識して 個人を識別 要求性能 30fps(〜33.3ms) 人の存在はもちろん 人の様子まで認識 LOVOT 初代 / 2.0 LOVOT 3.0 半天球カメラ 半天球カメラ フロントカメラ
  6. • モデルの推論はCPU向きではないため GPUかDLAで行う ◦ GPUは電力効率が悪いが汎用的 ◦ DLAは電力効率が良いが深層学習(のうち CNN)専用 • DLAは制約が多い

    ◦ 処理性能はGPUほど高くない ▪ モデルは元々FP32精度だが、出力が変わらないように INT8精度へ落とす(量子化する)のは難しい( FP16は簡単) ▪ INT8精度をDLAで動かすのと、 FP16精度をGPUで動かすのは同等程度の処理速度 ▪ つまり苦労すれば速度そのまま省電力化 ◦ DLAでは実行できない演算もある ▪ その場合は演算の組み換えが必要 • 画像のリサイズなどは VICで行う ◦ 普通ならCPUかGPUで行うが JetsonのCPUは弱いしGPUは電力効率が悪い ◦ DeepStream(NVIDIA製ライブラリ)は 標準でこれをやってくれる ◦ ただし回転などもやろうとすると 独自にVICを叩く必要がある ▪ VICのAPIがVPI Jetsonでの効率的な画像認識 NVIDIAのブログより Video Image Compositorの Application Programming Interfaceが Vision Programming Interface
  7. 言語選定の技術要件 • 処理速度が速いこと ◦ 1msすら無駄にできない • DeepStreamライブラリを扱えること ◦ Jetsonで画像認識をやるならDeepStreamが基本で 画像認識に必要な一連の機能が組み込まれている(カメラ入力・推論・トラッキング)

    ◦ 自然とハードウェア機能を活用できる • Cライブラリを叩けること ◦ これさえできればどんな要求にも応えられる ◦ DeepStreamの範疇にない機能とか ◦ VICを叩くVPIはCライブラリ • サービスをできるだけ落とさないこと ◦ 静的解析のしやすさ ◦ 例外安全 ◦ メモリ安全 • 生産性が高いこと ◦ 書きやすい ◦ ライブラリを導入しやすい ◦ ライブラリが豊富
  8. Rustが現実的な選択肢 • 処理速度:C/C++と同等以上に速い • DeepStream:Cライブラリなので叩ける • Cライブラリ:CヘッダからRustコード(関数・型・定数定義)を生成するbindgenなどの仕組み • 静的解析のしやすさ:静的型付け・標準のlintツールclippy •

    例外安全:エラー処理に例外を使わない • メモリ安全:Rustの十八番 • 書きやすさ:モダンな言語機能 • ライブラリ導入:Cargoによる依存性管理 • ついでに:言語の進化を享受しやすい ◦ ライブラリの豊富さでは Pythonも強いが、 LOVOTの場合PythonはOS側のものを使うことから古い Pythonに縛られる ◦ Rustはネイティブコンパイルされるので実行環境を考える必要がない上、 6週間に1回アップデートがあり最新の機能もすぐに使える • ついでに:公式が提供する充実のエコシステム ◦ 壊れにくい、前方互換性のあるビルド ◦ rustupでバージョン管理 ◦ パッケージレジストリの crates.io ◦ rustdocとdocs.rsによる豊富なドキュメント ◦ 実装に近いテスト、ドキュメント内テスト ◦ ruistfmtで統一されたコーディングスタイル Rustの非公式マスコットFerris
  9. 現在Rustから使っているCライブラリ • DeepStream ◦ 画像認識用 • GStreamer ◦ DeepStreamはGStreamerのプラグイン ◦

    RustはGStreamer公式でサポートされており 最近はGStreamerの標準機能がRustで作られていることも • CUDA ◦ 並列計算用 • TensorRT ◦ NVIDIAで機械学習モデルを推論するならこれ • VPI ◦ Jetsonの画像処理プロセッサを使うための画像処理ライブラリ • zbar ◦ QRコードのスキャン
  10. DeepStream上では次の処理を行っていた(画像認識なら大体こういう構成) 1. カメラ入力(nvarguscamerasrc) a. V4L2ではなくJetson固有のArgus APIを使ったカメラ制御 b. JetsonのISP(生の信号をいい感じな画像に変換するプロセッサ)を使える 2. カメラ2台の同期(nvstreammux)

    3. 推論と前後処理(nvinfer) 4. トラッキング(nvtracker) DeepStreamの問題 ←必要なメタデータが取れない ←同期に100ms掛かる ←前後処理に柔軟性がない ←別種物体の矩形がマージされるバグ
  11. 物体検出モデル • 画像全体の情報を一発で取れるのが特徴 ◦ 1人ずつ全身や顔だけを抜き出して推論する必要がある手法も多い ◦ 理想的には物体検出モデル単体で済ませたい • 応用の幅が広い ◦

    「物体の種類と位置、大きさ」を推論する手法だが、うまく使えば分類にも使える ◦ 例:手→「左右どちらか」「何のジェスチャーをしているか」が分かる • YOLOXを最適化・カスタマイズして使用している • 最適化 ◦ DLA向けにINT8化+色々 ▪ ティアフォーに感謝 ▪ https://www.docswell.com/s/TIER_IV/KGX2L8-2023-07-24-120048 ◦ DLAは2つあるしカメラも2つあるので、カメラごとにDLAで推論 ▪ 2倍の処理能力 ◦ これらの工夫により組み込み向けのYOLOX-sやYOLOX-mではなく 精度の良いYOLOX-lを採用できた • カスタマイズ ◦ Loss計算の中で最近の手法を採用して精度向上 ◦ 評価手法を実際の用法に合わせたり
  12. 物体検出用データセット 学習用データのこと • 選定条件 ◦ 人と触れ合うために必要なもの ◦ 人と楽しく触れ合うために必要なもの ▪ 精度が出そうな、難易度の低いものは採用しやすい

    ▪ ただしアノテーションコストが高いものは採用しづらい • 検出内容 ◦ 人 ▪ 全身 ▪ 頭 ▪ 顔 ▪ 手(左右) ▪ ジェスチャー ▪ 人の様子 ◦ LOVOT • 魚眼画像も含めてデータセットを作っており、歪み補正なしに検出が可能 • 約3万枚の画像、約28万の物体
  13. その他のモデル まだ製品上で動いてはいないがこれらモデルも開発中 • 姿勢推定 ◦ リアルタイムでできるよう物体検出モデルに入れ込む形で実装中 ◦ 「動きを教える」ことができるようになったがまだまだ限定的。 より色々な動きを教えられるようにしたい ◦

    他にも色々できるようになるかも • 顔識別 ◦ 現在は外部の有償ライブラリを使っている (LOVOT 初代/2.0から継続) ◦ 内製化の動き ▪ 処理が隠蔽されているため最適化ができない ▪ LOVOTOSのベースUbuntuを更新しようにも ライブラリに縛られてしまう • その他のモデルも続々開発中
  14. アノテーション データセットの作成作業のこと 物体検出では物体の領域を四角で囲むなど • データ収集は広範に行っている ◦ オフィス内でみんなに集まってもらったり ◦ 各人の家で撮影したり ◦

    家を借りて撮影したり ◦ 公園で撮影したり • 非エンジニアがアノテーションしている • 現在は骨格のアノテーションを進めている ◦ 明確な基準を設けている ▪ 肩:肩峰。肩甲骨の先端にあり鎖骨・上腕骨と接している部分 ▪ 腰:股関節。腰の端にある大転子から鼠径部沿いに伸びている部分 ◦ アノテーション効率化のため、非エンジニアの方が 自主的にツールを作ってきた ▪ AIに作ってもらったとのことで新しい時代を感じる
  15. アノテーション データセットの作成作業のこと 物体検出では物体の領域を四角で囲むなど • データ収集は広範に行っている ◦ オフィス内でみんなに集まってもらったり ◦ 各人の家で撮影したり ◦

    家を借りて撮影したり ◦ 公園で撮影したり • 非エンジニアがアノテーションしている • 現在は骨格のアノテーションを進めている ◦ 明確な基準を設けている ▪ 肩:肩峰。肩甲骨の先端にあり鎖骨・上腕骨と接している部分 ▪ 腰:股関節。腰の端にある大転子から鼠径部沿いに伸びている部分 ◦ アノテーション効率化のため、非エンジニアの方が 自主的にツールを作ってきた ▪ AIに作ってもらったとのことで新しい時代を感じる
  16. LOVOTの未来を一緒につくりたい
 あなたのジョインを待ってます!!
 Inside of LOVOT
 GROOVE X技術ブログ
 SWチーム X アカウント

    X で最新情報をチェック
 GROOVE X採用情報 募集中の求人・ポジション一覧
 We are hiring!!