1. 程式人生 > 實用技巧 >基於影象處理和tensorflow實現GTA5的車輛自動駕駛——第十節平衡資料

基於影象處理和tensorflow實現GTA5的車輛自動駕駛——第十節平衡資料

在上節我們實現了生成一個訓練集,資料的預處理十分重要,我們使用Python庫看看這個資料集的結構

shape

import pandas as pd
train_data = np.load('test.npy', allow_pickle=True)
df = pd.DataFrame(train_data)
print(df.shape)
# 如果沒修改前一節的程式碼,這裡的結果應該是 (2000,2)

檢視按鍵列資料是否平衡,即左轉次數右轉次數直線次數

print(df[1].value_counts())

結果:
注:資料偏移量好大,如果出現這麼大偏移可以多跑一次,找轉彎比較多的地方跑。也可以修改main.py的原始碼if len(training_data) % 2000 == 0:

修改這一行的2000為5000,這樣會記錄5000幀的資料集。
結果:

對不同的按鍵列資料進行分類

# 資料集
lefts = []
rights = []
forwards = []
# 遍歷5000幀的資料
for data in train_data:
    img = data[0]
    choice = data[1]
    if choice == [1, 0, 0]:
        lefts.append(data)
    if choice == [0, 1, 0]:
        forwards.append(data)
    if choice == [0, 0, 1]:
        rights.append(data)

選擇最小的資料集的len作為整個資料的大小

# 切分資料集
forwards = forwards[:len(lefts)][:len(rights)]
lefts = lefts[:len(forwards)]
rights = rights[:len(forwards)]

整合資料,打亂資料並儲存

# add 資料集
final_data = forwards + lefts + rights

# 打亂資料
shuffle(final_data)
print(final_data)
# save data
np.save("test_train_data.npy", final_data)