摘要:智能駕駛源碼詳解二模型簡介本使用進行圖像分類前進左轉右轉。其性能超群,在年圖像識別比賽上展露頭角,是當時的冠軍,由團隊開發,領頭人物為教父。
GTAV智能駕駛源碼詳解(二)——Train the AlexNet 模型簡介:
本AI(ScooterV2)使用AlexNet進行圖像分類(前進、左轉、右轉)。
Alexnet是一個經典的卷積神經網絡,有5個卷積層,其后為3個全連接層,最后的輸出激活函數為分類函數softmax。其性能超群,在2012年ImageNet圖像識別比賽上展露頭角,是當時的冠軍Model,由SuperVision團隊開發,領頭人物為AI教父Jeff Hinton。
網絡結構如圖1所示:
圖1 AlexNet示意圖
#導入依賴庫(tflearn backended) import tflearn from tflearn.layers.conv import conv_2d, max_pool_2d from tflearn.layers.core import input_data, dropout, fully_connected from tflearn.layers.estimator import regression from tflearn.layers.normalization import local_response_normalization from collections import Counter from numpy.random import shuffle import numpy as np import numpy as np import pandas as pd #定義AlexNet模型 def alexnet(width, height, lr): network = input_data(shape=[None, width, height, 1], name="input") network = conv_2d(network, 96, 11, strides=4, activation="relu") network = max_pool_2d(network, 3, strides=2) network = local_response_normalization(network) network = conv_2d(network, 256, 5, activation="relu") network = max_pool_2d(network, 3, strides=2) network = local_response_normalization(network) network = conv_2d(network, 384, 3, activation="relu") network = conv_2d(network, 384, 3, activation="relu") network = conv_2d(network, 256, 3, activation="relu") network = max_pool_2d(network, 3, strides=2) network = local_response_normalization(network) network = fully_connected(network, 4096, activation="tanh") network = dropout(network, 0.5) network = fully_connected(network, 4096, activation="tanh") network = dropout(network, 0.5) network = fully_connected(network, 3, activation="softmax") network = regression(network, optimizer="momentum", loss="categorical_crossentropy", learning_rate=lr, name="targets") model = tflearn.DNN(network, checkpoint_path="model_alexnet", max_checkpoints=1, tensorboard_verbose=2, tensorboard_dir="log") return modelAlexNet注釋:
模型傳入參數為3個:圖像的長度、寬度和梯度下降學習率;
模型的Input Layer接受數據集中的圖片作為輸入,圖像長度160,高度為90,channel數量為三,輸入數據為m*160*90*3的張量,m為一次英處理的樣本數量;
Input Layer后跟著第一個卷積層,卷積核數量為96,卷積核尺寸為11*11,卷積步長為4,該卷積層使用ReLu作為激活函數;
第一個卷積層后跟著第一個池化層,池化類型為MaxPooling,池化尺寸3*3,池化步長為2;
池化之后的結果通向LRN層,jeff hinton的標注為模擬大腦的側向抑制,對張量中的每個元素都用它和它相鄰feature map的元素的平均值代替(雖然好像并沒有什么用),具體原理如圖2;
之后是AlexNet的第二個卷積層,卷積核數量為256,卷積核尺寸為5*5,卷積步長默認為1,該卷積層依然使用ReLu作為激活函數;
之后的池化層依舊為MaxPooling,池化尺寸3*3,池化步長為2;
第二個LRN層,作用同上;
之后是三個接連的卷積層,卷積核數量依次為384、384、256,卷積核尺寸都為3*3,都用ReLu作為激活函數;
經過尺寸為3*3,步長為2的池化層和一個LRN層之后,卷積網絡部分結束,通向3個全連接層。前兩個全連接層都向后輸出長度為4096的向量,使用tanh作為非線性激活函數,都有50%的dropout概率,神經元有二分之一的可能性被deactivate;第三個全連接層為輸出層,輸出3維向量,并使用softmax作為分類的激活函數。
每一次前向傳播完成后,使用交叉熵cross_entropy作為卷積網絡的loss函數;整個神經網絡使用momentum作為優化(梯度下降加上momentum過濾由于lr過高引起的振蕩),個人覺得使用Adam也許效果會更好,收斂會更快。
圖2 Local_Response_Normolization示意圖
WIDTH = 160 HEIGHT = 90 LR = 1e-3 EPOCHS = 10 MODEL_NAME = "scooterv2.model" model = alexnet(WIDTH, HEIGHT, LR) train_data = np.load("training_data_after_shuffle.npy") train = train_data[:-1000] test = train_data[-1000:] X = np.array([i[0] for i in train]).reshape(-1,WIDTH,HEIGHT,1) Y = [i[1] for i in train] test_x = np.array([i[0] for i in test]).reshape(-1,WIDTH,HEIGHT,1) test_y = [i[1] for i in test] for index in range(1,200): model.fit({"input": X}, {"targets": Y}, n_epoch=EPOCHS, validation_set=({"input": test_x}, {"targets": test_y}), snapshot_step=500, show_metric=True, run_id=MODEL_NAME) model.save(MODEL_NAME)
學習率為0.001,for循環中每一次迭代訓練的epoch數量為10,mini_batch的樣本數量使用默認值64;數據集的后1000個作為validation set,剩余的都作為測試集使用。
跑一次一共訓練了200*10=2000次,但實際上參數更新了20萬次,每一次mini_batch都更新一次參數。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44463.html
摘要:本暫且稱之為借鑒了美國死宅的方案,只使用截圖捕捉的畫面以模擬攝像頭數據作為的輸入,并沒有真實的智能駕駛所涉及的傳感器與雷達數據。在游戲中人為駕駛小時,將每一幀圖片以及其所對應的操作向量記錄在數據集張量中。每幀保存一次數據集設置為暫停鍵。 項目介紹 場景足夠豐富,操作足夠簡單,有大量的交通工具和駕駛視角可供選擇,游戲《Grand Theft Auto 5》是一個相對廉價且適合初級人工智能...
摘要:首先第一種當然是在年提出的,它奠定了整個卷積神經網絡的基礎。其中局部感受野表示卷積核只關注圖像的局部特征,而權重共享表示一個卷積核在整張圖像上都使用相同的權值,最后的子采樣即我們常用的池化操作,它可以精煉抽取的特征。 近日,微軟亞洲研究院主辦了一場關于 CVPR 2018 中國論文分享會,機器之心在分享會中發現了一篇非常有意思的論文,它介紹了一種新型卷積網絡架構,并且相比于 DenseNet...
閱讀 1926·2021-11-24 09:39
閱讀 3515·2021-09-28 09:36
閱讀 3282·2021-09-06 15:10
閱讀 3433·2019-08-30 15:44
閱讀 1153·2019-08-30 15:43
閱讀 1797·2019-08-30 14:20
閱讀 2712·2019-08-30 12:51
閱讀 2031·2019-08-30 11:04