基于Opencv&Tensorflow实现实时查找停车位置

摘要: 一个小例子带你玩转Opencv+tensorflow~

介绍

你是否是常常在停车场周围转来转去寻找停车位。若是你的手机能准确地告诉你最近的停车位在哪里,那是否是很爽?事实证实,基于深度学习和OpenCV解决这个问题相对容易,只需获取停车场的实时视频便可。下面的GIF图片突出显示洛杉矶机场停车场上全部可用的停车位,并显示可用停车位的数量,关键是这一过程是实时的!html

动图太大,上传不了原图请点击查看原文

你能够在Github repo找到我曾用过的代码。git

步骤概述

构建这个停车检测模型主要有两个步骤:github

1.检测全部可用的停车位;服务器

2.肯定停车位是空的仍是被占用的;ide

由于安装了摄像头视图,咱们可使用OpenCV对每一个停车位进行一次映射。一旦你知道了每一个停车位的位置,你就能够用深度学习来预测它是否空着。我已经在个人博客上分享了所涉及的一个高层次步骤的概述。若是你对详细代码感兴趣,请看看个人博客工具

检测全部可用停车位的位置

检测停车位的基本思路是,全部的停车点的分隔线都是处于水平线,而一列中的停车点之间的间隔大体相等。首先使用Canny边缘检测来得到边缘图像。我还把没有停车的地方遮了起来。以下所示:学习

而后我在边缘图像上作了霍夫变换,画出了它能识别的全部线。我只选择斜率接近于零的直线来隔离水平线。霍夫变换的输出以下:spa

正如你所看到的那样,霍夫变换在识别停车线方面作得至关好,可是输出有噪声——几个停车线被屡次检测到,而有些被遗漏了。那么咱们如何解决这个问题呢?而后我用观察和直觉开始,经过使用霍夫变换返回的坐标,汇集x坐标来肯定主要的停车道。利用聚类逻辑来识别车道线x坐标的间隔。这样就能识别出这里的12个车道。以下:视频

若是全部这些看起来都很复杂,别担忧5——我已经在github的jupyter notebook上一步一步地记录了代码。如今我已经知道了全部的停车道都在哪里,经过合理地假设全部的停车点大小都同样来识别每一个单独的停车位。我仔细观察告终果,以确保尽量准确地捕捉到点之间的边界。我终于可以标出每一个停车位。以下:htm

当完成了每一个车位的定位以后,咱们能够为每一个点分配一个ID,并将其坐标保存在字典中并将它pickled了一下,以便之后能取回。这是能够实现的,由于安装了摄像头,咱们不须要一次又一次地计算每一个点在视图中的位置。更多详情请登陆个人博客

识别该车位是否有标记

如今咱们有了每一个停车位的映射,能够经过如下几种方式来肯定这个停车位是否被占用:

1.使用OpenCV检查视频图像中停车位的像素颜色是否与空停车位的颜色一致。这是一种简单的方法,但容易出错。例如,灯光的变化将会改变一个空停车位的颜色,在一天的光照变化中,这种方法将没法正确工做。若是有可能的话,这种逻辑会把灰色的汽车当成空停车位;

2.使用目标检测来识别全部的汽车,而后检查汽车的位置是否与停车位重叠。我作了尝试,发现实时检测模型真的很难检测小尺寸的对象,检测到的车辆不超过30%;

3.使用CNN检测每一个停车位,并预测是否有人停车,这种方法最终效果最好。

要构建一个CNN,咱们须要停车位有车以及无车这两种状况的图像。我提取了每一个停车位的图像,并将其保存在文件夹中,而后将这些图像分组。我还在Github上分享了这个训练文件夹。

由于在1280x720像素的图像中有近550个车位,因此每一个车位的大小只有15x60像素左右。下面是空车位和被占用车位的图像:

然而,因为被占用车位和空车位看起来有很大的不一样,这对CNN来讲应该不是一个具备挑战性的问题。

然而,我只有大约550张关于这两个类的图片,因此决定利用VGG的前10层,并在VGG模型的输出添加一个单一的softmax图层来进行迁移学习。你能够在这里找到这个迁移学习模型的代码,准确率达到94%。见下文:

如今,我将停车位检测和CNN预测器结合起来,构建了一个停车位检测器,准确率很是高。

我还在notebook记录了在视频流上运行这个的代码。

结论

对于联合不一样的工具和使用深度学习来构建实际应用程序这么容易我感到很惊奇,我在两个下午完成了这项工做。

准备进一步探索的其余几个想法:

1.若是能够将车位检测逻辑扩展到任何可能使用深度学习的车位地图上,那就太好了,OpenCV对每一个用例进行调优有限制;

2.CNN使用的VGG模型是一个重量化模型,想要尝试更轻量化的模型。

云服务器99元拼团购!拉新还可赢现金红包!300万等你瓜分!
立刻一键开团赢红包: http://click.aliyun.com/m/1000019899/



本文做者:【方向】

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索