■ 内容 ・ドラレコデータから道路情報の差分を見つけるシステムの仕組みと特徴(松浦)p. 3~ ・契約車両5万台超のドラレコデータを収集する現実解(鳩) p. 20~ ・AWS Batchを用いた画像処理の分散実行(高山) p. 41~
■ YouTube https://www.youtube.com/watch?v=0SF9BZlcT5c&t=180s
■ connpass https://jtx.connpass.com/event/272629/
Mobility Technologies Co.,MoT TechTalk #165万台のドラレコを活⽤︕⼤規模データ収集・機械学習基盤の全容2023/2/15
View Slide
© Mobility Technologies Co., Ltd. 2⽬次• ドラレコデータから道路情報の差分を⾒つけるシステムの仕組みと特徴(松浦) p. 3~• 契約⾞両5万台超のドラレコデータを収集する現実解(鳩) p. 20~• AWS Batchを⽤いた画像処理の分散実⾏(⾼⼭) p. 41~
© Mobility Technologies Co., Ltd.ドラレコデータから道路情報の差分を⾒つけるシステムの仕組みと特徴2023/02/15
© Mobility Technologies Co., Ltd. 4⾃⼰紹介プロフィール写真株式会社Mobility Technologies(MoT)シニアデータエンジニア / 松浦 慎平Web地図サービス提供企業、GISソフトウェアベンダー、⾃動運転サービス提供企業で GIS エンジニアとして従事現在は道路情報の⾃動差分抽出プロジェクトで GIS チョットデキル データエンジニアとして活躍︖中@PEmugi2
© Mobility Technologies Co., Ltd. 5道路情報の差分抽出プロジェクト01
© Mobility Technologies Co., Ltd. 6DRIVE CHART次世代AIドラレコサービス通信型ドライブレコーダーとAIで⾃覚しづらい危険シーンを解析し、効率的な運⾏管理と事故の削減に貢献契約台数5万台以上のタクシー・トラック・営業⾞両で展開
© Mobility Technologies Co., Ltd. 7⾃動運転時代の地図に求められること課題● ⾃動運転社会では、更新頻度の⾼い地図が求められる● 更新頻度を上げるには更新作業の効率化が必要解決策● DRIVE CHARTを搭載した⾞両から⾞外映像とセンサー情報を収集● 収集した情報から標識等の道路情報を検出し、地図と⽐較して現地との差分を⾒つけ地図を更新するゼンリン社と共同開発
© Mobility Technologies Co., Ltd. 8現地と地図の差分を抽出する流れ地図DBAPIセンサー情報ドラレコ画像⾞両位置の推定道路上の物体を検出物体位置の推定 現地の道路情報DIFF地図情報現地と地図の差分削除追加存在確認道路ネットワークデータ背景地図 © OpenStreetMap ContributorsGPSや加速度、⾓速度
© Mobility Technologies Co., Ltd. 9要素技術1/3: マップマッチングで⾞両位置を推定地図上では道路情報は道路ネットワークに紐付いて管理されている「どの道路を⾛っているときにみつけたのか︖」が⼤事GPSで得られる誤差を含む位置を道路ネットワークに対応させる実際に⾛⾏した位置 GPSで記録された位置 マップマッチングした位置 道路ネットワーク
© Mobility Technologies Co., Ltd. 10要素技術2/3: 機械学習とCV技術で道路情報を検出レーン検出標識検出機械学習による物体検出三⾓測量による物体の位置推定VSLAMによる⾃⾞位置推定物体位置の推定詳しくはMoT TechTalk #11で紹介しています! (https://jtx.connpass.com/event/241709/)
© Mobility Technologies Co., Ltd. 11要素技術3/3: 地理空間情報技術を⽤いた差分抽出地理空間情報の可視化によるデバッグ利⽤ケース例● ⾛⾏した道路から100m以内にある地図上の標識の検索● 地図上の標識と検出した標識の距離を計算● 複数回の⾛⾏により検出された標識を空間クラスタリングし同⼀と思われる標識をグルーピング差分抽出では⾒つけた道路情報と地図上の道路情報の位置関係が重要可視化⼿法についてはFOSS4G 2022 Japan Onlineで紹介しました!https://www.osgeo.jp/events/foss4g-2022/foss4g-2022-japan-online/foss4g-japan-2022-online-core-day#presentation5SQLによる空間情報の操作背景地図 © OpenStreetMap Contributors
© Mobility Technologies Co., Ltd. 12システム構成と特徴02
© Mobility Technologies Co., Ltd. 13システム構成図DRIVE CHARTセンサー収集マップマッチ処理対象⾛⾏計算⾞両位置格納タスク作成タスク動画リクエスト動画格納⾞両位置動画 物体検出物体位置推定差分判定認識物体地図AWS BatchAWS BatchAuroraPostgreSQLAuroraPostgreSQLAuroraPostgreSQLLambda / ECS / Batch S3⾛⾏収集動画収集認識差分判定モジュール データと処理の流れ タスクの状態管理The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions license
© Mobility Technologies Co., Ltd. 14特徴1/4: バッチ処理を採⽤各モジュールはバッチ処理で実⾏される理由● 要件○ 定められた調査期間内で、収集した⾛⾏・動画データを対象に、期間に1度差分を抽出すればよい● 性能 / 処理効率○ 差分結果の精度を⾼める⽬的で、1つの道路に対して複数回の⾛⾏結果を収集し差分を抽出する仕組み○ コンピューティングリソースを効率的に使⽤するためにまとまった単位で処理したい
© Mobility Technologies Co., Ltd. 15特徴2/4: ワークフロー管理「タスク」という実⾏単位を定義し、各モジュールの実⾏状態を管理する仕組みを独⾃に実装タスクとは● ⾛⾏を処理に適した⻑さ「5分」で区切った最⼩の実⾏単位で、各モジュールの実⾏状態が記録される● タスクに⼊⼒データと各モジュールの出⼒が紐づく● 各モジュールは実⾏可能なタスクを検索→実⾏するので任意のタイミングでスケジュールできるtask_id 動画収集STATUS 認識STATUS 差分判定STATUS1 完了 実⾏中 実⾏待ち2 完了 完了 完了⾞両位置⾞両位置Task1Task2検出した道路情報検出した道路情報地図との差分タスク管理テーブル例
© Mobility Technologies Co., Ltd. 16特徴3/4: AWSのサービス選定コンピューティングサービスの選定基準● バッチ処理を実⾏する環境の選定○ AWS Lambda■ 15分以内で完了する処理■ AWS Lambdaの標準ランタイム内で実⾏可能な単純な処理○ AWS Batch■ GPUが必要な処理■ カスタムコンテナが必要な複雑な処理■ 15分以内で終わらない処理○ Amazon ECS■ サービスとして常時起動し処理したほうが効率が良い場合■ 例: マップマッチングデータベースサービスの選定基準Amazon Aurora を採⽤!PostgreSQLを採⽤する理由● 地図データはリレーショナルモデル● タスクの状態管理や各モジュールのDBMSに対する主なワークロードはトランザクション処理● ⾼度な地理空間クエリを使⽤するAuroraを採⽤する理由● パフォーマンス、可⽤性、耐久性の観点でAuroraを使わない理由がない
© Mobility Technologies Co., Ltd. 17特徴4/4: AWS CDKによるInfrastructure as Codeプロジェクトで使⽤しているAWSリソースのすべてをTypeScriptで定義!AWS CDKとは︖● プログラミング⾔語でAWSリソソースを定義しデプロイできる仕組み● 各⾔語に対応したCDKライブラリとコマンドラインツール提供される● CloudFormationのStackとしてデプロイされる導⼊してよかったこと● 学習コストが低い!ライブラリが提供され、IDEでの補完も効き、何よりTypeScriptで記述できるので、CloudFormationやTerraformの書式を覚えるより楽● 効率がいい関数やクラス定義による処理の共通化やループや条件分岐が使⽤できるので効率よく複雑なインフラを記述できる。レビューもしやすい。CDKについてMoT Labでも紹介していますので御覧ください︕(https://lab.mo-t.com/blog/not-terraform-but-cdk)
© Mobility Technologies Co., Ltd. 18まとめ03
© Mobility Technologies Co., Ltd. 19まとめ● プロジェクト概要○ DRIVE CHARTから取得できるタクシーやトラックの情報から道路情報を検出し、地図の更新情報を地図会社に提供● 要素技術○ マップマッチングによって⾛⾏している道路を特定○ 機械学習とCV技術を使⽤して道路上の物体の検出と位置を推定○ 検出した道路情報と地図上の情報を位置関係を元に⽐較するために地理空間情報技術を使⽤● システム構成○ AWS上にバッチとして動作するモジュールで構成されたデータパイプラインを構築○ タスクという実⾏単位を導⼊し各モジュールの実⾏状態を管理○ AWSサービスの選定■ バッチ実⾏環境としてAWS Batch、AWS Lambda、AmazonECSをタスクに応じて選択して使⽤■ データベースはAurora PostgreSQL + PostGISを選定○ AWS CDKとTypeScriptでAWSリソースをコードで管理
© Mobility Technologies Co., Ltd.契約⾞両5万台超のドラレコデータを収集する現実解2023/02/15
© Mobility Technologies Co., Ltd. 21⾃⼰紹介プロフィール写真株式会社Mobility Technologies(MoT)データエンジニア / 鳩 英嗣Webシステムのインフラ管理業務に携わったのち、データ分析基盤の開発運⽤に従事。現在はMoTにてドラレコデータ収集基盤の開発を担当。最近、学⽣の頃弾いていたチェロを再開しました。リモートワークのお昼休みに基礎練してます。
© Mobility Technologies Co., Ltd. 22アジェンダ1.概要2.⾞両位置収集3.動画収集4.まとめと今後の展望
© Mobility Technologies Co., Ltd. 23概要01
© Mobility Technologies Co., Ltd. 24本データ収集の概要契約⾞両5万台超のドラレコから⾞両位置と動画データを定期的に収集⽉次で⾛破した⼀般道全国⾼速9割を⽉次で⾛破© OpenStreetMapcontributors
© Mobility Technologies Co., Ltd. 25⾞両位置収集02
© Mobility Technologies Co., Ltd. 26⾞両位置収集DRIVE CHARTセンサー収集マップマッチ処理対象⾛⾏計算⾞両位置格納タスク動画リクエスト動画格納⾞両位置動画 物体検出物体位置推定差分判定認識物体地図AWS BatchAWS BatchAuroraPostgreSQLAuroraPostgreSQLAuroraPostgreSQLLambda / ECS / Batch S3⾛⾏収集動画収集認識差分判定モジュール データと処理の流れ タスクの状態管理The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions license
© Mobility Technologies Co., Ltd. 27⾞両位置収集システム構成図センサー収集マップマッチ処理対象⾛⾏計算⾞両位置格納地図AuroraPostgreSQLS3モバイル回線1分単位でアップロードセンサー収集システムECSS3BigQueryLambda / ECS / Batch⾛⾏収集データアップロードシステムファイル特定取得保存参照道路毎の⾛⾏履歴センサーファイルThe Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions licenseGPS,加速度,⾓速度など0.1秒単位⾞両位置
© Mobility Technologies Co., Ltd. 28処理対象⾛⾏計算 - 収集対象エリアに絞り込む● 全ての⾞両位置を収集すると無駄が多い● 事前に定義した収集対象エリア範囲の⾞両位置のみ蓄積出来るよう、地理空間クエリなどを駆使し絞り込んでいるー 対象エリアー エンジンONからOFFまでの⾞両位置収集対象エリア外の⾞両位置
© Mobility Technologies Co., Ltd.汚いデータを不採⽤にする● ⾛⾏が途切れている場合● 駐⾞場から出るなどして道路を端から端まで⾛りきってない場合● GPSの特性上誤差が⽣じ、時速300kmなど現実的な⾞速に収まっていない場合29処理対象⾛⾏計算 - データクレンジング道路駐⾞場© OpenStreetMap contributors
© Mobility Technologies Co., Ltd. 30動画収集03
© Mobility Technologies Co., Ltd. 31動画収集DRIVE CHARTセンサー収集マップマッチ処理対象⾛⾏計算⾞両位置格納タスク動画リクエスト動画格納⾞両位置動画 物体検出物体位置推定差分判定認識物体地図AWS BatchAWS BatchAuroraPostgreSQLAuroraPostgreSQLAuroraPostgreSQLLambda / ECS / Batch S3⾛⾏収集動画収集認識差分判定モジュール データと処理の流れ タスクの状態管理The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions license
© Mobility Technologies Co., Ltd.リクエストした動画を⾮同期でアップロードする32動画収集システム構成図S3②リクエスト 動画収集システムECS動画ストレージS3動画リクエスト動画格納動画収集動画データアップロードシステム③アップロード①リクエスト④保存SQS⑤完了通知⑥取得⑦コピーモバイル回線The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions license
© Mobility Technologies Co., Ltd. 33要件●出来るだけ多くの画像を⽤いて物体検出率を⾼めたい○ オクルージョン(他の物体で⾒えない)や逆光が発⽣すると正しく物体検出できないため●⼀時的な標識を除外したい○ 1⽇しか⽴たないような⼯事の標識を変化として捉えないようにするため●予算内に収める
© Mobility Technologies Co., Ltd. 34制約●同時にアップロード出来る動画量に限度がある○ 通信キャリア回線全体の負荷回避のため●デバイス⼀台あたりでアップロード出来る動画量に限度がある○ DRIVE CHARTサービスに影響が出ないようにするため○ → 取得するデバイスをばらして⼀台からアップロードする量を少なくする必要がある●数⽇前の動画はアップロード出来ない○ SDカードに映像が常時記録されていき、古い動画ファイルから上書きされ消えていくため
© Mobility Technologies Co., Ltd. 35まず全部取ることを考えてみたが・・・● とても予算内には収まらなかった○ モバイル回線でアップロードするため通信量に応じて従量課⾦される1ヶ⽉のアップロードコスト推定エリア 動画サイズ推計 コスト推計(※)京浜地区⼀般道路 2,300TB 4.7億円(※)⼀般的なキャリア回線の料⾦である10GB/2000円として計算
© Mobility Technologies Co., Ltd.●実験した結果、物体検出率的には最低3個候補があればいいことがわかった●3回収集に抑えられればコストが98%減になる36全ての要件と制約を満たす動画を選ぶアルゴリズムを考案した⾛⾏回数道路道路ごとの⾛⾏回数3回2%98%3回12500回拡⼤すると1250010000750050002500
© Mobility Technologies Co., Ltd. 37全ての要件と制約を満たす動画を選ぶアルゴリズムを考案したday1 day2 day3 day4 day5 day6 day7道路1道路2道路3道路4⾛⾏動画収集対象⼯夫点 解決している要件・制約期間内に3回収集する 出来るだけ多くの画像を⽤いて物体検出率を⾼めたい予算内に収める収集⽇程を分散する ⼀時的な標識を除外したい⼀つの道路につき1日最大1回まで収集する ⼀時的な標識を除外したい同時にアップロード出来る動画量に限りがある負荷が少ない車両から収集する デバイス⼀台あたりでアップロード出来る動画量に限りがある⽇次で動画収集するかどうか判断する 数⽇前の動画はアップロード出来ない
© Mobility Technologies Co., Ltd. 38運⽤開始して⾒つかった問題実際に収集し始めたら予期せぬ回線負荷が発⽣した●事象○ 夜間少しずつ動画リクエストしていたが、翌朝⼀⻫にアップロードが始まり、回線に負荷がかかった●原因○ アップロード処理はエンジンON時のみ動く○ 夜間リクエストした⾞両のエンジンONのタイミングが朝に重なったため●対応○ 1⽇分の動画を翌⽇⽇中に分散してリクエストし、負荷の平準化を⾏った
© Mobility Technologies Co., Ltd. 39まとめと今後の展望04
© Mobility Technologies Co., Ltd. 40まとめと今後の展望●⾞両位置収集○ ⾛⾏が途切れていたり、道の途中から始まっていたり、⾮現実的な速度が出てるデータを不採⽤にする●動画収集○ 通信費がかかりすぎるので全データを取ることは出来ない○ 3回収集できれば物体検出率も⼗分であり、通信コストも予算内に収められることがわかった●今後の展望○ 収集対象を絞り込み、物体検出率、処理効率をより上げていく■ 低解像度動画、悪天候、逆光、渋滞を避ける
© Mobility Technologies Co., Ltd.AWS Batchを⽤いた画像処理の分散実⾏2023/02/15
© Mobility Technologies Co., Ltd. 42⾃⼰紹介データエンジニア / ⾼⼭ 将太 @taka_nigoroDeNA⼊社後、マンガアプリの開発や野球映像の解析に従事。現在はMobility Technologiesで分散実⾏基盤の開発を担当。趣味はゲームでほぼ毎晩やってます。Apex Legendsはマスターランクです。
© Mobility Technologies Co., Ltd. 43システム構成図DRIVE CHARTセンサー収集マップマッチ処理対象⾛⾏計算⾞両位置格納タスク作成タスク動画リクエスト動画格納⾞両位置動画 物体検出物体位置推定差分判定認識物体地図AWS BatchAWS BatchAuroraPostgreSQLAuroraPostgreSQLAuroraPostgreSQLLambda / ECS / Batch S3⾛⾏収集動画収集認識差分判定モジュール データと処理の流れ タスクの状態管理The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)The design is licensed under the Creative Commons 3.0 Attributions license
© Mobility Technologies Co., Ltd. 44今⽇の内容1. AWS Batchを⽤いた画像処理の分散実⾏2. システムを構築する上での⼯夫点3. まとめ
© Mobility Technologies Co., Ltd. 4501 AWS Batchを⽤いた画像処理の分散実⾏
© Mobility Technologies Co., Ltd. 46分散実⾏が必要な理由⼀定期間内に⼤量のデータを処理する必要があるため● 1か⽉で処理する動画の合計は1500時間を超える● もし1並列で処理すると45⽇かかる● 今後10倍以上にデータが増えるため分散実⾏なしでは対応できない
© Mobility Technologies Co., Ltd.● データベースからの⼊⼒が必要● 画像処理以外の計算が必要● 処理に依存関係がある47処理の特徴動画メタデータ処理対象の動画を検索動画を画像に分割検出結果のつなぎ合わせ物体検出緯度経度推定へ
© Mobility Technologies Co., Ltd.他のサービスと⽐較して、AWS Batchを採⽤した● SageMaker Batch Transform︓機械学習のバッチ推論サービス。開発運⽤は楽だが、データベースからの⼊⼒を扱えない● ECS︓汎⽤コンテナ実⾏サービス。ECSクラスタの環境構築が⼤変。依存関係の制御ができない● EKS︓マネージドKubernetesサービス。Kubernetesの学習コストが⾼い48分散実⾏サービスの選定
© Mobility Technologies Co., Ltd. 49AWS Batchについてカスタムコンテナの分散実⾏をいい感じにやってくれるマネージドサービス● EC2インスタンスを管理してくれる○ インスタンスの起動と停⽌をやってくれる○ 処理量に応じてインスタンスの数を調整してくれる● 依存関係のある処理のステータス管理をやってくれる○ 前段の処理が成功したら後段の処理を開始する
© Mobility Technologies Co., Ltd.● ジョブ︓処理の実⾏単位● ジョブ定義︓ジョブを作成する際のテンプレート● ジョブキュー︓ジョブをキューイングしておく場所● コンピューティング環境︓インスタンスタイプやvCPUなどEC2の設定50AWS Batchの構成要素
© Mobility Technologies Co., Ltd.● 1500時間の動画は40000データユニットに分割されている● 依存関係を定義したジョブをAWS Batch APIに提出● キューに溜まったジョブを64並列で分散実⾏51AWS Batchを⽤いた画像処理の分散実⾏物体検出ジョブキューGPUインスタンス物体検出ジョブ1緯度経度推定ジョブ1物体検出ジョブ2緯度経度推定ジョブ2GPUインスタンス緯度経度推定ジョブキューCPUインスタンスCPUインスタンスAWS BatchAPI物体検出ジョブ1物体検出ジョブ2緯度経度推定ジョブ1緯度経度推定ジョブ2コンピューティング環境
© Mobility Technologies Co., Ltd. 5202 システムを構築する上での⼯夫点
© Mobility Technologies Co., Ltd. 53⼯夫① 処理ごとに適したインスタンスタイプの選択● やりたいことコストパフォーマンスが最⼤となるインスタンスタイプを選択したい○コストパフォーマンスを秒間処理フレーム数÷インスタンスコスト($/h)で定義● 実現⽅法インスタンスタイプごとにコストパフォーマンスを計算し、コストパフォーマンスが最⼤となるインスタンスを選択
© Mobility Technologies Co., Ltd. 54⼯夫① 処理ごとに適したインスタンスタイプの選択物体検出において、処理速度はp3.2xlargeが最速だがコストパフォーマンスはg4dn.xlargeが最適
© Mobility Technologies Co., Ltd. 55⼯夫① 処理ごとに適したインスタンスタイプの選択緯度経度推定において、コストパフォーマンスはc4.xlargeが最適● 現状の実装ではSLAMの計算はCPUを1コアしか使わないため、CPUを増やしても処理時間は変化しない
© Mobility Technologies Co., Ltd. 56⼯夫② Dockerイメージのビルド効率化● 前提︓物体検出のDockerイメージのビルドにかかる時間○ CUDAに対応したOpenCVのビルド︓85分○ 使⽤するPythonパッケージのインストール︓5分○ 物体検出のPythonソースコードのダウンロード︓1分● 問題点︓ソースコードだけに変更がある場合でも⼀からビルドすると時間がかかり、迅速なトライアンドエラーができない● やりたいこと︓使⽤するPythonパッケージやソースコードだけに変更が⼊る場合のビルド時間を短縮したい
© Mobility Technologies Co., Ltd. 57⼯夫② Dockerイメージのビルド効率化● 実現⽅法︓Dockerイメージのビルドを⼆段階にわける● 結果︓使⽤するPythonパッケージやソースコードに変更がある場合のビルド時間を短縮し、迅速なトライアンドエラーができるようになったOSCUDA OpenCVソースコードPythonパッケージOSCUDA OpenCVソースコードPythonパッケージ91分85分6分
© Mobility Technologies Co., Ltd. 58⼯夫③ 物体検出の処理性能の改善● 問題点︓GPU使⽤率が60~70%になっていて性能を⼗分引き出せていない● やりたいこと︓GPU使⽤率を上げて処理性能を改善したい● 実現⽅法︓1つのAWS Batchジョブの中で2並列でデータユニットを処理する。AWS Batchは1つのGPUに対して1つのジョブしか割り当てられないため。● 結果︓GPU使⽤率を100%近くまで上げ、処理性能を1.4倍にすることができた
© Mobility Technologies Co., Ltd. 5903 まとめ
© Mobility Technologies Co., Ltd. 60まとめ● AWS Batchを⽤いた画像処理の分散実⾏40000データユニットをAWS Batchを⽤いて64並列で分散実⾏● システムを構築する上での⼯夫点○ 処理ごとに適したインスタンスタイプの選択○ Dockerイメージのビルド効率化○ 物体検出の処理性能の改善
© Mobility Technologies Co., Ltd.⽂章・画像等の内容の無断転載及び複製等の⾏為はご遠慮ください。