使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角
生活随笔
收集整理的這篇文章主要介紹了
使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
之前一直在弄車道線的檢測和識別,效果都不佳,要么車道線分割太慢了,要么容易出現丟線的情況處理的不是很好,所以索性直接用卷積神經網絡做一個線性擬合。
完整文章地址
古月居博客網站
效果
用魔法玩歐卡2,使用國產深度學習框架paddlepaddle部署無人駕駛
傳送門:視屏鏈接
數據采集
讀取歐卡2的數據做訓練集屬實花了我點功夫,步驟如下:
- 首先安裝虛擬搖桿vJoySetup.exe
- 在歐卡里設置操縱模式為鍵盤加vJoy
- 然后用py代碼發送虛擬搖桿位置控制方向盤轉動
- 用py代碼寫一個全局鍵盤監控的代碼,使用‘u’ ‘i’兩個按鍵來控制方向盤。
- 我為什么不用pygame直接讀joy的角度呢?因為真的試了很久讀不到,好像是光標的問題,解決不了。
數據集
下載地址:csdn鏈接
數據集樣式:
log文件前面是圖片地址,空格后是角度
數據集處理代碼
import numpy as np import glob import os# 數據路徑 data_path = "../result/" trainList = '../train_data.txt' testList = '../test_data.txt' # 多少比例用作訓練集 ratio = 0.8# 只讀csv文件 with open(data_path + "log.txt",'r') as logFile:_list = logFile.readlines()# 判斷圖片數是否匹配ls_imgs = glob.glob(data_path + 'IMG/*.jpg')print(len(ls_imgs))print(len(_list))assert len(ls_imgs) == len(_list),'number of images does not match'if (os.path.exists(trainList)):os.remove(trainList)if (os.path.exists(testList)):os.remove(testList)with open(trainList, 'a') as f_train:with open(testList, 'a') as f_test:for index,_list in enumerate(_list):ang = int(_list.split(" ")[-1])img = _list.split(" ")[0]if index % (int(10*ratio) + 1) == 0:f_test.write(img + " " + str(ang) + "\n")else:f_train.write(img + " " + str(ang) + "\n")print("生成完畢,路徑:" + testList + " | " +trainList)網絡結構
def cnn_model(image):conv1 = fluid.layers.conv2d(input=image, num_filters=24, filter_size=5, stride=2, act='relu')conv2 = fluid.layers.conv2d(input=conv1, num_filters=32, filter_size=5, stride=2, act='relu')conv3 = fluid.layers.conv2d(input=conv2, num_filters=64, filter_size=5, stride=2, act='relu')conv4 = fluid.layers.conv2d(input=conv3, num_filters=64, filter_size=3, stride=2, act='relu')conv5 = fluid.layers.conv2d(input=conv4, num_filters=64, filter_size=3, stride=1, act='relu')fc1 = fluid.layers.fc(input=conv5, size=100, act=None)drop_fc1 = fluid.layers.dropout(fc1, dropout_prob=0.1)fc2 = fluid.layers.fc(input=drop_fc1, size=50, act=None)drop_fc2 = fluid.layers.dropout(fc2, dropout_prob=0.1)predict = fluid.layers.fc(input=drop_fc2, size=1, act=None)return predict優化方向
- 優化網絡結構
- 優化數據集
- 對數據進行預處理,提高提取車道線的準確率和完全率以及速度,然后再利用處理的結構傳入卷積神經網絡訓練。
總結
以上是生活随笔為你收集整理的使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拼多多app抓包之代码实现
- 下一篇: unity调整旋转需要传什么参数?参数在