Safie Engineers' Blog!

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

セーフィーのAI開発プロセス

この記事は Safie Engineers' Blog! Advent Calendar の23日目の記事です。

こんにちは開発本部AI開発部で開発マネージャーをしているおにきと申します。

この記事ではセーフィーにおける映像解析AI開発におけるプロセスを紹介したいと思います。

読者としては主に映像に関わるAIの開発をしている方およびAI開発のマネジメントに関わる方を想定しています。

1. セーフィーにおけるAI開発とは

セーフィーではクラウド録画プラットフォームの価値をさらに高めるべく、映像解析AIの開発に注力しています。

私たちが開発する映像解析AIとは、動画や静止画を入力として、AIが物体の位置や数、特定のイベントを検出する機能です。例えば、カメラ内のエッジコンピューティングを活用して人の動きの分析を行う「AI-App(アイアップ) 人数カウント」や、クラウド側で解析を行う「AI People Count」などがあります。

現在、セーフィーでは映像解析AIのプラットフォーム構想を掲げています。今後、さらに多様なアプリを迅速に開発していくうえで、「仕組みづくり」が重要になっています。

※なお、これらの開発にあたっては、弊社の「データ憲章」に基づき、プライバシー保護と倫理的配慮を最優先事項として取り組んでいます。

2. はじめに:AI開発における「プロセス設計」の重要性

AIの開発においては、モデルの認識精度、必要なデータ量、計算コストを事前に予測することが難しく、加えて顧客の要望やユースケースを事前に十分に把握することもできない場合が多いため、リスク(=不確実性)の高い開発と言えます。AI開発ではいきなり製品開発を開始すると開発の途中で所望の性能やコストを実現できずに開発が長引いたり、最悪開発が中止したりといった事態につながります。

リスクを下げるためには、開発プロセスを複数のフェーズに分けて、各フェーズにおいてリスクを管理することが大切です。

AI開発プロセスを導入することで以下のことが期待できます。

  • 各開発プロセスで検討する内容とアウトプットの起き方がわかる
  • フェーズを分けることで、フェーズ間でのリスクの判断をはっきりと行うことができる

3. AI開発プロセス全体の構造

AIを利用したシステムの開発プロセス全体像を、モデル開発とシステム開発の二軸で整理したものが以下の図です。

AI開発においては、モデル開発とシステム開発を分けて管理することを推奨します。これは、モデル開発においては、認識性能や計算コストといった非機能要件の実現・改善が開発内容になるのに対して、システム開発ではUIなど機能要件を実装することが主な開発内容になり、管理の仕方と時間軸が大きく異なるためです。一般的にもモデル開発はMLOps、システム開発はDevOpsとして分けて扱うことが多いようです。

次の章ではモデル開発のプロセスにおける分解したフェーズを説明していきます。実際のAI開発ではテーマによってどこから開始するかなどは異なっているため、テーマごとに柔軟な運用が必要です。

4. モデル開発の5つフェーズ

4.1. フェーズ1:技術調査(メトリクスと技術選定の確定)

まずはどのような技術および評価方法があるのかを把握します。

ゴール

  • 既存のモデルの調査を行い、技術選定と評価方法の大枠を定める

やること

  • 論文調査を行い既存の手法を理解し、採用する技術を定める
    • 物体検出か画像分類かなどのタスクを定め、採用するモデルを決めます
  • 評価手法を把握する
    • 選定したタスクに対してどのような評価手法があるかを把握します

4.2. フェーズ2:フィジビリティスタディ

アルゴリズムを実際に動かしてみて大まかな性能と課題を把握します。把握した課題の改善の見込みの度合いに応じて、課題改善を続けるか、場合によっては開発を中断するかを判断します。

ゴール

  • モデルを用いて製品として実現可能であるかを検証する
  • 課題を把握する
    • ※課題把握(+改善)に関しては今後のフェーズで継続的に行います

やること

  • データの収集
    • オープンデータが利用できるかを調べます
    • (利用可能であれば)製品が使われる環境に近いデータを集め、アノテーションを行います
  • 評価の実施
    • 評価メトリクスを定めて、性能評価を行います
    • モデルの計算時間を計測します
      • エッジコンピューティングの場合は、実際のカメラデバイス上で目標の処理速度が出るかも検証します
  • 課題の把握
    • 評価の結果どのような課題があるかを把握します
    • それらの課題が改善しそうかを判断します

4.3. フェーズ3:PoC

顧客が実際に運用する環境を想定した検証を行います。検証もいきなり実地で行うのではなく、最初はオフラインでの検証から始めるなどステップを分けることも勧められます。

ゴール

  • 実運用状況で顧客が満足できるモデル性能を実現する
  • 評価メトリクスに対して顧客が満足するための達成基準を定める

やること

  • モデルの改善の実施
    • モデルの追加学習が必要な場合はデータの収集・アノテーションを行います
    • パラメタのチューニングを行います
  • 評価メトリクスの達成基準を定める
    • 顧客のヒアリングや反応を見て、評価メトリクスにおいて達成すべき基準値を定めます
    • 評価メトリクスは必ずしも学術的な手法でなくとも正解率など製品の顧客が直接理解できる手法にしても良いです
  • 課題の把握・改善
    • フィジビリティスタディに引き続き課題の把握を行いますが、このフェーズからは改善も行います

4.4. フェーズ4:製品開発

製品としてリリースするための最後のフェーズです。モデル開発の場合このフェーズまで来ると時間の限り性能改善やパラメタチューニングをし続けるということも少なくありません。

ゴール

  • 製品としてリリースできるレベルにモデルを仕上げる

やること

  • 評価メトリクスの達成基準を達成する
    • 追加学習やパラメタチューニングを行います
  • 性能・計算量の改善
    • 達成基準をクリアした場合はリリースまでの時間で改善を続けます
  • 課題の把握・改善
    • リリースまでに解決すべき課題を改善し続けます
    • クリティカルでない課題であれば、改善はリリース後に先延ばしすることも検討します

4.5. フェーズ5:改善

製品がリリースしたあとであっても製品価値を向上するためにモデルの改善は継続的に行うことが重要です。

ゴール

  • より良いモデルをリリースして改善を行う

やること

  • 課題の把握・改善
    • 既知の課題、リリース後の運用中に見つかった課題を改善します

おわりに

本記事では、セーフィーの映像解析AI開発で採用しているプロセスについて記載しました。実際の開発ではこのプロセスをベースとしつつ状況によって柔軟にフェーズの内容を変えながら開発を行っています。

AI開発はリスクとの戦いですが、こうしたプロセスを開発組織全体で共有しながら、プロダクトとして実現させていくことがやりがいのあるところだと思います。

セーフィーでは一緒に働く仲間を募集中です! 少しでもご興味を持っていただけたら、ぜひ以下の採用サイトを覗いてみてください。

safie.co.jp

© Safie Inc.