金曜日, 5月 9, 2025
No menu items!
ホームニューステックニュースAWSDeepRacer@Honda杯 #AWS - Qiita

AWSDeepRacer@Honda杯 #AWS – Qiita



AWSDeepRacer@Honda杯 #AWS - Qiita

はじめに

本田技研工業でアプリ開発を担当している松村です。
先日、社内でAWSDeepRacerを使用したレース大会があり、
自身が所属する「デジタルラボ」の有志で参加しました。

AWSDeepRacerとは

クラウドベースの 3D レーシング シミュレーターと強化学習によって駆動する完全自律型の 1/18 スケール レースカーを通じて、機械学習を実際に体験できるサービス
参照:https://aws.amazon.com/deepracer/

大会の概要

  • 3人1組の計14チームのトーナメント戦
  • 実際のレーシングカーモデルでレース
  • コースはAtoZを使用
  • 予選と本戦の2部構成で開催
  • ルール
    • レーシングカーを2分間コースを走らせ続けて1周毎のタイムを計測
    • 2分間のうちのコースアウトしなかった最速のタイムを記録として登録
    • コースアウトした場合はコースアウトが発生した箇所に戻してレースを再開

大会までの道のり

  1. とりあえず3Dシミュレータを使って擬似レースを実効してみる

    • 最初はサンプルコードを実行
      • def reward_function(params):
            #############################################################################
            '''
            これは all_wheels_on_track(全ての車輪がトラック上にあるか)と speed(速度)を使った
            シンプルな報酬関数の例
            '''
        
            # 入力パラメータを取得
            # すべての車輪がトラック上にあるかどうか(True/False)
            all_wheels_on_track = params['all_wheels_on_track']
            # 現在の速度(float)
            speed = params['speed']
            
            # この値を基準として、遅すぎる場合にペナルティを与える
            SPEED_THRESHOLD = 1.0
        
            if not all_wheels_on_track:
                # 車がトラック外に出た場合、非常に小さな報酬を与える
                reward = 1e-3
            elif speed 
    • 学習中に出力される動画のスクショ
      Screenshot 2025-05-06 at 18.07.54.png
    • 学習のベースコースは大会で使用される「AtoZコース」を使用
      image (1).png
  2. 強化学習の精度を高める

  3. 色々試してみる

    • 単純に速度重視、角度重視、操作数重視、センターライン重視と色々を考えて試してみた
    • 結論から言うと、1周あたり10秒以上となりあまりいい効果は得られなかった
    • チームメンバと情報交換し、操作数が少なければ少ないほど最適なコース選択して、最速な自立走行をしてくれる可能性があると話し合った
  4. 学習ログの視覚化

    • どこに注目してるか、走行軌跡、イテレーションごとの報酬などがグラフや画像で可視化
      スクリーンショット 2025-02-20 14.05.36.png
      スクリーンショット 2025-02-20 14.15.12.png
      スクリーンショット 2025-02-20 14.09.26.png

大会前日

  • この日に初めて実機を触る
  • 実機は自身が想像以上にしっかりした作りになっていた
  • 3Dシミュレータ上では一周8秒かつ完走率が高かったものもコースアウトが多発
    Screenshot 2025-05-06 at 18.41.20.png

大会当日

  • 予選
    • 2分間を2回計測し、上位5チームのみ決勝に進出
    • 我々は5位で決勝進出
  • 本戦
    • 予選結果はリセットされ、決勝の2分間の記録で順位が決まる
    • 我々は3位

まとめ

  • 報酬関数で具体的な目標を与えると学習は安定するが、具体的な目標を設定した人間の能力が上限になる
  • 報酬関数で抽象的な目標を与えると、使っている人間の能力を超えて走り方を学習してくれる。ただ学習は安定しない
  • ハイパーパラメーターは効果があるかわからない
  • コードは複雑なものよりシンプルなものの方がいい
  • シミュレータと実機では挙動が違うことが多いので、データやロジックのみをみるのではなく、実機での挙動もしっかりとみないといけないと改めて実感

採用情報

本田技研工業に少しでも興味を持っていただきましたら、
お気軽にエントリーをお願いします。



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

Most Popular

Recent Comments