给定一个图像和两个点一个A和乙B在该图像上,我们如何找到从一个A到乙B?

人工智能 机器学习 参考请求 搜索 路径规划 寻找路径
2021-11-13 11:24:04

如果我们有搜索或寻路问题,A* 和 Dijkstra 算法要求我们将其表述为在具有节点和这些节点之间的连接的图中的搜索。如果有障碍物,我们还需要在图中对这些信息进行编码,使它们不被遍历。此外,点之间的连接可能存在成本/权重。如果这样的权重/成本很高,算法就不会走这条路。

到目前为止,我一直在使用 A* 和 Dijkstra 算法。但是,总是必须定义节点/点以及它们之间的关系(或连接)有点麻烦。这里没有学习。我只是定义了一个图,算法在这个图上搜索。

假设我有一个白色图像,中间有一个绿色斑点,还有点AB在 blob 的任一侧,我需要从AB. 我没有在这里用图表表示的搜索空间。我只有这张图。

我可以使用机器学习来解决这个问题(并且它会推广到更复杂的地图)吗?如果是这样,是否有任何关于这个主题的研究工作?或者那是错误的路线(请原谅双关语)?

1个回答

假设我有一个白色图像,中间有一个绿色斑点,还有点AB在 blob 的任一侧,我需要从AB. 我没有要遍历的点。我只有这张图。

如果您的图像像您在此处描述的那样“简单”,并且颜色非常容易区分,那么最简单的解决方案可能是按照 A* 等算法的预期构建图形,如下所示:

  • 每个像素都成为图中的一个节点,连接到所有相邻像素
  • 绿色像素(中间的绿色斑点)被标记为不可遍历(或者根本没有与相邻像素的连接)(我认为这件事是你的障碍)。
  • 属于障碍物两侧点的像素被标记为起始顶点和目标顶点。

然后,您就有了像 A* 这样的传统寻路算法所期望的图,并且可以简单地在那里运行该算法。


如果你得到不太“清晰”的图像(即不是颜色鲜艳、容易区分的东西,而是更像现实生活中某个区域的自上而下的图像),那么上面的方法就不再适用了。在这种情况下,您可能需要研究强化学习方法,当代理成功地找到开始和目标之间的联系时,您可以给予奖励。特别是,您需要深度强化学习方法,否则您将无法处理复杂的图像。

请注意,如果您是初学者,这些方法不会很容易实现或立即 100% 理解。对于您描述的问题,不会有任何“初学者友好”的方法,它只是一个相当复杂的问题(需要“决策”和“理解”图像的混合)。