车位检测算法-Context-Based Parking Slot Detection With a Realistic Dataset

本文主要是介绍车位检测算法-Context-Based Parking Slot Detection With a Realistic Dataset,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

停车位检测算法总结

Context-Based Parking Slot Detection With a Realistic Dataset

摘要

这篇文章提出了一种基于上下文的两阶段的停车位检测方法,其灵感来自于人类司机寻找停车位的过程。由两个深度网络模块组成:一个停车位的上下文识别器停车位检测器。识别器识别停车环境,包含车位类型、角度和车位的可用性;车位检测器通过多个基于类型的具有旋转anchor box和旋转非最大抑制的微调检测器来定位停车位的确切位置。此外,作者还发布了一个真实的停车位数据集,其中包含22817张停车位图像,车位类型和环境比较丰富。还提出了一种新的停车位检测评估指标,反映车辆是否可以停在检测到的停车位内。
github
代码环境搭建测试:to do!
本文提出的数据集地址:https://aistudio.baidu.com/aistudio/datasetdetail/146884

一、方法

在这里插入图片描述
从上图可以看出,整个模型由一个分类回归模型(基于 mobienet V2) + 检测模型组成(基于 yolov 3)

A. Overvier

总体方案如图所示。将车辆左右两侧的鱼眼相机捕获的图像转换为鸟瞰视图图像,并作为输入,这里没有用到多个鱼眼相机拼接的俯视图,而是只用到单个相机,给出的观点是拼接会造成计算量的增加而且拼接会造成一定的图像失真。停车位的检测使用一个两阶段的深度学习模型,由一个**停车上下文识别器(PCR)和一个停车位检测器(PSD)**组成。

在PCR中,估计了类型和方向,这是停车位的粗略信息,
类型 :平行、垂直、倾斜、非停车位
方向 :一个角度值(−90和90度之间的角值)
但是对每一张图片只预测一个类型各一个角度值
In most cases, since the adjacent parking slots will have the same orientation and type, the PCR outputs one parking slot type and one angular value per input image containing multiple slots.

在PSD中,根据PCR提供的检测信息,估计停车位的准确坐标。作者解释从直观的角度来看,方法类似于人类操作者驾驶和停车的过程。司机粗略地寻找一个停车的地方,然后估计出停车位的确切位置,是有那么点道理。
在PSD中有三个检测器,根据PCR推断的停车位类型,只有一个可以进行检测。首先使用所有类型的数据来训练一个检测器,然后将其复制到三个检测器中。最后,这三个检测器中的每一个都用特定类型的数据进行微调。当图像被归类为非停车位时,PSD不会被激活,因为在该空间中没有停车位。

B. PARKING CONTEXT RECOGNIZER

当应用于实际的停车系统时,PCR始终工作识别车辆附近是否存在停车位。在实际情况下,当没有停车时,无需估计停车位的准确位置。因此,只有当PCR识别到周围空间是可用的停车类型时,PCR才能为PSD提供类型和角度,以估计停车位的确切位置。这样,PCR作为一种过滤器,可以减少停车系统中的计算量。使用MobileNetV2作为backbone。
在这里插入图片描述

输入的图像为 64×192 的RGB图像。主干网络后接两个分支;一个用于类型分类,另一个用于方向角度回归。

  • 分类分支
    分类分支由两个全连接的层组成:一个128个神经元和ReLU激活的隐藏层和一个4个输出单元的Softmax激活层。分类分支中的4个输出单元分别表示其中一种停车位类型:平行、垂直、倾斜和非停车位。
  • 回归分支
    回归分支由两个全连接的层组成:一个128个神经元和relu激活的隐藏层和一个具有 Sigmoid激活的输出单元层。输出单元产生停车位的角度,GT值怎么算呢(是根据停车位的分隔线计算出来的)使直线垂直于车辆行驶方向的角度为0度,将顺时针方向旋转的直线的角度设置为正角,而将逆时针方向旋转的直线的角度设置为负角。因此,该角度的值在−90和+90度之间的范围内,它被归一化到0到1之间的范围。
    其实就是一个目标检测问题,box 的角点可以计算出角度值。labelme 就可以标注吧
    在这里插入图片描述
  • PCR LOSS
    在这里插入图片描述
    式中, P ^ c \hat P_c P^c为分类分支的第c个输出值, θ ^ \hat{\theta} θ^为回归分支的输出值,而 P c P_c Pc θ \theta θ分别为停车位类型和方向的真值。 λ \lambda λ是平衡多任务损失的参数

C. PARKING SLOT DETECTOR

PSD
PSD是基于YOLOv3的结构构建的,并估计了紧密包含停车位的四边形的四个顶点的坐标。常见的目标检测器,包括YOLOv3,可以估计宽度、高度和中心坐标,因为它们的目标是找到一个包围目标的水平边界框。停车场是四边形,但有时不是矩形的,可以旋转或一些区域可能被截断。本文的车位检测器即使在上述情况下,也要估计停车位的四个顶点的坐标,以准确地描述停车位的位置。本文检测器的输出设计如图3a所示。在(b)中,黑色虚线表示旋转的锚框,蓝色实线表示停车位。
在这里插入图片描述
在普通的目标检测器中,水平边界框使用水平锚框进行估计。相比之下,本文通过旋转锚框来更准确地检测旋转后的停车位。锚框的旋转角度用PCR估计的结果,用 θ ^ \hat{\theta} θ^表示。旋转后的锚框分别用 ( b x 、 b y ) (b_x、b_y) (bxby) ( b x i 、 b y i ) (b_{xi}、b_{yi}) (bxibyi)表示,它们分别表示停车位的中心点坐标和第i个顶点的坐标。
这些坐标的计算方法为:
在这里插入图片描述
其中, t x 、 t y t_x、t_y txty为估计停车位中心坐标; x i 、 y i x_i、y_i xiyi为估计停车位顶点坐标; c x 、 c y c_x、c_y cxcy为网格的坐标; A w 、 A h A_w、A_h AwAh分别为锚框的宽度和高度。这些符号如图3b所示。通过旋转锚框,各种停车位的外观变得相似,如图4所示。
三种类型的停车场都使用了Fine-tuned,当停车类型被归类为非停车位时,检测器不工作。每个检测器对每种停车位类型都有独特的权重,只有当相应的停车位类型被PCR激活时才可以操作。

rNMS
在这里插入图片描述

评估指标

IoU是目标检测最普遍的评价指标,但是不太适用于停车位检测问题。即使预测的停车位具有相同的IoU值,车辆在停车位上的停放也可能不同,如图6所示。
在这里插入图片描述

为了缓解这个问题,提出了一个新的评估指标,称为停车分数,它反映了车辆是否可以停在停车位内。
一个停车位的停车分数 S S S是通过将两个分数相乘来计算的:面积分数 S A r e a S_{Area} SArea(估计停车位面积的准确性)和位置分数 S L o c S_Loc SLoc(估计位置的准确性)。利用gt的停车位G和预测的停车位P的 坐标来估计这两个分数。
在这里插入图片描述
这两个区域大小越接近,分数就越接近值1。位置分数用来衡量P的面积在G的面积内,计算为
在这里插入图片描述
where P 1 P^1 P1 is a scale-downed location of P P P so that P 1 ⊂ G P^1 ⊂ G P1G。如果 P P P完全包含在 G G G中,则 S L o c S_{Loc} SLoc的最大值为1。如果停车分数 S S S超过阈值,则判定预测为真,否则为假。然后根据真判断和错误判断计算整个测试集的精度、召回率和平均精度。
在这里插入图片描述

实验

MobileNetV2、YOLOv3 architecture using darknet-53 as the backbone.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结

本文的方法虽然是一个二阶段的方法,但是整体架构和使用的模型比较简单,从实验效果看也不错,用的MobileNetV2、和基础的YOLOv3,感觉有很大的改进空间。

这篇关于车位检测算法-Context-Based Parking Slot Detection With a Realistic Dataset的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/241407

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int