本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

wzatv:【j2开奖】详述车道检测的艰难探索:从透视变换到深度图像分割(附代码)(3)

时间:2017-05-15 22:21来源:本港台直播 作者:开奖直播现场 点击:
当我发现深度学习方法在这个模型上效果不错时,我决定创建一个能在没有进行透视变换的前提下检测车道线的模型。我沿用了这个原来的结构,还添加了

  当我发现深度学习方法在这个模型上效果不错时,我决定创建一个能在没有进行透视变换的前提下检测车道线的模型。我沿用了这个原来的结构,还添加了一个裁剪层,切除了输入图像的上三分之一。我认为,对于任何一张道路图像,这部分会包含很少关于车道检测的信息。而且该模型经过训练后轻松达到与透视变换模型相近的效果,所以我知道该模型的输入图像不必是经过透视变换后的数据集了。

  在这一点上,我想将一些不同相机拍摄的额外数据输入该模型,以解决相机的扭曲问题,所以我还使用了一些从Udacity其他项目中获得的视频数据集。然而,我们需要为新数据创建对应标签,因为之前用于标记图像的透视变换方法不适用于这些视频。这也使我意识到了另一个大问题:图像标签本身就是鸟瞰图中的多项式系数,就意味着在预测和绘制车道线后,仍然需要反向变换,恢复到原始图像的视角。

  这就导致了该模型具有特殊性,仅能在我录制的视频中查看车道检测效果。我意识到该模型也许已经能正确地检测车道,但是在后期预测中使用了透视变换,所以无法重现良好的视觉效果。我认为,该模型似乎在转换视角上存在困难,所以可以通过查看各层的激活情况,来判断该模型是否已经学会检测车道。

  keras-vis的激活图

  我很快找到了所需的keras-vis库。keras-vis库很好上手,只需将训练好的模型传给对应函数,就可以返回对应层的激活图。这个函数一般在分类神经网络中辨别各类特征,但在这里我用来可视化多项式系数。

  

wzatv:【j2开奖】详述车道检测的艰难探索:从透视变换到深度图像分割(附代码)

  图12:前几个网络层的激活图(请注意裁剪层处于这些网络层之前)

  看到这些卷积神经网络处理后的道路图像,这是一件很有趣的事。虽然第一层的图像效果看起来不错,但是这种方法还存在一些问题。

  首先,该模型在处理多张弯曲道路的图像后,得到了车道的一条线。该模型已经学习到,两条车道线之间存在联系,因为在大多数情况下,车道线是互相平行的,所以如果识别出一条线,那就可以推理出另一条线的所在位置。可能是由于使用过生成器翻转图像,所以在处理天空部分时激活值大幅变化。该模型会把图像中的天空误定位为车道,所以如果想在原始视频中标出车道,必须以某种方式删除这部分被错误激活的区域。

  

wzatv:【j2开奖】详述车道检测的艰难探索:从透视变换到深度图像分割(附代码)

  图13:可视化深层网络

  第二个问题更加难解决。由于在弯曲道路的图像中倾向于对单车道线和天空区域进行激活,在笔直道路的图像中通常会激活图片底部的汽车本身,或者是汽车前方的区域,而不是标出车道的位置。我进一步增加了直道图像的数量,检测效果有时会变好。但是在弯道和直道之间,激活规律没有任何一致性,所以不能深入研究这种方法。

  迁移学习

  我还使用keras-vis库尝试了迁移学习(Transfer Learning)的方法。在之前的行为克隆项目中,我已经使一辆模拟车已经学会了根据训练好的神经网络呈现出的图像来引导自动驾驶。这个我使用了超过20,000张图像训练得到的模型,会怎么看待车道呢?

wzatv:【j2开奖】详述车道检测的艰难探索:从透视变换到深度图像分割(附代码)

  图14:一张模拟车的输入图像

  这个问题的答案是整条道路,因为Udacity模拟器里没有隔离出多条车道,但是我想知道我是否可以使用迁移学习来将模型的注意力集中在车道上。我希望利用这个项目20000张数据集的基础上,添加一些用于车道检测的新数据,并进行一些额外的训练,希望能有更好的激活效果。在从该项目加载训练模型之后,使用model.pop()函数移除了最终用于输出转向角的输出层,并将其替换为输出六个标签系数。在训练前,需要根据模型的输入来调整输入图像的大小,否则不能正常运行。

  经过一些额外的训练与输入自己的数据集,这个模型效果略有提升,从检测整个道路,开始转为识别车道线。但是,该模型仍然存在一致性问题,如哪些图像区域该被激活和对应的激活程度等等。

  一种完全卷积方法

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容