iT邦幫忙

2024 iThome 鐵人賽

DAY 5
1
AI/ ML & Data

不用買特斯拉也能自動駕駛?!30天學會訓練自己的自駕模型,再也沒人會說你不懂AI!系列 第 5

DAY 5 教學:ModelB6.py 的探討與神經網路結構_(附上音樂🎵)

  • 分享至 

  • xImage
  •  

🎯 今日學習目標

  1. 了解 ModelB6.py 的神經網路架構及其組成部分。
  2. 探討 ModelB6 與 supercombo079 之間的關聯。
  3. 理解模型的輸入與輸出,以及 RNN 在網路中的作用。
  4. 分析模型訓練的過程與實際應用中的挑戰。

🧠 ModelB6.py 與 supercombo079 的關聯

ModelB6.py 是模仿 supercombo079 建立的神經網路模型,包含了 EfficientNetRNNPoseNet 三個部分。這些模型結合後,主要用於進行自駕車的路徑預測。

ModelB6 與 supercombo079 的對比

  • supercombo079 是 2019 年由 common AI 開發的模型,其主要作用是進行自動駕駛中的路徑預測。
  • 我們現在使用的 supercombo092 是經過改進的新版本,主要在路徑標識上有更多的資訊,例如加入了左右車道的標線。

模型比較

  • supercombo079:僅有兩條路標線。
  • supercombo092:具有四條路標線,增加了對左右車道的識別能力,適用於更複雜的路況。

https://ithelp.ithome.com.tw/upload/images/20240919/20169470oocjYvmcsL.pnghttps://ithelp.ithome.com.tw/upload/images/20240919/20169470bdRhqomUnQ.png


⚙️ ModelB6 的架構解析

ModelB6 是基於 EfficientNetRNN 架構的一個多輸入多輸出的模型。它主要包含四個輸入:

  1. 影像檔案數據:yuv 格式的影像數據會被轉換成 h5 格式進行處理。
  2. 左右駕駛訊息:這是關於自駕車當前駕駛狀態的數據。
  3. 導航訊息(Desire):包括當前是否需要直行、左轉、右轉等操作,這會影響路徑規劃。
  4. RNN State:過去的輸出訊息會回饋成為未來輸入的一部分,讓模型能夠基於歷史數據進行預測。

https://ithelp.ithome.com.tw/upload/images/20240919/20169470GIB23EcEFl.png


🛠️ 模型的輸入與 RNN 的作用

ModelB6.py 中,RNN(循環神經網路) 負責將之前的輸出回饋進入網路,使得模型能夠考慮到過去的狀態,這在時間序列的預測中特別重要。

輸入與輸出分析

  • 輸入

    • 影像數據:格式為 (1, 12, 128, 256),其中 12 是時間步長,128 是影像的高度,256 是影像的寬度。
    • 左右駕駛訊息:格式為 (1, 2)
    • 導航訊息(Desire):這是一個向量 (1, 8),代表駕駛的預期行為,例如是否要左轉、右轉或直行。
    • RNN State:格式為 (1, 512),記錄了過去的輸出。
  • 輸出

    • 總共會產生 12 個 output,但圖中只顯示 11 個,這是因為有一個輸出會被作為 RNN 的 Hidden State,用於未來的輸入。

📝 模型訓練與實際應用中的挑戰

在訓練 ModelB6 時,我們遇到了一些問題,特別是在 custom loss 定義方面。模型的預測路徑過短,這可能是因為訓練時未將雷達數據考慮進去。

訓練過程中的挑戰

  1. Custom Loss 的問題:我們在訓練時,custom loss 的定義可能不夠完整,沒有將雷達數據正確引入。
  2. 實際應用中的問題:在車機系統上運行時,模型有時無法正確顯示預期的黃色三角形,這代表模型未能準確預測前方的車輛。

解決這些問題需要我們重新設計 custom loss,並嘗試將雷達數據納入模型的訓練中。

https://ithelp.ithome.com.tw/upload/images/20240919/20169470rBar5EEHkG.png


Tensor 的定義與介紹

在深度學習中,Tensor(張量) 是一個非常重要的概念,幾乎所有的資料都會以張量的形式表示。它本質上是多維數據的容器,能夠承載標量、向量、矩陣甚至是更高維度的數據。

🎯 Tensor 的基本概念

Tensor 可以理解為不同維度數據的泛化形式。它是對資料的維度(dimension)進行分類和表示的工具。

1️⃣ 標量(Scalar)

  • 定義:標量是 0 維的數據,也就是單一的一個數字。
  • 範例
    s = 5  # 單純的一個數字
    

2️⃣ 向量(Vector)

  • 定義:向量是 1 維的數據,也就是由一系列數字組成的數列。
  • 範例
    v = [1, 2, 3]  # 一個包含三個數字的向量
    

3️⃣ 矩陣(Matrix)

  • 定義:矩陣是 2 維的數據,即由行和列組成的數據表。
  • 範例
    m = [[1, 2, 3], [4, 5, 6]]  # 2x3 的矩陣,包含兩行三列
    

4️⃣ 多維數組(n-dimensional array)

  • 定義:當資料超過兩個維度時,我們稱之為 n 維數組高維張量
  • 範例
    t = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]  # 3 維張量
    

🌟 總結:

  • Tensor 可以是 標量(0 維)、向量(1 維)、矩陣(2 維)或 n 維數組(n 維)。不同的維度決定了它承載數據的複雜程度。

🛠️ Tensor 在深度學習中的應用

在深度學習中,神經網路通常會處理高維數據,例如影像、音訊或影片。這些數據都會以 張量 的形式傳遞給模型,模型再通過層層的計算,對這些張量進行轉換並最終產生預測結果。

1️⃣ 影像資料的 Tensor 表示

  • 影像可以看作是 3 維張量,其中維度包括 寬度(Width)高度(Height)通道數(Channel,通常是 RGB)
  • 範例:對於一個大小為 128x128 的 RGB 圖像,其 Tensor 表示如下:
    image_tensor = [128, 128, 3]  # 寬 128,長 128,有 3 個 RGB 通道
    

2️⃣ 影像處理中的高維 Tensor

  • 在進行影像處理時,尤其是在卷積神經網路(CNN)中,影像會被轉換成更高維度的張量,這些張量代表了影像的特徵圖(Feature Maps)。隨著神經網路的層數加深,張量的維度也會隨之改變。

🔄 Tensor 的重要性

Tensor 之所以重要,是因為它能夠表示任意維度的數據,這對於需要處理大量數據的神經網路來說至關重要。透過操作張量,我們可以對不同形狀、大小的數據進行運算,這是深度學習模型能夠運行的基礎。


📝 小結

Tensor 是深度學習中最基礎的數據單位,它可以是從 標量n 維數組 的任何一種數據結構。通過張量的靈活性,深度學習模型能夠處理各種類型的數據,並進行複雜的運算。了解張量的概念,是理解深度學習運作的第一步。

🚀 Day 5 小結

今天我們學習了:

  1. ModelB6.pysupercombo079 之間的關係,並分析了 092 版本中的改進。
  2. ModelB6 的架構,包括四個輸入與 RNN 的循環機制。
  3. 訓練中的挑戰,特別是在 custom loss 的定義上需要進行改進。

接下來,我們將進一步優化模型,並嘗試解決自駕系統中的路徑預測問題。🚗💨


Yes


上一篇
DAY 4 教學:EPOCH、模型架構與神經網路解析_(附上音樂🎵)
系列文
不用買特斯拉也能自動駕駛?!30天學會訓練自己的自駕模型,再也沒人會說你不懂AI!5
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言