- 博客(19)
- 收藏
- 关注
原创 在Carla上应用深度强化学习实现自动驾驶(四)
的第四篇文章,是本系列的收尾篇,本次学习的代码是基于tensorflow框架的,后面想学习pytorch框架的,因为好像目前pytorch应用比较广泛。本篇文章是小编在pycharm上自己手敲代码学习。以下代码参考自:(如有侵权,请联系我立即删除)
2024-08-26 21:18:21
569
1
原创 在Carla上应用深度强化学习实现自动驾驶(三)
该区域用于存储一系列的经验(或称为转换、transitions),每个transition通常包含四个或五个元素:当前状态(state)、采取的动作(action)、获得的奖励(reward)、新状态(next state),以及一个布尔值表示该状态是否是终止状态(done);模型的所有权重(即,网络中的连接参数)将被随机初始化(根据层的默认初始化策略,除非你在层定义中指定了不同的初始化器)。的第三篇文章,主要讲述如何编写Agent类,它将与我们设计的强化学习环境交互,并容纳我们实际的强化学习模型。
2024-08-22 22:19:29
1460
1
原创 Xception模型
Xception是一种受Inception启发的深度卷积神经网络架构,它通过深度可分离卷积(Depthwise Separable Convolution)来优化模型性能和计算效率。Xception网络结构包含多个卷积层,这些卷积层被组织成不同的模块,每个模块内部采用深度可分离卷积来减少参数数量和计算量。Entry Flow:包含初始的卷积层和池化层,用于下采样输入数据,并提取初步的特征。:包含多个深度可分离卷积模块,每个模块内部通过残差连接来增强特征传播和梯度回传。
2024-08-22 21:41:00
874
原创 在Carla上应用深度强化学习实现自动驾驶(二)
之后再给汽车添加碰撞传感器,这个4秒是给在地图上生成汽车留下足够的时间,因为在Carla上生成的汽车是从天上落下来的,这有可能会被碰撞传感器误判成碰撞,所以需要先等待4秒等汽车安全落地之后再给车辆添加碰撞传感器。(3)在车辆的前方添加rgb摄像头传感器,设置图像的相应属性,并将该传感器添加到演员列表中,另外还要设置该传感器的回调函数,用于处理摄像头获取到的图像数据,该回调函数是process_img函数。其他行为继续该回合,奖励值为1。方法,这个方法采取一个行动,然后返回观察,奖励,完成,任何额外的信息。
2024-08-22 15:25:10
1210
原创 在Carla上应用深度强化学习实现自动驾驶(一)
7、接下来,我们需要将它添加到我们的汽车中,并将其添加到我们的演员列表中。(1)将图像的原始raw数据转换成一维的numpy数组,长度恰好是IM_HEIGHT * IM_WIDTH * 4,这里的4表示的是RGBA(A为透明度alpha)4个通道。(2)改变数组的形状,将其变成一个三维数组,共有4个二维数组,每个二维数组的行是IM_HEIGHT,列是IM_WIDTH。5、最后,我们不要忘记将这辆车添加到我们需要跟踪和清理的演员列表中,现在我们有一辆车,让我们运行 5 秒钟然后清理。
2024-08-21 20:48:48
2237
1
原创 深度强化学习之自动驾驶论文阅读(二)
主要步骤:1、使用缓冲器,所有以前的经验都存储在缓冲器重放中。2、下一个动作由Q函数的最大输出决定。3、损失函数是预测Q值的均方误差以及目标Q值。使用RGB图像作为输入不足以让智能体在随机驾驶环境中学习。这是因为从安装在ADV顶部的摄像头捕获的图像非常复杂。因此,由RGB图像、车辆速度和车辆与道路中心之间的角度组成的输入表示元组被公式化。所提出的DQN模型使用输入数据进行训练。LSTM和CNN(卷积神经网络)都用于将输入数据映射到由转向、制动和加速命令组成的动作。
2024-08-20 20:31:57
551
1
原创 深度强化学习之自动驾驶论文阅读(一)
为了提高Agent的稳定性,我们采用经验回放的方法来打破数据样本之间的依赖关系。在DDPG算法中使用了一个目标网络,这意味着我们为演员和评论家网络创建了一个副本。然后,这些目标网络用于提供目标值。在确定性策略梯度下,从状态空间到动作空间的映射是固定的,因此我们不需要在整个动作空间上积分。因此,确定性策略梯度算法需要更少的数据样本来收敛于随机策略梯度。:文章使用DDPG算法在TORCS模拟器上训练了一个agent,在文章设定的环境下表现良好。深度确定性策略梯度(DDPG)算法:使用确定性而不是随机动作函数。
2024-08-15 12:45:47
350
1
原创 PPO算法在CARLA上的应用
(2)重置环境并获取观测值,这个代码还使用了VAE模型来对输入数据进行处理:reset()函数的返回值:return [self.image_obs, self.navigation_obs]定义了每个episode的最大时间步数,在每个回合中首先调用agent的get_action()函数来选取动作,根据PPO算法,动作是从高斯分布中随机采样得到的。(4)使用step()函数来进行每一步,返回值是观测值,奖励,结束的标志以及其他信息。环境类最重要的两个函数是reset()和step()
2024-08-14 13:22:20
444
原创 DQN+gym实现最简单的自动驾驶
在我们的代码中应该是只需要前面的数组中的内容的,所以我在x = np.expand_dims(s, axis=0)之前加上s=s[0]这行代码,果然,上述报错消失,但是出现了新的错误:ValueError: expected sequence of length 5 at dim 1 (got 4),这个错误的意思是:在某个操作或函数中,期望在某个维度(在这个例子中是维度1)上有一个长度为5的序列,但实际上却得到了一个长度为4的序列。是 NumPy 库中的一个函数,用于在指定的轴上增加数组的一个维度。
2024-07-18 22:10:28
958
原创 torch安装
pip install torch-2.0.0+cu117-cp38-cp38-win_amd64.whl命令安装即可。如何查看已安装的cuda版本?torch比较大,大概2个多G。
2024-07-18 19:49:35
765
原创 Linux服务器基础知识
(4)wl开头的:无线网接口,用无线网连接的,ip地址为:172.30.162.208,这个是这台linux服务器的ip地址,因为这台服务器没用网线,用的是无线网。(3)e开头的:以太网接口,用网线连接的。看到Link detected: no,可以确定网线没有连接。(1)lo:回环接口,用于本机内部通信。(2)br开头的:桥接接口(网桥接口)
2024-07-17 21:23:34
298
原创 yolov5训练记录(使用矩池云服务器)
第二次训练的时候我用的是直接将json转换成txt,这种方式可以在里面添加一些函数用于过滤掉黑夜和过于小的目标的图片,进行数据清洗。④ 修改epochs(迭代轮数):根据自己的情况修改,我这里设置了300轮,但其实到174轮的时候就收敛了,然后就自己停下来了,因为yolo的模型收敛的好像都比较快。我用的是开源的自动驾驶数据集BDD100K,数据集中包含train,val和test的image和label,其中label是json格式的。以上就是本次训练yolov5的记录了,代码摘自其他博主,不是自己写的。
2024-02-28 15:59:03
871
2
原创 机试练习(二)
声明一个int类型的向量a,且初始化向量大小为10,每个元素的初始值为0。声明一个int类型的向量a(向量里面的元素都是int类型的)vector a(10);声明一个int类型的向量a,且初始化向量大小为10。(栈里面的元素是int类型的)单调栈的作用:求某个元素左面或右面比他大或小的第一个元素。栈单调递增:求右/左面第一个比他大的元素;栈单调递减:求右/左面第一个比他小的元素;获得栈顶元素的值:st.top()弹出栈顶元素:st.pop();
2023-09-12 09:32:41
76
原创 机试练习(一)
使用i作为首指针指示连续字符的起始字符位置,使用j作为尾指针从i+1的位置开始指示,当j和i相等时就让j向后移一位,否则就让i等于j-1进行下一个连续字符的计算。在while循环中,每一行的内容就是存储在变量s中的内容,当读取完每一行时可对该行进行相应处理。使用时需要先加入头文件#include s.empty()方法是用来判断字符串是否为空的。s.size()方法是用来计算字符串的长度的。在求解字符串、数组的问题时常用双指针方法。3、解题思路之双指针的用法。getline()方法。
2023-09-10 18:00:10
70
1
原创 力扣刷题记录(二)
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输出:2, nums = [1,2,_]输入:nums = [1,1,2]
2023-07-12 15:06:57
58
1
原创 力扣刷题记录(一)
如果存在,我们需要找出它的索引。链接:https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/这样我们创建一个哈希表,对于每一个 x,我们首先查询哈希表中是否存在 target - x,然后将 x 插入到哈希表中,即可保证不会让 x 和自己匹配。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
2023-07-08 22:47:25
100
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人