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

重磅干货,第一时间送达

如何使用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文件夹加载模型:

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

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

Mask-RCNN检测可用停车位

考虑到这个结果,似乎模型的性能真的很好。但在我们的数据集中,我们只有停车场的两个角度,因为我只训练顶级模型,我只使用了数据集的一部分。所以,可以看一下另一张停车场的照片,用类似的摄像头定位,但不是这个数据集的一部分。
很明显,这个模型与我们的停车场数据集过于匹配,这意味着它在同一个数据集上表现很好,但我没有说训练,因为训练和测试照片实际上是位于停车场上不同汽车的相同照片,虽然技术上没有泄漏测试数据,但在某种意义上,他们是一样的。预先训练过的、开箱即用的Mask-RCNN在探测车辆方面的表现要好得多。
鉴于这些结论和我之前提到的局限性,为了改进模型或向前推进,下一步应该做什么?我们可以使用整个数据集从头开始训练模型,看看它的执行情况,尝试调优检测阈值。我们也可以试着去做,也许这可以成为这篇文章的第二部分。但理想情况下,更多变化的数据集是必不可少的,完整的注释是创建准确的停车位检测模型的基础。此外,为了建立不仅准确而且健壮的检测模型,考虑到正在行驶而尚未停车的汽车和擅自停放的汽车是非常重要的,这些可能是未来需要进一步研究的步骤。
下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐

  • 基于Mask RCNN的目标检测

    效果 1.环境配置 win10,pycharm tensoflow-gpu,keras 实现了单张图片的目标检测以及调用摄像头的实时检测. 2.问题 在使用Pycharm运行程序时冒出一个错误:Loa ...

  • Mask R

    原文链接 Mask R-CNN Keras 对象检测 对象分割 像素掩码 在 2019年7月16日 上张贴 由 hotdog发表 Mask R-CNN Keras 在本教程中,您将学习如何使用 Ker ...

  • 综述:目标检测二十年(2001-2021)

    作者丨派派星 来源丨CVHub 编辑丨极市平台 极市导读 目标检测领域发展至今已有二十余载,本文将对目标检测领域近20年的发展做一次系统性的介绍,并为目标检测构建一个完整的知识体系架构. 引言 目标检 ...

  • 恺明大神 Mask R

    转   自 | AI开发者 原标题 |  Mask R-CNN with OpenCV 作 者 | Adrian Rosebrock 翻 译 | 天字一号(郑州大学).李美丽(华南师范大学).had_ ...

  • ECCV 2018 | CornerNet:目标检测算法新思路

    极市平台是专业的视觉算法开发和分发平台,加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖 ...

  • 在 PyTorch 中使用 Detectron2 进行对象检测的指南

    目标检测是深度学习的流行应用之一.让我们首先考虑一个现实生活中的例子.大多数人会在手机中使用 Google 相册,它会根据"事物"选项下的照片自动将照片分组.我在下面附上一个片段. ...

  • 2020首届海洋目标智能感知国际挑战赛 冠军方案分享

    重磅干货,第一时间送达 本文转载自:网络人工智能园地 作者:欧奕旻.左育莘.杨锐 赛事回顾 2020年12月22日由中国造船工程学会等单位主办,哈尔滨工程大学承办,武汉理工大学协办的首届"海 ...

  • 基于密度图的航空物体检测:理论与代码实现

    本文来谈一下基于深度学习的航空物体场景下的物体检测.航空物体这类场景一般由无人机空拍来收集数据,然后进行后处理来满足特定的任务场景,有些情况下要求实现实时反馈,甚至多任务. 这里讨论的航空物体检测是其 ...

  • CV之IS:利用pixellib库基于mask_rcnn_coco模型对《庆余年》片段实现实例分割简单代码全实现

    CV之IS:利用pixellib库基于mask_rcnn_coco模型对<庆余年>片段实现实例分割简单代码全实现 利用pixellib库的instance_segmentation函数实现 ...

  • 收藏 | 使用Mask-RCNN在实例分割应用中克服过拟合

    干货第一时间送达 转载于:作者:Kayo Yin 编译:ronghuaiyang     |    AI公园 导读 只使用1349张图像训练Mask-RCNN,有代码. 代码:https://gith ...

  • Mask R-CNN抢车位,快人一步!

    本文来自Medium上的一篇博文:Snagging Parking Spaces with Mask R-CNN and Python,使用Python与Mask RCNN检测空闲停车位. 博主Ada ...

  • 完美替代Mask RCNN!BlendMask:实例分割新标杆

    今天新出的论文BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation,提出一种自顶向下和自底向上设计策略相结合的实例分割算法Blen ...