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

大規模走行データを 効率的に活用する検索システムの開発 第3回Data-Centric AI勉強会

Kohei Iwamasa
September 19, 2023
880

大規模走行データを 効率的に活用する検索システムの開発 第3回Data-Centric AI勉強会

Kohei Iwamasa

September 19, 2023
Tweet

Transcript

  1. Section 01 - 01 自己紹介 自己紹介 岩政 公平 (Kohei Iwamasa)

    @colum2131 • 九州大学大学院システム生命科学府一貫制博士前期課程 在学 • Turing株式会社 AIソフトウェアチーム エンジニア ◦ 2022年8月-2023年3月 インターン ◦ 2023年4月 入社 • Kaggle Competitions Master
  2. Section 01 - 02 会社概要 完全自動運転EVの量産を目指すTuring株式会社 2021年8月創業 2021年12月 AI-based PoC

    自動運転システムを構築 2022年7月 10億円の資金調達 2022年10月 北海道一周(約1,400㎞)を自 動運転で走破 2022年 11月 500時間分の 走行データ基盤を作成 2023年6月 車両生産拠点開所 Turing Kashiwa Nova Factory 2023年2月 THE FIRST TURING CARを 販売完了 2023年3月 AIデザインの「完全自動運転EV」 コンセプトカーを発表 2023年3月 国産LLM開発着手 2023年4月 経済産業省主導 「J-Startup企業」に選出 創業      2021年8月20日 事業内容    完全自動運転EV量産 本社所在地    千葉県柏市 社員数    40名(正社員27名、インターン・アルバイト13名)
  3. Section 01 - 03 会社紹介 チーム リサーチチーム Turingの自動運転AIを開発するチーム。リサーチ・基 盤モデル開発・MLOps・大規模インフラ構築などを行 う。

    プロダクトチーム 自動運転AIと車両をつなぐチーム。 AI、ソフトウェア、 OS、計算機ハードウェアなど多岐にわたるレイヤで開 発を行う。 UXチーム IVIシステム構築を行うチーム。車に独自のスマホを搭 載するようなイメージで、 OS・アプリ・バックエンド・低 レイヤの開発を行う。 車両開発チーム 車体を開発するチーム。車体・シャシー・パワートレイ ン・駆動系など多くのレイヤを開発する。メカ・エレキ・ 低レイヤ・回路など。 🤗Heron
  4. Section 01 - 04 End-to-endの自動運転AIを目指す Turingは、カメラベースの大規模NNで完全自動運転を目指す! • 従来の自動運転のアプローチは、カメラやLiDARなどのセン サや高精度な位置情報・地図情報を活用している •

    限定区間でのドライバーレスの自動運転は可能になった が、全ての道路や複雑な状況を判断・解決は困難 • ドライバー同士のコミュニケーションが介入することや高度な 判断を求められるシーンは従来のアプローチには限界があ り、”賢い知能”を持つ大規模NNによるEnd-to-endのアプ ローチで完全自動運転の実現に挑戦している Visionを主とした大規模なデータの収集と 大規模なデータを処理して学習する基盤を整える必要がある UniAD[Hu et al. 2023]
  5. Section 02 - 01 Data-Centricな自動運転AIの開発 自動運転AIには大規模で質の高いデータが必要 • 多様性:撮影環境や地域が異なる 多様な交通条件での走行データ が求められる

    • フィルタリング:上手な運転のみを学習させたい • Auto-labeling:教師データも質と量が重要で、高精度な生成アプローチが必要である
  6. Section 02 - 02 Data-Centricな自動運転AIの開発 自動運転AIには大規模で質の高いデータが必要 • 多様性:撮影環境や地域が異なる 多様な交通条件での走行データ が求められる

    • フィルタリング:上手な運転のみを学習させたい • Auto-labeling:教師データも質と量が重要で、高精度な生成アプローチが必要である カメラ + 各種センサ情報を継続的に収集できる車載システムを構築! • カメラやGPS、加速度計などのセンサから、アクセル、ブレーキ、ハンドルなどの車の状態など • 低コストに、大規模なデータを収集を可能に データ収集車両 全方位を撮影 → 現在6,000時間以上の走行データを収集!
  7. Section 02 - 04 大規模データの課題点 数千時間の動画から狙った状況の動画を抽出したい 例えば、 • 高速道路で走行している動画が欲しい •

    右折をしている動画が欲しい • 市街地で走行している動画が欲しい • 雨が降っている夜の動画が欲しい • 交差点で歩行者がいる動画が欲しい → 速度が80km/h以上の動画を抽出する → ステアリング角が一定角度以上の動画を抽出する? → 位置情報からどうにか …? → 時間はどうにかなるけど雨はどうする …?? → どうすべき…??? 使いたい動画を”いい感じに”検索するのが難しい…
  8. Section 02 - 05 「信号機が写っている動画を抽出する」には? 必要な情報は、 信号機が写っているかどうか 、昼か夜かの時間情報 、位置情報 など

    解決案として、 動画ごとに昼・夜の時間などの動画に紐づくメタ データと物体検出モデルなどで予測した信号機の 有無といったカラムがあるデータベースを作成する 動画ID 時間(昼・夜) 信号機の有無 緯度・経度 1 昼 無し … 2 夜 有り … 3 … … … 一方で問題点として、 • 物体検出モデルが正しい検出をしない場合がある • タスクごとにデータベースを更新する必要がある • 複雑な状況に対応させることが困難 ◦ “晴れだけど道路が濡れている”はどう持つ?
  9. Section 02 - 06 自然言語で検索できると良さそう? CLIP[OpenAI. 2021]のImage/Text Encoderを用いて簡単な情報検索モデルが構築できる! • 比較的シンプルに文章で画像を検索することが可能

    • 車の速度や時間など画像以外で得られる情報を活用することが難しい? Text Encoder Image Encoder 検索文 “夜の信号機” 画像の 埋め込み ベクトル 検索文の 埋め込み ベクトル 類似した画像を検索 検索された画像 入力画像 import torch from PIL import Image import clip # pip install git+https://github.com/openai/CLIP.git model, transform = clip.load("ViT-B/32", device="cuda") image_paths = ["image1.jpg", "image2.jpg", ...] images = [ transform(Image.open(path)).unsqueeze(0) for path in image_paths ] images_tensor = torch.cat(images).to("cuda") text_tendor = clip.tokenize(["query"]).to("cuda") with torch.no_grad(): image_f = model.encode_image(images_tensor) text_f = model.encode_text(text_tendor) sim = (text_f @ image_f.T).squeeze(0) ranking = torch.argsort(sim, descending=True) print([image_paths[i] for i in ranking])
  10. • 晴れた市街地だ • 右側に車 • 信号機は青色 • 歩行者用信号機は赤色 • 横断歩道が前方にある

    • 横断歩道が左側にもある • 歩行者が4人いる Section 03 - 03 必要なデータの抽出 走行データから動画と車の状態に関するログを抽出する • 動画は画像に変換されてImage CaptioningとDense Captioningによって、 画像レベル、画像中の物体レベルでキャプショニング(説明文付け)を行う • 車の状態のログから、撮影時刻、平均速度、ステアリング角を抽出する • 時刻は15:45 • ステアリング角度は0度 • 車の速度は10km/h
  11. Section 03 - 04 BLIP2による画像キャプショニング BLIP-2[Li et al. 2023]は、Image CaptioningなどImage-to-Textタスクで高精度なモデル

    • 右の画像で、Question: which city is this? Answer:というプ ロンプトに対してa car driving down a highway with a factory in the backgroundと出力される! • 一方で細かな物体検出は苦手であり、Question: are there traffic lights in this photo? Answer:という プロンプトに対してyesと出力される… • 画像全体の情報をテキストにする!
  12. Section 03 - 05 GRiTによる”密な”キャプショニング Dense Captioningは画像の局所領域と自然言語を対応づける • 物体検出とImage Captioningが合わさった手法

    • GRiT[Wu et al. 2022]はDense Captioningにおける高精度なモデル • 画像の細かな領域の情報をテキストにする! • 前方のバイクに対して → a person riding a motorcycle • 前方の奥の対向車に対して → white car on the road • 空に対して → a cloudy gray sky • 左の標識に対して → a white sing on the side of the road など GRiTより一部改変[Wu et al. 2022]
  13. Section 03 - 06 GPT-3.5で文章に変換するプロンプト BLIP2やGRiTの結果、車の状態のログからのデータをプロンプトとして入力する • BLIP2は、画像全体の説明と、画像のみから得られる 天気と時刻の説明文 •

    GRiTは、物体の説明文とそのBounding Boxの座標値 ◦ 例)white line on the road: X:1292 Y:747 Width:360 Height:295 • ログは、適切な言葉に変換する ◦ 速度であれば平均速度25km/h以下はslowで、60km/h以上であればfast など GPT3.5でも適切な文章に変換できるようにプロンプトの先頭に以下を追加 • 送信側が500トークン、返答側が250トークン程度のため10,000サンプルで12.5ドルで可能 翻訳)ドライブレコーダーで撮影されたビデオのサムネイル画像のオブジェクト認識モデル、天気の説明、実際の 撮影時間、画像だけから推測される昼夜の時間帯(昼または夜)、車の平均速度、ステアリングホイールの最大角 度が与えられます。視覚の制約を持ちながら、知的な画像キャプション作成者であると仮定してください。与えられ た位置情報は、オブジェクトの左上の座標とオブジェクトのサイズです。オブジェクトの相対的な位置とサイズを使 用して、小学生が理解できるように、この画像を約150語で説明してください。車がどれくらい速く走っているか(速 い、遅い、普通)と、右に曲がっているのか、左に曲がっているのか、またはまっすぐ進んでいるのかを含めてくだ さい。
  14. Section 03 - 08 実際に画像を文章化してみる 翻訳)車のドライブレコーダーが撮影した動画のサムネイル。 車は亀のようにゆっくりと進んでいる。小さなカーブを曲がりながら左折している。 画像は太陽が高い位置にある正午頃に撮影された。 道路には、車を誘導する白い線が見える。 黒と黄色の標識が2つ近くに立っており、少し離れた場所にも同じような標識

    がある。 これらの標識はドライバーに情報を与えている。金属製のポールに取り付けられた大きな看板もある。 遠くの広い畑の近くに道路があり、車が通れるようになっている。 道路の近くには赤と白の標識があり、ドライバーに重要なことを警告 している。 他にも、黄色に黒文字の看板や、値段の書かれた看板など、文字や絵の書かれた看板がある。 周囲を見回すと、ドライバーの安全を守るための標識や表示が道路上にたくさんある ことに気づく。 注意標識、はしごのような構造物、ポールの上の赤いライト、色や形の違う標識などだ。オレンジと白のコーン も見えるが、これは通常、 特別な理由で設置される ものだ。全体として、 ドライバーはゆっくり運転しながら道路 標識に注意を払い、曲がっているように見える 。
  15. Section 03 - 09 テキストをベクトル化して検索 • openai.Embeddingのtext-embedding-ada-002でテキストをベクトルに変換 • 検索文もベクトル化して、faiss[Johnson et

    al. 2019]を 用いて高速な近傍探索で検索 • StreamlitでWebアプリ化や、FastAPIでのAPI化 で大量データの抽出を容易になった🙌 streamlitでの操作 curl -X POST "http://localhost:8000/search/" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{\"search_text\":\"night\",\"download_number\":10}" FastAPIでのリクエストコマンド
  16. Section 03 - 10 検索文:“My car is waiting at the

    traffic light in front of the intersection at night.”
  17. Section 04 - 01 今後の展開・活用 • 画像認識するAI → LLM →

    文章検索と疎結合のためどこかにブレイクスルーが起きると システムが変更される可能性(良い意味で) ◦ 特に画像認識するAI → LLMは、GPT-4やBard、これから出るモデルで解決できそう • 信号機の検出以外の交通エージェントや標識検出など様々なタスクにも活用できる! ◦ 一方で日本特有の標識などを捉えることが困難 ◦ 場合によってはOCRを導入することも考えられる • “車線変更”や“高速道路での合流”などのコンテキストが動画説明に含まれていない ◦ 走行動画の動作から意味説明を行う必要がある
  18. Section 04 - 02 今後の展開・活用 • 画像認識するAI → LLM →

    文章検索と疎結合のためどこかにブレイクスルーが起きると システムが変更される可能性(良い意味で) ◦ 特に画像認識するAI → LLMは、GPT-4やBard、これから出るモデルで解決できそう • 信号機の検出以外の交通エージェントや標識検出など様々なタスクにも活用できる! ◦ 一方で日本特有の標識などを捉えることが困難 ◦ 場合によってはOCRを導入することも考えられる • “車線変更”や“高速道路での合流”などのコンテキストが動画説明に含まれていない ◦ 走行動画の動作から意味説明を行う必要がある これらの課題解決のためにHeronを開発中!
  19. Section 04 - 04 HeronでVideo-to-Textモデルを開発 There is a bus running

    ahead. It is turning right and intruding into the oncoming lane. The traffic light is red. Please decelerate. What is the vehicle ahead? Where is it headed? What color is the traffic light? Should I accelerate? Should I decelerate? • 現在は動画から文章を生成するVideo2TextのモデルもHeronで開発中!
  20. まとめ:大規模走行データを効率的に活用する検索システムの開発 • 背景・解決策 ◦ 課題:大規模走行データセットから狙った状況を含む走行動画を抽出したい ◦ 解決策:Vision&LanguageモデルやChatGPT APIを活用して     テキストで検索できるシステムを構築 •

    検索システム ◦ Image CaptioningとDense Captioningを活用して画像から状況を説明 ◦ 撮影時刻や車の速度などとともに適切なプロンプトで GPT-3.5によって走行動画の文章化 → 1万動画で12.5ドルで文章化可能! ◦ この説明文や検索文を埋め込みベクトルに変換して faissで高速に検索 → 欲しい動画を抽出できた! https://zenn.dev/turing_motors/articles/ai-movie-searcher