見出し画像

MLOpsへの第一歩!AI学習データ収集基盤の構築(画像)

こんにちは。Heavy metal is very very healthyです。ナビタイムジャパンでAIやコンピュータビジョンを用いた研究開発を担当しています。

この記事では、私が開発を担当している『AiRCAM』(エアカム)というアプリケーションで利用するAIの学習データ収集基盤(以下、収集基盤と略)を構築した話をしてみたいと思います。

『AiRCAM』は、ドライブレコーダー機能に加えてカメラに映った車や歩行者をAIを使って認識し、ドライバーへの注意喚起や、安全運転を行ったドライバーに対してポイントを付与する機能も提供しています。

したがって、AIに学習させるデータは画像となります。
さらに、車のフロントガラスから見える風景が映った画像
これが学習に最適なデータとなります。

AIを継続的に開発そして精度向上していくためには、この学習データを収集してAIを学習していくことが必須となります。ですが、この収集という作業がなかなか厄介でした。。

学習データの収集は一苦労(収集基盤がなかった時代)

収集基盤の構築以前、学習データの収集は一苦労でした。
収集は、以下の手順で行っていました。

  1. スマートフォンのカメラアプリで録画しながら車で走行

  2. スマートフォンからPCに録画した動画を転送

  3. PCからGoogleドライブへ動画をアップロード

データ収集のイメージ - 収集基盤がなかった時代

数十分程度の走行でも動画のファイルサイズはそれなりに巨大(数GB)となりますので、2と3の作業が地味に時間がかかります。また、ケーブルやネットワークの不調でコピーやアップロードが失敗して泣く泣くリトライ。毎回ひやひやしながらの作業なので車で走行した後に行う作業としては、心理的ストレスが大きいです。

録画した動画も端末に保存するしかないので、端末の容量が逼迫してしまい、走行中に録画を断念することもあります。録画できた動画ファイルもサイズが大きい割に学習データとして利用できる画像は少なくなります。その理由は、動画に含まれる全ての画像を利用すると、画像間で同じような画像となってしまうので過学習がおきやすい学習データになってしまうからです。

学習データの収集を簡単に!(収集基盤構築後)

それが、収集基盤構築後は、、、

・専用アプリケーションを起動しながら車で走行

データ収集のイメージ - 収集基盤構築後

たった、これだけになりました!
車で走行後の人手によるコピーとアップロード作業がなくなりました。
専用アプリケーションとは、『AiRCAM』をクラウド上の収集基盤にアップロードさせるように特別に改造したアプリケーションです(一般公開はしていません)。また、ローカルにデータを保存せず直接アップロードさせるようにしたので端末の容量問題もクリアされています。

収集基盤のシステム構成

構成は非常にシンプルかつコンパクトで、Firebase SDK + Cloud Storage for Firebaseという構成を採用しました。Cloud Storageへの接続・通信処理などは、Cloud Stroge用のFirebase SDKを使っているので、開発コストが低く、接続性も抜群に良いです!

システム構成のイメージ

学習データの収集だけではない他のメリット(将来の展望)

収集基盤を構築したメリットは、学習データの収集を容易にしただけではありません。

構築時に画像だけなく、画像に紐づくメタデータ(カメラ情報など)もJSONで画像ファイルと一緒に収集基盤にアップロードさせるようにしました。

こうすることで、将来的にAIの学習データに限らず別の用途に使うことができるようになります。例えば、その画像を別のAIが解析して、その結果を当社の地図やネットワークデータに反映をしたり、スマートフォン上で動かすには負荷の高い高精度のAIモデルをサーバー上で動かし、その解析結果をスマートフォン上のアプリにフィードバックするなどです。

サーバー上で別AIが解析し、その結果を地図・ネットワークデータへ反映や、アプリにフィードバック

次回、AI学習基盤との連携(MLOpsへの道は続く)

これで、学習データをスムーズに取集できるサイクル基盤ができあがり、
MLOps実現に向けて、第一歩を踏み出せたんじゃないでしょうか。

しかしながら、収集基盤を構築しただけではMLOpsは完結できません。
肝心の学習サイクルを回す部分であるAI学習基盤と連携しないと、その効果を存分に発揮できていません。そこで、次回はそのAI学習基盤との連携について記事にする予定です!