当前位置:
首页 >
使用paddle框架无人驾驶 —— 卷积神经网络计算方向盘打角
发布时间:2023/12/29
113
豆豆
生活随笔
收集整理的这篇文章主要介绍了
使用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调整旋转需要传什么参数?参数在