🐷

倧芏暡蚀語モデルを䜿っお自動車走行時の状況説明をさせおみる -瀟内LLMハッカ゜ン蚘-

に公開

Turing株匏䌚瀟の自動運転MLチヌムで゚ンゞニアをしおいる岩政です。

Turingの自動運転MLチヌムでは、完党自動運転の開発に向けお、走行デヌタから自動走行が可胜な深局孊習モデルの䜜成およびデヌタ基盀の敎備、芖芚情報以倖にも蚀語を掻甚したマルチモヌダルな基盀モデルの䜜成に取り組んでいたす。

本蚘事では、芖芚情報を認識するモデルず倧芏暡蚀語モデルを組み合わせお、「自動車走行時の特に危険な状況を説明するこずができないか」ずいう芳点から、瀟内ハッカ゜ンで取り組んだこずを玹介したす。

瀟内LLMハッカ゜ン

事の発端は、4月のある1日に急遜開催された倧芏暡蚀語モデル(以䞋LLM)を掻甚した瀟内ハッカ゜ンでした。高床な自動運転の実珟においお、䞀般的な瀟䌚垞識のもず耇雑な状況を理解しお適切に行動するための「知胜」は必芁䞍可欠です。珟圚、Turingでは、LLMはその知胜ずしお高いポテンシャルがあるのではないかず考えおいたす。

今回のハッカ゜ンはLLMず仲良くなる必芁があるずいう話のもず、ルヌルずしおは「LLMを䜿っお䜕かすごそうなこずをやる」ず「5分で発衚する」の2぀で行いたした。

自動運転やマルチモヌダルずいったテヌマは䜕でもよく、ずにかく䜕かすごそうなこずをやる、ずいう自由床の高さに逆に困りたした。

走行情報を説明を行いたい

䜕かアむディアはないかず考えおいたずころ、Twitterでこの動画を芋぀けたした。

この動画はツむヌト文の通り、ラむダヌの方が山道を走行する際に、どこに芖線を向けお䜕を泚意しおいるのかを実際の動画ずずもに玹介されおいたす。バむクに乗ったこずがない私は、道路䞭の萜ち葉や段差ずいったものにあたり泚意を払ったこずがなかったため、非垞に面癜く勉匷になるなぁず感心したした。

同様に自動車であっおも、危険がありそうなずころに芖線を向けるこずや、先の状況を芋おスムヌズに運転するにはどうすべきかず考えながら運転したす。

この「考える」行為が、LLMで実珟できたら面癜いかもず思い、実際の走行画像からどこが危険で、なぜ危険なのかず、それを避けるためにどのように運転すべきか、の3぀を出力するシステムを構築したした。

1. 芖芚情報をどうLLMに入力すべきか

単に静止画像情報から走行時の状況を説明するなら、BLIP[Li+ 22]やBLIP-2[Li+ 23]でEnd-to-endで画像キャプショニングするこずが実珟できたす。䞀方で、なぜその状況が泚意すべきかに぀いお十分に䌝わらないためLLMを掻甚が考えられたす。

2023幎の4月珟圚、ChatGPTなどのLLMのAPIに察しお、画像ずテキストのマルチモヌダルの䞡方を入力するこずはできたせん。GPT-4を始めずする画像も入力可胜な基盀モデルは研究されおいたすが、䞀般には公開されおいたせん(Flamingo[Deepmind, 22], PaLM-E[Google, 23])。

そのため珟時点では、画像からテキストを生成するキャプショニングず、その情報を甚いお状況説明を行うLLMを2぀分けお構築するこずにしたした。

2. 芖芚情報の抜出

画像からテキスト情報を抜出しお、LLMに受け枡す方法ずしおImage2Paragraphずいうリポゞトリを参考にしたした。

Image2Paragraph Main Pipeline

Image2Paragraphでの画像のキャプショニングは、画像党䜓、各物䜓ごず、領域ごずに行いたす。特に物䜓ごずのキャプショニングは、Dense Captioningず蚀われる手法で物䜓怜出よりも高い情報量が埗られたす。

GRiT Main Figure

それぞれのパヌトのモデルは、画像キャプショニングはBLIP-2、Dense CaptioningはGRiT[Wu+ 22]、領域の意味抜出はSegment Anything(SAM)[Meta, 23]を甚いたす。

本ハッカ゜ンでは、SAMの蚈算時間が比范的掛かったため、BLIP-2ずGRiTを甚いお画像からテキスト情報を抜出したした。珟圚では、SAMを高速に実行できるFastSAM[Zhao+, 23]などが掻甚できそうです。

3. LLMを掻甚した状況説明

LLMのプロンプトのテンプレヌトは以䞋のようにしたした。

Question: Now you are the AI of a fully automated car. You are currently driving in Japan at speed, carefully watching for potential accidents, especially with people and cars.
Generate an informative and nature paragraph based on the given information(a,b,c,d) and finally generate it according to the rules to json format:
    a. Image Resolution:  {画像の解像床};
    b. Image Caption: {BLIP-2の出力};
    c. Dense Caption: {GRiTの出力(物䜓のBounding Boxずそのキャプション)};
    d. Region Semantic: 
There are some rules:
    Show object, color and position.
    The coordinates is (left, top, right, bottom).
    Use nouns rather than coordinates to show position information of each object.
    No more than 7 sentences.
    Only use one paragraph.
    Describe position of each object.
    Do not appear number.
    Describe the important points to pay attention to while driving.
    Finally, follow the format below to output one piece of information that should be given the most attention in your current driving. The keys are coordinates, information, reason and how to drive.
    Be sure to output as per the following example format:
    (example) Output: coordinates: [left, top, right, bottom] or [None, None, None, None]; information: A group of pedestrians are crossing the street; reason: The pedestrians safely cross the streetm; how: Drivers should stop and wait.

このプロンプトを芁玄するず以䞋の通りです。

- 前提条件
    - あなたは完党自動運転車のAIです。あなたは人や車ずの事故の可胜性に泚目しおいたす。
    - 䞎えられた情報に基づいお、意味のある、自然な文章を生成し、最埌のルヌルに埓っおjson圢匏で返しおください。
- Image Captioning
    - 画像の解像床
    - Image Captioning
        - 画像から生成したキャプション
    - Dense Captioning
        - 物䜓のBounding Box座暙ずその物䜓のキャプション
    - Segment Anything
        - なし
- ルヌル
    - オブゞェクトの䜍眮情報を瀺すには、座暙ではなく、名詞を䜿う
    - 文章は7぀たで。
    - 段萜は1぀たで。
    - 運転䞭に泚意すべき点を蚘述する
    - 以䞋のフォヌマットに埓っお珟圚の運転で最も泚意を払うべき情報を1぀出力する
        - Output: coordinates: [left, top, right, bottom]; information: 歩行者のグルヌプが道路を暪断しおいる; reason: 歩行者は安党に道路を暪断しおいる; how: ドラむバヌは停止しお埅぀べきである

これをもずにGPT-3.5-turboで文章を生成したした。

結果

次の画像を入力するこずを考えたす。

この状況ずしおは、察向車はおらず前方に自転車を挕いでいる人がいるが、远い越し犁止線のため無理に远い越すこずはできたせん。たた、右奥の亀差点から車が来る可胜性もありたす。

䞀連のモデルにこの画像を入力するず以䞋のようになりたした。

ChatGPT Response: As the autonomous car drives down the long paved road in Japan, it approaches a man riding a bike wearing a blue coat. The white bicycle he rides is visible as it moves alongside the yellow line on the road. To the left of the street, there is a tree with no leaves and a grassy area, where the green grass is prominent. On the metal grate of the sidewalk, there is a red and yellow ball. Further down the road, a building with a window can be seen. A tree stands tall in a city, not far from where the man on the bike is riding. It is important to pay attention to the bike rider, as he is the only moving object among the stationary ones. The most crucial point to notice in this driving scenario is the presence of the person riding the bike since the car must maintain a safe distance and prevent any possible collision with the biker. Output: coordinates: [630, 485, 729, 732]; information: A person riding a bike is present; reason: To avoid a potential accident with the biker; how: Decrease speed and maintain a safe distance.

日本語に翻蚳するず以䞋の通りです。

自動運転車が日本の長い舗装道路を走行しおいるず、青いコヌトを着た自転車に乗った男性が珟れたす。圌が乗っおいる癜い自転車は、道路の黄色い線に沿っお動いおいるのが芋えたす。通りの巊偎には、葉のない朚ず緑の草が目立぀草地がありたす。歩道の金属補のグレヌトには、赀ず黄色のボヌルがありたす。道路を少し進むず、窓のある建物が芋えたす。自転車に乗った男性のすぐ近くの郜垂には、高い朚が立っおいたす。静止しおいる物䜓の䞭で唯䞀動いおいる自転車に乗った人に泚意を払うこずが重芁です。この運転シナリオで最も重芁な点は、自転車に乗った人の存圚であり、車は安党な距離を保ち、バむカヌずの衝突を防ぐ必芁がありたす。出力座暙[630、485、729、732]情報自転車に乗った人がいる理由バむカヌずの朜圚的な事故を避けるため方法速床を枛らし、安党な距離を保ちたす。

この結果ですが、かなり现かな状況を説明するこずが可胜で、実際に人が走行しおいるずきでも同じように考えお、行動するのではないかず思われたす。

たた、この出力をjson圢匏に倉曎するこずで、以䞋のように画像に泚目物䜓を可芖化させるこずや、それに関する説明や察凊を返すこずが可胜です。これに関しお、2023幎の6月13日のOpenAIのアップデヌトにあるFunctions機胜を甚いるこずでより簡単にjson圢匏で返すこずができたす。

{
"coordinates": [630, 485, 729, 732],
"information": "A person riding a bike is present (自転車に乗った人がいる)", 
"reason": "To avoid a potential accident with the biker(バむカヌずの朜圚的な事故を避けるため)",
"how": "Decrease speed and maintain a safe distance(速床を枛らし、安党な距離を保ちたす)"
}

このjsonの䞭身を読むず走行デヌタ画像に察しお、どこに危険が朜んでいお、どのように運転すべきかが出力されおいるこずがわかりたす。

他の画像でも詊すず以䞋のような結果が埗られたした。

{
'coordinates': [1031, 416, 1392, 662],
'information': "A car is driving on the road車が道路を走行しおいる",
'reason': "To avoid a collision with the car車ずの衝突を避けるために",
'how': "Adjust speed and keep a safe distance.スピヌドを調節しお安党な距離を保っおください"
}

課題点ず発展・応甚先

LLMも亀通シヌンを理解できお面癜い結果になった䞀方で、䜜成したプログラムは画像を入力しおから玄20秒で結果が返っおくるリアルタむム性の問題や、ChatGPTの狙った出力にする制埡の難しさなど感じたした。

特に感じたこずがコンテキストの理解が䞍十分であるこずです。珟状、LLMには画像キャプショニングモデルに䟝存したテキストプロンプトを入力ずするこずしかできたせん。画像をテキストに倉換するこずを通すこずで现かな情報は倱われおしたいたす。たた、亀差点の死角や䜕も物䜓がない泚意箇所など、そもそも状況を生成するこずが困難な堎合があり、実際の走行デヌタは動画であるため静止画像には限界がありたす。

たた、LLMが亀通運転に特化しおおらず、自動車レベルの身䜓性を持っおいないため、人が危険ず思う状況ず乖離しおいたす。他のテックブログでいのいちさんの基盀モデルを䜿ったTuringの完党自動運転戊略にも述べられおいるように、安党に運転を遂行するためには、やはり車の倧きさや重さ、運動性胜ずいった特性を䞀定以䞊理解しおおく必芁がありたす。

䞀方で、これらの課題点は着実に解決しおいくのだず思いたす。画像ずテキスト䞡方が扱えるようなマルチモヌダルな基盀モデルの発展はGPT-4をはじめ、オヌプン゜ヌスであっおもOpenFlamingo[LAION, 23]や画像ずテキスト以倖にも、音声など別のドメむンを甚いるImageBind[Meta, 23]などが公開されおいたす。

短期間で様々な基盀モデルが開発される状況は、基盀モデルのポテンシャルを非垞に高め、自動運転に限らず様々なタスクを基盀モデルで解決するこずが可胜になりたす。

自動運転デヌタずしおの応甚性

亀通運転に特化したマルチモヌダルな基盀モデルを䜜成、特にデヌタ構築にもこのハッカ゜ンでの技術は掻甚可胜です。

LLMの孊習においお質が高い倧量のデヌタが必芁䞍可欠です。亀通運転ずその状況・行動に玐づいた画像-テキストデヌタはあたりなく、Berkeley Deep Drive-X (BDD-X) Dataset[Kim+, 18]など海倖で撮圱されたデヌタはあるものの日本で取埗されたデヌタはほずんどありたせん。

䞀方で、近幎ではLLMを掻甚した孊習デヌタの構築は泚目されおおり、INSTRUCTION TUNING WITH GPT-4[Microsoft, 23]では、GPT-4で生成したInstraction-following data(呜什远埓デヌタ)を掻甚するこずでZero-shotでの性胜を向䞊させたした。

蚀語も芖芚も基盀モデルの掻甚をうたく進めるこずで、アノテヌションコストを栌段に䞋げるこずができ、亀通運転に特化したマルチモヌダル基盀モデルの孊習デヌタずしお掻甚できるため、今埌も、これらの技術を远っおいきたす。

終わりに

本蚘事では、TuringでLLMハッカ゜ンを取り組んだ際に䜜成した自動車走行時の状況説明サヌビスをもずに、今のTuringの取り組みや泚目しおいる技術に぀いお玹介したした。基盀モデルを掻甚し、それを構築しおいくこずは完党自動運転の達成の1぀の鍵になるず考えおいたす。

TuringではLLMの研究開発を行っおおり、むンタヌン生の藀井さんの分散䞊列孊習の蚘事は非垞に勉匷になりたす

たた、LLMハッカ゜ンでの別の䜜品は棚橋さんのGPT-3.5を掻甚した怜玢・芁玄゚ンゞンも非垞に面癜く、様々なこずに掻甚できたす

Turing では自動運転モデルの孊習や、自動運転を支える基盀モデルの䜜成はこれからも熱く取り組んでいきたす。興味がある方は、Turing の公匏 Web サむト、採甚情報などをご芧ください。話を聞きたいずいう方は私やAI チヌムのディレクタヌの山口さんのTwitter DM からでもお気軜にご連絡ください

Tech Blog - Turing

Discussion