网易首页 > 网易号 > 正文 申请入驻

使用CNN进行2D路径规划

0
分享至


卷积神经网络(CNN)是解决图像分类、分割、目标检测等任务的流行模型。本文将CNN应用于解决简单的二维路径规划问题。主要使用Python, PyTorch, NumPy和OpenCV。

任务

简单地说,给定一个网格图,二维路径规划就是寻找从给定起点到所需目标位置(目标)的最短路径。 机器人技术是路径规划至关重要的主要领域之一。 A、D、D* lite 和相关变体等算法就是为解决此类问题而开发的。 如今强化学习被广泛用于解决这一问题。 本文将尝试仅使用卷积神经网络来解决简单的路径规划实例。

数据集

我们的主要问题是(在机器学习中一如既往)在哪里可以找到数据。 虽然没有现成的数据集可用,但是我们可以通过制作随机二维地图创建自己的路径规划数据集。 创建地图的过程非常简单:

从一个 100x100 像素的方形空矩阵 M 开始。

对于矩阵中的每一项(像素),从0到1均匀分布抽取一个随机数r。 如果 r > diff,则将该像素设置为 1; 否则,将其设置为 0。这里的 diff 是一个参数,表示像素成为障碍物(即无法穿越的位置)的概率,它与在该地图上找到可行路径的难度成正比.

然后让我们利用形态学来获得更类似于真实占用网格地图的“块状”效果。 通过改变形态结构元素的大小和 diff 参数,能够生成具有不同难度级别的地图。

对于每张地图需要选择 2 个不同的位置:起点 (s) 和终点 (g)。 该选择同样是随意的,但这次必须确保 s 和 g 之间的欧几里得距离大于给定阈值(使实例具有挑战性)。

最后需要找到从 s 到 g 的最短路径。 这是我们训练的目标。 所以可以直接使用了流行的 D* lite 算法。

我们生成的数据集包含大约 230k 个样本(170k 用于训练,50k 用于测试,15k 用于验证)。 数据量很大,所以我使用 Boost c++ 库将自定义的 D* lite 重写为 python 扩展模块。使用这个模块,生成超过 10k 个样本/小时,而使用纯 python 实现,速率约为 1k 个样本/小时(i7–6500U 8GB 内存)。 自定义 D* lite 实现的代码会在文末提供

然后就是对数据做一些简单的检查,比如删掉余弦相似度很高,起点和终点坐标太近的地图。数据和代码也都会在文末提供.

模型架构

模型是经典的编码器-解码器架构,将 20 个卷积层分为 3 个卷积块(编码部分),然后是另外 3 个转置卷积块(解码部分)。 每个块由 3 个 3x3 卷积层组成,每个层之间有BN和 ReLU 激活。 最后,还有另外 2 个 conv 层,加上输出层。 编码器的目标是找出输入压缩后的相关表示。解码器部分将尝试重建相同的输入映射,但这次嵌入的有用信息应该有助于找到从 s 到 g 的最佳路径。

该网络的输入是:

map:一个 [n, 3, 100, 100] 张量,表示占用网格图。 n 是批量大小。 这里的通道数是 3 而不是简单的 1。稍后会详细介绍。

start: 一个 [n, 2] 张量,包含每个地图中起点 s 的坐标

goal:一个[n, 2]张量,包含每个地图中目标点g的坐标

网络的输出层应用 sigmoid 函数,有效地提供了一个“分数图”,其中每个项目的值都在 0 和 1 之间,与属于从 s 到 g 的最短路径的概率成正比。 然后可以通过从 s 开始并迭代地选择当前 8 邻域中得分最高的点来重建路径。 一旦找到与 g 具有相同坐标的点,该过程就会结束。 为了提高效率,我为此使用了双向搜索算法。

在模型的编码器和解码器块之间,我还插入了 2 个跳过连接。 该模型现在非常类似于 U-Net 的架构。 跳过连接将给定隐藏层的输出注入网络中更深的其他层。 在我们的任务中关心的细节是 s、g 的确切位置,以及我们在轨迹中必须避开的所有障碍物。 所以加入跳过链接大大提高了效果。

训练

在Google Colab 上对模型进行了大约 15 小时或 23 个周期的训练。 使用的损失函数是均方误差 (MSE)。 可能有比 MSE 更好的选择,但我一直坚持使用它,因为它简单易用。

学习率最初使用 CosineAnnealingWithWarmRestarts 调度程序设置为 0.001(略微修改以降低每次重启后的最大学习率)。 批量大小设置为 160。

我尝试对输入图应用高斯模糊,并在第一个卷积层应用一个小的 dropout。 这些技术都没有带来任何相关效果,所以我最终放弃了它们。

下面是训练后模型原始输出的可视化。

卷积的一些问题

起初使用输入是一个形状为 [n, 1, 100, 100](加上起始位置和目标位置)的张量。但无法获得任何令人满意的结果。 重建的路径只是完全偏离目标位置并穿过障碍物的随机轨迹。

卷积算子的一个关键特征是它是位置不变的。 卷积滤波器学习的实际上是一种特定的像素模式,这种像素模式在它所训练的数据分布中反复出现。 例如下面的图案可以表示角或垂直边缘。

无论过滤器学习什么模式,关键的问题是它学会独立于图像中的位置来识别它。对于像图像分类这样的任务来说,这无疑是一个理想的特性,因为在这些任务中,表征目标类的模式可能出现在图像的任何地方。但在我们的情况下,位置是至关重要的!我们需要这个网络非常清楚的知道轨迹从哪里开始,从哪里结束。

位置编码

位置编码是一种通过将数据嵌入(通常是简单的和)到数据本身中来注入关于数据位置的信息的技术。它通常应用于自然语言处理(NLP)中,使模型意识到句子中单词的位置。我想这样的东西对我们的任务也有帮助。

我通过在输入占用图中添加这样的位置编码进行了一些实验,但效果并不好。可能是因为通过添加关于地图上每个可能位置的信息,违背了卷积的位置不变性,所以滤波器现在是无用的。

所以这里基于对路径规划的观察,我们对绝对位置不感兴趣,而只对相对范围感兴趣。也就是说,我们感兴趣的是占用图中每个单元格相对于起点s和目标点g的位置。例如,以坐标(x, y)为单元格。我并不真正关心(x, y)是否等于(45,89)还是(0,5)。我们关心的是(x, y)距离s 34格,距离g 15格。

所以我为每个占用网格图创建2个额外的通道,现在它的形状为[3,100,100] 。第一个通道是图像。第二个通道表示一个位置编码,它为每个像素分配一个相对于起始位置的值。第三通道则是相对于结束位置的值。这样的编码是通过分别从以s和g为中心的二维高斯函数创建2个特征映射来实现的。Sigma被选为核大小的五分之一(通常在高斯滤波器中)。在我们的例子中是20,地图大小是100。

在注入关于期望的轨迹起始和最终位置的有用信息的同时,我们还部分地保留了与过滤器位置不变性的一致性。可学习的模式现在只依赖于相对于给定点的距离,而不是地图上每个可能的位置。距离s或g相同距离的2个相等的图案现在将触发相同的过滤器激活。经过实验这个小技巧在收敛训练中非常有效。

结果和结论

通过测试了超过 51103 个样本的训练模型。

95% 的总测试样本能够使用双向搜索提供解决方案。 也就是说,该算法使用模型给出的得分图可以在 48556 个样本中找到从 s 到 g 的路径,而对于其余 2547 个样本则无法找到。

总测试样本的 87% 提供了有效的解决方案。 也就是说从 s 到 g 的轨迹不穿越任何障碍物(该值不考虑 1 个单元格的障碍物边缘约束)。

在有效样本上,真实路径与模型提供的解决方案之间的平均误差为 33 个单元格。 考虑到地图是 100x100 单元格,这是相当高的。 错误范围从最小 0(即,在 2491 个样本中的真实路径被“完美”的重建了)到最大……745 个单元(这个肯定还有一些问题)

下面可以看看我们测试集中的一些结果。图像的左侧描述了训练过的网络提供的解决方案,而右侧显示了D* lite算法的解决方案。

我们网络提供的解决方案比D* lite给出的解决方案短

下面就是一些错误的图

看着应该是感受野不太大,所以在感受野的区域内没有找到任何的边缘,这个可能还要再改进模型

最后,这项工作远非最先进的结果,如果你有兴趣的话可以继续改进。

https://avoid.overfit.cn/post/c595e81d1dea445187d17ccfca3cf79b

作者:Davide Caffagni

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

真的有人喜欢微胖吗?一个人的时候,常常会感到不自信

娱你同欢
2026-07-31 23:28:29
默茨无力回天,德国选择党取得压倒性优势,72岁前总理再度出山

默茨无力回天,德国选择党取得压倒性优势,72岁前总理再度出山

青青衫书生
2026-09-06 23:15:53
英超:阿森纳2-1切尔西 罗杰斯闪击 哈弗茨弑旧主厄德高破门

英超:阿森纳2-1切尔西 罗杰斯闪击 哈弗茨弑旧主厄德高破门

钉钉陌上花开
2026-09-07 01:28:06
关税重创海外PC市场!1.1万元买RTX 3050笔记本、美国同价直接上5070 Ti

关税重创海外PC市场!1.1万元买RTX 3050笔记本、美国同价直接上5070 Ti

快科技
2026-09-05 19:14:05
2026年7月,有位退休返聘的CT老医生在和朋友私下聊天时,说出了句实在话:“要做检查,能去大医院就别只是图省事。”

2026年7月,有位退休返聘的CT老医生在和朋友私下聊天时,说出了句实在话:“要做检查,能去大医院就别只是图省事。”

回京历史梦
2026-09-06 20:40:03
解晓东北京朝阳区644平豪宅3850万法拍,全部用于偿还债务

解晓东北京朝阳区644平豪宅3850万法拍,全部用于偿还债务

观察鉴娱
2026-09-05 09:59:10
事情闹大了!特朗普女婿直飞俄罗斯,谈判3小时后,普京表明态度

事情闹大了!特朗普女婿直飞俄罗斯,谈判3小时后,普京表明态度

奇迹游行者
2026-09-06 11:29:24
李在明冒冷汗,中方团队集体撤走,韩国被问责,公然藐视台湾问题

李在明冒冷汗,中方团队集体撤走,韩国被问责,公然藐视台湾问题

墨策讲历史
2026-09-05 21:15:52
“41个学生请假”,问题都这么严重了,可某些人却还在狡辩!

“41个学生请假”,问题都这么严重了,可某些人却还在狡辩!

走读新生
2026-09-04 12:10:20
真相来了!李月汝护照丢失内幕曝光,美国公共系统这么拉胯?

真相来了!李月汝护照丢失内幕曝光,美国公共系统这么拉胯?

打小我就醜
2026-09-06 18:54:01
深度还原:中美南海撞机后,美军有40分钟,为何没能把机密抹掉?

深度还原:中美南海撞机后,美军有40分钟,为何没能把机密抹掉?

干史人
2025-08-30 07:00:02
山东临清一大桥步道桥板脱落致行人坠亡,13年前被评为省文保单位却年久失修

山东临清一大桥步道桥板脱落致行人坠亡,13年前被评为省文保单位却年久失修

澎湃新闻
2026-09-06 08:40:29
美国撕破脸皮!中企被全部驱逐后,面对明抢,中国发起终极清算

美国撕破脸皮!中企被全部驱逐后,面对明抢,中国发起终极清算

锅锅爱历史
2026-09-06 08:20:29
2026年度大瓜,被扒出来的细节越来越多

2026年度大瓜,被扒出来的细节越来越多

三个妈妈六个娃
2026-09-05 21:07:22
6-3逆转!塞尔比送走147先生,夺冠将比肩传奇,世界排名紧追赵心童!

6-3逆转!塞尔比送走147先生,夺冠将比肩传奇,世界排名紧追赵心童!

刘姚尧的文字城堡
2026-09-06 09:08:33
终于知道今年为啥又扫黑除恶了

终于知道今年为啥又扫黑除恶了

小鹿姐姐情感说
2026-08-14 01:50:59
扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

扔掉12斤水果,赔掉10万元,中国式自我感动有多可怕!

夜深爱杂谈
2026-09-05 21:28:52
袁腾飞移民美国的几个细节问题

袁腾飞移民美国的几个细节问题

十柱
2026-09-05 10:15:57
网约车每天只跑8小时,现实到底行不行?司机晒出流水

网约车每天只跑8小时,现实到底行不行?司机晒出流水

用车指南
2026-09-06 10:01:58
因苹果对质量要求极其严格,消息称折叠屏iPhone初期日产仅数百部

因苹果对质量要求极其严格,消息称折叠屏iPhone初期日产仅数百部

IT之家
2026-09-04 21:29:03
2026-09-07 03:19:00
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
2028文章数 1465关注度
往期回顾 全部

科技要闻

DeepSeek被曝将采购16万颗华为昇腾950DT

头条要闻

中尼两国遇难失联人数为何相差如此大 专家解读

头条要闻

中尼两国遇难失联人数为何相差如此大 专家解读

体育要闻

3.9秒绝平!杨舒予18+5成女篮救世主

娱乐要闻

杨紫获白玉兰影后!爸爸:累了就回家

财经要闻

亏损高达200亿,昔日彩电霸主走下巅峰!

汽车要闻

带升降立标MPV 岚图梦想家9预售价42.99万起

态度原创

本地
艺术
房产
公开课
军事航空

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

艺术要闻

张大千的终极秘密:心中没“仙气”,画一万遍也白搭!他这句话点醒了无数人!

房产要闻

突发重磅!海口出台楼市新政!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

美伊互袭油轮 伊朗军方称或对美进行更大规模打击

无障碍浏览 进入关怀版