当前位置: 首页 > 编程日记 > 正文

实战:使用 Mask-RCNN 的停车位检测

作者:小白

来源:小白学视觉

Q

如何使用Mask-RCNN检测停车位可用性?

我最近做了一个项目,根据安全摄像头的照片来检测停车位是否可用或被占用。我的工作有局限性,我将进一步详细介绍这些局限性,但一旦这些问题得到解决,这个项目可能是一个低成本的解决方案,以优化停车位的可用性。安装这些额外的设备肯定是有潜力的。

让我详细说明我在这个项目中使用的资源。Kaggle上有一个停车场数据集,无论位置是否被占用,它都有足够的数据点来训练一个深度学习模型和xml文件,我们可以在这里访问数据集停车场数据集。对于模型,我使用了最先进的目标检测和分割Mask-RCNN模型,它的性能惊人,可以通过这个链接访问。

如我们所见,Mask-RCNN在COCO数据集模型上进行了直接即用的预训练,在目标检测和分割方面做得很好。尽管在某些情况下,它把汽车误分为火车和卡车。

Mask-RCNN对象检测和分割

我也尝试了YOLO-v3,它的性能是一样的,所以我没有进一步使用YOLO模型,但如果小伙伴正在寻找替代的模型,YOLO是一个很棒的对象检测模型,这里有链接。

YOLO模型检测停车场上的车辆

首先我使用Mask-RCNN模型来检测车位上的车辆,并给定可用车位的数量来计算空车位。我们的模型不需要所有的COCO类,所以我将类限制为汽车、卡车和摩托车。但是预先训练的COCO数据集模型在检测小物体方面做得并不好,即使我尝试调整阈值和边界框,那些被误分类为火车的汽车也没有被检测到。这里绘制的是边界框,而不是可视化方法提供的模型。

Mask-RCNN模型预测

基于数据集的预测,这样我们就有两个类来预测这个位置是被占用了还是空了。这个停车场数据集的不足之处是,只从两个角度拍摄照片,这导致训练模型时存在过拟合问题,没有很好的泛化能力。其次,每个车位的标注不完整,在训练过程中会产生异常,并且并不是所有照片上可用的车位都被标注了,这也导致了模型的性能较差。我将向小伙伴展示我的意思,下面的照片只是显示了有多少停车位被注释:

并非所有停车位都已标注

许多xml文件没有填充类:

注释文件中缺少信息

缺少信息的停车位数量可能会增加到10-15个停车位,但在运行一些代码后,我认为这可以手动修复:有太多的文件需要修复,只为了训练模型的顶层,避免这些文件比较容易。为了解析xml文件,我使用了内置的python包XML .etree.Elementtree。同样值得注意的是,边界框的坐标是以一个中心点的角度给出的,所以如果我们想要正确地解析和创建边界框,就必须进行一些调整。

函数解析xml文件,提取停车位的轮廓

由于Mask-RCNN使用掩码来训练类,采用与KangarooDetection文章类似的方式,可以在这里访问,我使用边界框来创建掩码。这篇文章实际上帮助我们理解了如何使用Mask-RCNN模型,并且机器学习掌握对于许多机器学习应用程序来说是一个很好的资源。如果小伙伴还没看过的话,可以浏览一下。主要的区别是,我们将检测两个类,而不是一个,从而创建基于占用分类的掩码,以及如何计算边界框。

函数在边界框之外创建掩码,并创建两个要检测的类

至于数据集结构,我们必须为训练和测试数据创建两个目录,每个包含图像文件夹和匹配的标签文件夹,其中每个xml文件除了扩展名不同之外,都具有相同的文件名。而其余部分实际上是遵循一般的做法来训练Mask-RCNN的顶层,小伙伴可以在Matterport GitHub上查看不同的示例代码。

我们必须创建一个类ParkingLot来加载数据集,通过解析带注释的xml文件提取边界框的轮廓。

创建停车场类

然后,我们需要指定配置类,基于我们希望模型训练的类,加载训练和测试数据集,使用“训练”模式加载模型,并开始训练。

停车配置类

模型将在每个时期后保存在日志文件夹中,以便在训练完成后,我们可以继续加载模型以评估其性能。使用Mask-RCNN实现这一点的方法是创建新的配置类,该类将限制我们的预测范围。

预测配置类

用“验证集”模式加载模型,从logs文件夹加载模型:

函数绘制检测对象的边界框

因此,如果我们加载任意随机图像,检测可用和已占用的停车位,使用我们的函数来绘制它们,结果将是:

Mask-RCNN检测可用停车位

绿色框是可用的停车位,蓝色边界框是已占用的停车位。这个模型的性能看起来是相当不错,尽管它仍然不能检测到小车/停车位。数据集中故意忽略了停在人行道旁的汽车,这样模型在训练时就不会考虑这些汽车。这是MaskRCNN可视化方法的结果:

Mask-RCNN检测可用停车位

考虑到这个结果,似乎模型的性能真的很好。但在我们的数据集中,我们只有停车场的两个角度,因为我只训练顶级模型,我只使用了数据集的一部分。所以,可以看一下另一张停车场的照片,用类似的摄像头定位,但不是这个数据集的一部分。

很明显,这个模型与我们的停车场数据集过于匹配,这意味着它在同一个数据集上表现很好,但我没有说训练,因为训练和测试照片实际上是位于停车场上不同汽车的相同照片,虽然技术上没有泄漏测试数据,但在某种意义上,他们是一样的。预先训练过的、开箱即用的Mask-RCNN在探测车辆方面的表现要好得多。

鉴于这些结论和我之前提到的局限性,为了改进模型或向前推进,下一步应该做什么?我们可以使用整个数据集从头开始训练模型,看看它的执行情况,尝试调优检测阈值。我们也可以试着去做,也许这可以成为这篇文章的第二部分。但理想情况下,更多变化的数据集是必不可少的,完整的注释是创建准确的停车位检测模型的基础。此外,为了建立不仅准确而且健壮的检测模型,考虑到正在行驶而尚未停车的汽车和擅自停放的汽车是非常重要的,这些可能是未来需要进一步研究的步骤。

新闻

波士顿动力机器人解锁跑酷技能

大赛

移动云 API 应用创新开发大赛

技术

强化学习环境库 Gym 首个社区发布版

采访

驭势科技的无人驾驶野心

分享

点收藏

点点赞

点在看

相关文章:

Microsoft Office Communications Server 2007 R2 RTM 简体中文企业版部署速成篇之二

写文章真是件累人的事情.\(^o^)/~.OCS2007R2中的CWA有很多新特性.今天我们来看看,接着昨天的开始.本篇基于速成篇之一.Go!在一中的环境中多了,一台WIN2008的服务器,并加入域.首先在DNS里面建两条别名,指向CWA服务器!完成后,记得重新启动DNS.然后,子啊功能和角色里面添加必要的组…

F5负载均衡会话保持技术及原理技术白皮书

1.什么是会话保持?在大多数电子商务的应用系统或者需要进行用户身份认证的在线系统中,一个客户与服务器经常经过好几次的交互过程才能完成一笔交易或者是一个请求的完成。由于这几次交互过程是密切相关的,服务器在进行这些交互过程…

一文全览机器学习建模流程(Python代码)

作者:泳鱼 来源:算法进阶引言随着人工智能时代的到来,机器学习已成为解决问题的关键工具,如识别交易是否欺诈、预测降雨量、新闻分类、产品营销推荐。我们接下来会详细介绍机器学习如何应用到实际问题,并概括机器学习应…

CSS Selector 3

转载于:https://www.cnblogs.com/dmdj/p/4213159.html

GSM中时隙、信道、突发序列、帧的解释

刚从论坛中看到有人问GSM中时隙、信道、突发序列、帧知识。今天我们数字通信正好上到这一块,我就根据我知道的和网上搜索的回答! 1、时分多路复用技术 FDMA:频分多址 TDMA:时分多址 CDMA:码分多址 为了提高通信道的利用率,使若干彼此独立信号…

网页效率之DNS查找和并行下载

首先,一个页面所需要访问的域名数量为n,那么就需要n次DNS查找,而DNS查找通常是blocking call,就是说在得到结果之后才能继续,所以越多的DNS查找,反应速度就越慢; 雅虎的YSlow插件的规则之一&…

赛门铁克开启“容灾即服务”时代

从本地备份到异地复制再到云容灾,随着云计算技术的快速发展,以及云服务这种模式逐渐被广大企业用户所接受,将数据备份到云已经是一种可行的数据保护解决方案。12 月 16日,赛门铁克公司推出了一款全新的灾难恢复解决方案Symantec D…

再谈“去虚拟化”对深度学习系统的必要性

作者 | 袁进辉上周写了一篇《浅谈GPU虚拟化与分布式深度学习框架的异同》,想不到引起很多关注和讨论。和朋友们讨论之后,觉得这个话题值得再发散一下:首先,文章只讨论了GPU“一分多”这种“狭义”的虚拟化,还存在另外的…

Enable PowerShell script execution policy

Open Windows PowerShell with administrator Run “Set-ExecutionPolicy UnRestricted –Force” 本文转自学海无涯博客51CTO博客,原文链接http://blog.51cto.com/549687/1918870如需转载请自行联系原作者520feng2007

Linux下DNS轮询与Squid反向代理结合

一、安装反向代理服务器 1.下载反向代理服务器软件采用squid,下载地址: http://www.squid-cache.org/Versions/v2/2.2/squid-2.2.STABLE5-src.tar.gz 下载后存放在/usr/local/squid/src目录里,文件名是 squid-2.2.STABLE5 ... 一…

从iOS证书申请到签名文件生成

2019独角兽企业重金招聘Python工程师标准>>> 苹果的应用在发布时(无论是Adhoc发布还是AppStore正式发布)都需要一个签名文件。这个签名文件是由苹果后台生成的,它把用户生成的证书,注册设备,AppID等统统连在…

GitHub 热榜:来膜拜这个流弊的 AI 框架!

近年来,人工智能正在进入一个蓬勃发展的新时期,这主要得益于深度学习和CV领域近年来的发展和成就。在这其中,卷积神经网络的成功也带动了更多学术和商业应用的发展和进步。为了避免“内卷”,更多人选择学习进阶,但是仍…

ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤

1.下载本版本的编辑器压缩包。源码下载地址 2.解压缩打开文件夹拥有如下文件&#xff1a;3.在VS中添加“选择项”加载在此文件夹的Bin下FredCK.FCKeditorV2.dll。4.在你的网站的web.config的 <appSettings>枝节中加入&#xff1a;<appSettings><add key"FC…

安装varish作为缓存和代理

1&#xff0c;Varish的使用有两种模式&#xff1a;第1种 Nginx(负载)varish(缓存)WEB第2种 Varish&#xff08;缓存和负载&#xff09;web2&#xff0c;varish是以内存作为共享容器的&#xff1a;内存的大小决定了它的缓存容量。相对于主要以硬盘为存储的squid来说要高效的多…

英伟达 400 亿美元收购 ARM 受阻,不妨考虑 VMware?

作者 | 马超 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;目前半导体行业的发展可以用冰火两重天来形容&#xff0c;传统的桌面及移动SOC&#xff08;System on a Chip&#xff0c;系统级芯片&#xff09;市场已经基本停止增长&#xff0c;而云计算成了各…

单目和双目模式识别---游戏控制

http://v.youku.com/v_show/id_XMzQwMjUwNTY.html http://blog.csdn.net/anthonywanted/article/details/3024535转载于:https://www.cnblogs.com/pengkunfan/p/4220144.html

vsftpd企业应用快速部署文档

系统环境&#xff1a;centos 5.6 vsftpd&#xff1a;2.3.5 vsftpd是UNIX/Linux中非常安全且快速的FTP服务器&#xff0c;目前已经被许多大型站点所采用。vsftpd支持将用户名和口令保存在数据库文件或数据库服务器中。登录FTP有三种方式&#xff0c;匿名登录、本地用户登录和虚拟…

华为持续引领,开辟5G Massive MIMO绿色新赛道

今日&#xff0c;在华为举办的无线首届媒体沙龙暨MBBF2021预沟通会上&#xff0c;华为无线产品线首席营销官甘斌发表了“华为持续引领&#xff0c;开辟5G Massive MIMO绿色新赛道”的主题发言&#xff0c;分享了Massive MIMO的下一个突破性创新方向&#xff0c;引领绿色5G网络建…

MRTG—网络监控工具

最近一段时间在研究后台服务器测试技术&#xff0c;需要对后台服务器的各项性能指标进行实时监控和统计&#xff0c;也由此让我回想起之前公司曾经接触过的一个服务SNMP&#xff0c;SNMP是一种称之为简单网络管理协议的服务&#xff0c;主要是用于获取系统的流量、I/O、CPU、Me…

IBM会话设置和覆盖规则

为什么80%的码农都做不了架构师&#xff1f;>>> 中文版地址&#xff1a;http://www-01.ibm.com/support/docview.wss?uidswg21659740 Technote (troubleshooting) Problem(Abstract) It is possible to set the HTTP Session time-out in various places on th…

FOSCommentBundle功能包:设置Doctrine ODM映射

Step 2b: Setup MongoDB mapping The MongoDB implementation does not provide a concrete Comment class for your use,you must create one: MongoDB实现并不提供为您所用的具体评论类&#xff0c;您必须要创建一个。 1234567891011121314151617181920212223<?php// src…

lighttpd 负载均衡-反向代理+cache浅谈

Lighttpd有硬盘级别的cache-(mod_cache)和内存级别的cache(mod_mem_cache&#xff09;&#xff0c;内存级别的cache是国人的产品&#xff0c;我喜欢用lighttpd就是因为它具有2种选择的cache&#xff0c;像我的实际需求&#xff0c;由于系统存在很多图片&#xff0c;但是容量不大…

设置网页标题图标

网页图标如图上位置 设置语句如下&#xff1a; link rel:"SHORTCUT ICON", href:"/images/logo.ico"

DeepMind 的新强化学习系统,是迈向通用人工智能的一步吗?

作者&#xff1a;Ben Dickson来源&#xff1a;数据实战派前言尽管已经掌握围棋、星际争霸 2 和其他游戏&#xff0c;深度强化学习模型的主要挑战之一是&#xff0c;它们无法将其能力泛化到训练领域之外。这种限制使得将这些系统在现实世界中的应用变得非常困难&#xff0c;因为…

无法访问D盘,执行页内操作时的错误

打开D盘后出现“无法访问D:/,执行页内操作时的错误”怎么办&#xff1f;既便D盘有病毒也不会出现这种状况&#xff0c;初步判断是D: 分区表错误&#xff0c;用系统安装光盘开机进入纯DOS下的修复模式中用 CHKDSK /R 或 /F来修复一下试试看。在cmd下输入chkdsk空格d:空格/f本文转…

怎样修改Ubuntu的root帐户密码并使用root登录

Ubuntu版本11.04 Ubuntu是一套基于Debian的Linux系统&#xff0c;它追求的是“Just Work”&#xff0c;最新的7.10版本发布于2007年10月&#xff0c;不同于其他Linux发行版本&#xff0c;Ubuntu的所有版本都是免费的&#xff0c;包括企业版。第一次安装Ubuntu&#xff0c;发现比…

CSDN 开学见面礼!限时免费申请,手慢无!

暑假即将结束&#xff0c;金秋开学季来袭。别让年轻的自己虚度光阴&#xff0c;现在扫码申请学习资格&#xff0c;10&#xff0b;场考前辅导&#xff0c;600&#xff0b;分钟大咖讲解与答疑直播免费看&#xff01;大厂CTO级别导师陪你加buff&#xff01;3周带你掌握大厂工程师基…

【No.1_sizeof与strlen】

【注意】 程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具&#xff0c;可以并鼓励深入掌握一门语言&#xff0c;但千万别沉迷于钻某种语言的牛角尖&#xff0c;一定要把握好二者间的度 本帖属不定时连载贴&#xff0c;以试卷的形式提出一个比较基础的问题供大…

Linux: CentOS 7下搭建高可用集群

转载&#xff1a; http://linux.cn/article-3963-1.html本文以两台机器实现双集热备高可用集群&#xff0c;主机名node1的IP为192.168.122.168 &#xff0c;主机名node2的IP为192.168.122.169 。一、安装集群软件必须软件pcs&#xff0c;pacemaker&#xff0c;corosync&#xf…

史上最大规模 DDoS 攻击,每秒 1720 万次 HTTP 请求

整理 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 互联网基础设施公司 Cloudflare 表示&#xff0c;已化解了迄今为止所记录的最大规模的容量耗尽分布式拒绝服务&#xff08;DDoS&#xff09;攻击。 近日&#xff0c;互联网基础设施服务提供商 Cloudfl…