Structure Guided Lane Detection 论文精度

结构导向车道检测

摘要

近年来,随着深度神经网络和自动驾驶的快速发展,车道检测取得了长足的进步。然而,主要存在三个问题,包括车道的特征化、场景与车道之间的结构关系建模以及对车道的更多贡献(如实例和类型)的支持。在本文中,我们提出了一种新的结构导向框架来同时解决这些问题。在该框架中,我们首先引入了一种新的车道表示来表征每个实例。然后,提出了一种自上而下的消失点导向锚定机构,以产生密集型锚,有效地捕获各种车道。其次,使用多级结构约束来提高车道的感知能力。在此过程中,引入了像素级感知和二值分割来提升锚点周围的特征并自下而上恢复车道细节,提出了车道级关系来建模车道周围的结构(即平行),并使用图像级注意力从场景的角度自适应地关注图像的不同区域。在结构指导的帮助下,锚被有效地分类和重新分级,以获得精确的位置和形状。在公共基准数据集上的实验表明,所提出的方法在单个GPU上以117 FPS的速度优于现有技术。

一、介绍

车道检测旨在检测道路场景中的车道,是一项基本的感知任务,具有广泛的应用(例如,ADAS[Butakov和Ioannou,2014]、自动驾驶[Chen和Huang,2017]和高精度地图制作[Homayunfar et al.,2019])。车道检测已经取得了重大进展,它也被用作道路场景理解任务的重要元素,例如驾驶区域检测[Yu et al.,2020]。

图1、车道检测的挑战。(a)各种表现形式。存在许多类型的注释[TuSimple,2017;Pan等人,2018;Yu等人,2020;Lee等人,2017],这使得难以统一地描述车道。(b)研究不足的场景结构。车道位置强烈依赖于结构信息,如消失点(黑点)、鸟瞰图中的平行度和透视引起的距离注意。(c)要支持的更多属性。车道具有更多的属性,如实例和类型,这些属性应该进行预测。

为了解决车道检测的任务,近年来提出了许多基于学习的方法[Pan et al.,2018;Qin et al.,2020],在现有基准上取得了令人印象深刻的性能[TuSimple,2017;Pan et al.,2018]。然而,仍然存在一些阻碍车道检测发展的挑战。首先,缺乏统一有效的车道表示。如图1a所示,存在各种定义,包括点[TuSimple,2017]、掩码[Pan etal.,2018]、标记[Yu et al.,2020]和网格[Lee et al.,2017],对于不同的场景,它们在形式上有很大的不同。其次,很难对场景和车道之间的结构关系进行建模。如图1的(b)所示,依赖于场景的结构信息,如消失点的位置和车道的平行度,非常有用,但没有方案来描述它。最后,在预测车道时,预测其他属性也很重要,包括实例和类型(见图1的(c)),但对现有方法进行扩展并不容易。这三个困难尤其难以处理,大大减缓了车道检测的发展。由于这些困难,车道检测仍然是一项具有挑战性的视觉任务。

为了解决第一个困难,许多方法都用简单的拟合曲线或掩码来表征车道。例如,SCNN[Pan et al.,2018]将该问题视为语义分割任务,并在特征图中引入逐片卷积,从而实现消息传递。对于这些方法,车道被表征为一种特殊的形式(例如,点、曲线或掩码),因此通常很难支持具有不确定数量标记或网格的格式。同样,支持后者的人[Lee et al.,2017]也不太支持前者。为了解决第二个问题,一些方法使用消失点或平行关系作为辅助信息。例如,消失点预测任务[Lee et al.,2017]用于隐式嵌入地理度量上下文识别能力。在这些方法中,他们通常只关注某一种结构的形成,或者不直接端到端地使用它,这导致结构不能完全发挥作用,算法复杂。对于最后一个问题,使用一些基于聚类或检测的方法来区分或分类实例。Line CNN[Li et al.,2019]利用线路建议作为参考来定位交通曲线,这迫使该方法学习车道的特征。对于这些方法,它们可以区分不同的实例,甚至可以扩展到更多的属性,但它们通常需要额外的计算,并且有许多手动设计的超级参数,这导致了较差的可扩展性。

 图2、我们方法的框架。我们首先通过提取器提取常见特征,提取器为消失点引导锚定和像素级感知提供特征。锚定产生密集的锚,感知利用二元分割来促进车道周围的特征。借助车道级关系和图像级注意力,利用提升特征对锚点进行分类和回归。虚线箭头表示监督,图中省略了对消失点和车道分割的监督。

受这些观察和分析的启发,我们提出了一种新的结构导向车道检测框架,如图2所示。为了表征车道,我们提出了一种基于箱线的建议方法。该方法利用车道的最小外接矩形进行实例识别,并利用其中心线进行结构化定位。为了利用结构信息进一步提高车道检测,提出了消失点引导锚固机制来生成意图锚(即尽可能少且准确的锚)。在该机制中,消失点以分割的方式学习,并用于自上而下产生结构锚,可以有效地捕捉各种车道。同时,我们提出了多层次的结构约束,以提高对车道的感知。在此过程中,像素级感知借助于车道二值分割来改善车道细节,车道级关系旨在通过神经网络通过逆透视映射(IPM)对车道间的平行性进行建模,图像级注意力是从场景的角度对具有自适应权重的图像进行关注。最后,提取结构引导下车道锚的特征,进行准确的分类、回归和其他属性的预测。在CULane和Tusimle数据集上的实验结果验证了所提出的方法的有效性,该方法实现了最先进的性能,并在117 FPS下高效运行。

本文的主要贡献包括:

1)我们提出了一个结构导向的车道检测框架,该框架对车道进行了表征,可以准确地对无限车道的形状进行分类、定位和重新存储。

2) 我们介绍了一种消失点引导锚定机构,其中消失点将被预测并用于产生密集的anchors,该机构可以精确地捕获车道。

3) 我们提出了多级结构约束,用于感知像素级的一元细节,建立车道级的成对关系模型,自适应地处理图像级的全局信息。

二、相关工作

在本节中,我们将从两个方面回顾旨在解决车道检测挑战的相关工作。

2.1、传统方法

为了解决车道检测问题,传统的方法通常基于手工制作的特征,通过检测标记的形状和拟合样条曲线。[Veit等人,2008]对用于检测道路标线的特征进行了全面概述。Wu和Ranganathan,2012]使用最大稳定极值区域特征,并执行模板匹配来检测多个道路标记。然而,有些方法在陌生的条件下往往会失败。

2.2、基于深度学习的方法

深度学习的发展,基于深度神经网络的方法[Pizzati和Garc´ıa,2019;Van Gansbeke等人,2019;郭等人,2020]在车道检测方面取得了进展。SCNN[Pan et al.,2018]概括了传统的深层逐层卷积,以实现在行和列之间的像素之间的消息传递。ENet SAD[Hou et al.,2019]提出了一种知识提取方法,该方法允许模型在没有任何额外监督或标签的情况下自我学习。PolyLaneNet[Tabelini et al.,2020]对车道标线采用多项式表示,并通过深度多项式回归输出多项式。超快[Qin et al.,2020]将车道检测过程视为使用全局特征的基于行的选择问题。CurveLanes[Xu et al.,2020]提出了一种车道敏感架构搜索框架,以自动捕获长距离连贯和准确的短距离曲线信息。

在这些方法中,采用了不同的车道表示,并考虑了一些结构信息以提高性能。然而,这些方法通常基于神经网络强大的学习能力来学习车道的拟合或形状,与场景相关的结构信息对车道的作用还没有得到足够的关注和讨论。

三、提出的方法

为了解决这些困难(即,表征车道,对场景和车道之间的关系进行建模,并支持更多属性),我们提出了一种用于车道检测的新型结构引导框架,称为SGNet。在这个框架中,我们首先介绍了一种新的车道表示。然后提出了一种自上而下的消失点引导锚固机制,并使用了下一个多级结构约束。拟议方法的细节描述如下。

3.1、车道表示

为了适应不同风格的车道标注,我们介绍了一种新的基于框线的车道表示方法。首先,我们计算车道实例Llane的高度为h、宽度为w的最小外接矩形R(“长方体”)。对于这个矩形,获得了垂直于短边的中心线Lcenter(“线”)。正X轴与L中心顺时针方向的夹角为θ。以这种方式,Lcenter提供了车道的位置,h和w限制了所涉及的区域。基于R和Lcenter,可以执行基于点、掩码、标记符、网格和其他格式的车道预测。在本文中,之所以采用基于车道检测关键点的解决方案,正是因为公共数据集中基于点的车道标注风格(例如,CULane[TuSimple,2017]和Tusimle[Pan et al.,2018])。

 图3、车道表示

受现有方法的启发[Li et al.,2019;Chen等人,2019;Qin et al.,2020],我们定义了具有等距y坐标y={yi}和yi=PH−1·i(i=1,2,…,P−1)的车道实例的关键点,其中P表示通过图像高度的所有关键点的数量,该数量固定在具有相同高度H和宽度W的图像上。因此,车道的x坐标表示为x={xi}。为了便于表达,Lcenter的直线方程定义为

中a、b和c可以很容易地通过θ和Lcenter上的任何点来计算。接下来,当中心线的y坐标为yi时,我们可以计算相应的x坐标为

 然后,我们将车道Llane和中心线Lcenter之间的x坐标∆x的偏移量定义为

因此,基于Lcenter和∆X,我们可以计算车道实例Llane。通常,学习Lcenter和∆X比直接拟合Llane的关键点更容易。

3.2、特征提取器

如图2所示,SGNet以ResNet[He et al.,2016]作为特征提取器,对其进行了修改,以去除像素级预测任务的最后一个全局池化和全连接层。特征提取器有五个用于en编码的残差模块,称为Ei(πi),参数为πi(i=1,2,…,5)。为了获得更大的特征图,我们通过具有256个3×3核的卷积层对E5(π5)进行卷积,然后对特征进行×2上采样,然后与E4(π4)进行元素求和,以获得E 04(π04)。最后,对于H×W输入图像,特征提取器输出H/16×W/16特征图

3.3、消失点导向锚定

为了学习车道表示,有两种主要方法来学习中心线Lcenter和x偏移∆x。第一种方法是直接用角度、数量和位置回归来学习确定的Lcenter,由于回归任务的固有困难,通常很难获得精确的结果。第二种方法是基于成熟的检测任务,使用密集锚进行分类、回归,然后获得代表车道实例的建议。第二个模型已被证明在一般的对象检测任务中运行良好,因此我们选择它作为我们的基本模型。

学习中心线Lcenter和x偏移∆x,我们提出了一种新型的消失点导向锚定机构(称为VPG锚定)。消失点(VP)提供了强烈的几何场景特征,代表道路的尽头,也是车道在远处相交的“虚拟”点。由于VP是车道的交叉点,因此场景中的车道必须通过VP,而不通过VP的线很可能不是场景中的行车道。因此,从VP辐射出的密集线理论上可以覆盖图像中的所有车道,这相当于将chors的生成空间从R H×W×Nproposal缩小到R Nproposable。Nproposal表示在一个像素上生成的锚的数量。

如图2所示,特征图E04(π04)被馈送到VPG Anchoring。在该机制中,VP由一个简单的分支预测,该分支由多尺度上下文感知的atrous空间金字塔池(ASPP)[Chen et al.,2018]实现,然后是具有3×3的256个内核的卷积层和softmax激活。VP预测分支表示为φV(πV),参数为πV。

通常,VP在车道数据集中没有注释,例如CU lane[Pan et al.,2018],因此我们对所有车道实例的中心线交点进行平均,得到近似的VP。此外,单个点通常很难预测,因此我们将VP的区域扩展到16个像素的半径,并使用分割算法进行预测。为了实现这一点,我们期望φV(πV)的输出通过最小化损耗来近似VP(表示为GV)的地面实况掩码

其中BCE(·,·)表示像素级二进制交叉熵损失函数。

 图4、VP引导的锚固机构。基于(a)消失点(黑点)和(b)消失点周围的区域(黑色和灰色点)生成的锚点(金线)。

为了确保生成的锚足够密集,我们选择了一个以VP为中心的Wanchor×Wanchor矩形区域,并以每个Sanchor取一点来生成锚。对于每个点,每个Aanchor角(Aanchor∈[0180])都会生成锚,如图4所示。通过这种方式,与一般的全尺寸均匀生成甚至专门设计的车道方法相比,锚是有针对性的、密集的且不冗余的[Li et al.,2019]。请注意,锚贯穿整个图像,为了方便显示,图2和图4中只显示了VP下方的部分。

3.4、分类和回归

为了对生成的锚点进行分类和回归,我们提取了基于E4(π4)的具有多个卷积层的高级特征图。特征图命名为FA∈R H0×W0×C0,其中H0、W0和C0是FA的高度、宽度和通道。对于每个锚点Llane,从FA中提取锚点上每个点的通道级特征,得到车道描述符DA∈R HO×C0。该描述符用于对存在的ConfLlane进行分类,并回归x偏移∆XLlane,包括车道的长度len。为了了解这些,我们期望输出通过最小化损失来近似地面实况存在GConf-Liane和x偏移G∆XLlane

 其中SL1(·,·)表示平滑的L1损失,L表示提议的数量。最后,使用Line NMS[Li et al.,2019]来获得具有置信阈值的最终结果。

3.5、多层结构约束

为了进一步提高车道感知,我们要求场景和车道之间的结构关系,并深入探索像素级、车道级和图像级的结构。

像素级感知

自上而下的VPG锚定机制涵盖了车道的结构和分布。同时,还需要自下而上的细节,以确保更准确地恢复和描述车道细节。为了提高细节感知,我们引入了车道分割分支来定位车道位置,并提高了像素级的一元细节。如图2所示,车道分割分支与VP预测分支具有相同的输入和相似的网络结构。车道分割分支表示为φP(πP),参数为πP。为了分割车道,我们期望PP=φP(πP)的输出通过最小化损失来近似二进制车道掩码(表示为GP)的基本真值掩码

 为了提升像素级一元细节,我们通过以下操作对输入特征FA进行加权

 其中MA被馈送以进行分类和回归,而不是FA。

车道级别关系

事实上,车道在施工过程中符合一定的规则,其中最重要的是车道是平行的。由于成像的原因,这种关系在透视变换后不再保持,但它可以潜在地建模。为了对车道级别关系进行建模,我们通过神经网络通过H矩阵[Neven et al.,2018]进行IPM。学习H后,可以将站姿Llane中的车道转换为鸟瞰图中的L 0lane,其中不同的实例是平行的。形式上,我们定义车道之间的关系如下。对于图像中的两个车道实例Llane1和Llane2,通过学习的H矩阵将它们投影到鸟瞰图,并获得相应的实例L 0lane1和L 0lane2。这两个实例可以拟合为以下线性方程:

在这两个方程中,在y相等的条件下,x的差总是恒定的。因此,我们可以得到a1b2=a2b1。扩展到所有实例,车道级别关系可以公式化为

图像级别的注意

在相机成像过程中,远处的物体经过投影后会变小。通常,车道的重要信息在视觉上并不突出,但它们同样重要。分析发现,在成像过程中,车道与VP的距离与尺度成反比。因此,我们基于VP生成透视注意力图PAM,这是基于成像后的注意力和距离是二维高斯分布的强假设。PAM通过自适应地限制分类和回归损失(来自等式5)来确保不同区域的注意力,如下所示。

 其中|·|表示归一化为[0,1]。

通过考虑等式(4)、(5)、(6)、(9)和(10)的损失,整体学习目标可以公式化如下:

其中P是{{πi}5i=1,π04,πV,πC,πR,πP,πL}的集合,πC、πR和πL分别是分类、回归和车道级关系子网络的参数

 图5、最先进的算法和我们的方法的定性比较

个人总结

三个问题

1、缺乏统一有效的车道表示(各个算法表示车道的方式不一样)

2、很难对场景和车道之间的结构关系进行建模(转成BEV之后车道线是平行的,前视图中车道线有共同的消失点)

3、预测车道的同时,预测其他属性,例如实例分割、车道线类别

车道描述

参考图3

整体理解

这篇论文整体还是有些意思的,但是流程太多了,作者也没开源代码,应该是在这吹牛呢

个人觉得比较有意思的地方是车道线的描述方式、用卷积的方式预测车道线消失点、根据车道线消失点预设anchor、将得到的车道线转俯视图然后旋转修正车道线的位置

作者首先一顿卷积,然后分了三个头,一个用来预测车道线的消失点;一个跟根据车道线的消失点设置anchor;最后一个头进行语义分割得到第一版的车道线。将anchor的结果和语义的结果进行拼接,得到特征图。根据特征图对车道线进行描述得到第一版的实例车道线。将第一版的实例车道线和特征图进行拼接,然后在BEV上对车道线进行调整得到终版的实例车道线。

Feature Extractor:

公用的特征提取层

VP-guided Anchoring Generator:

上面那张图用来预测图像中的消失点

下面这张图根据消失点预设anchor

Image-level Attention:

消失点注意力

Pixel-level Perception:

语义分割,预测车道线(非实例)

Feature Map:

根据预设的anchor和语义分割结果生成特征图

Lane Descriptor:

根据特征图结果描述车道线的各个属性:车道长度、偏置、置信度、类型

得到第一版实例车道线

Lane-level Relation

将特征图和第一版实例车道线进行拼接,然后转BEV图,作者认为BEV图中车道线应该是平行的,因此作者在BEV图上对得到的车道进行旋转,然后得到第二版的实例车道线

论文地址

https://arxiv.org/abs/2105.05403

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53352.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Bean的加载方式

目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1,FactoryBean 扩展2,加载配置类并加载配置文件(系统迁移) 扩展3,proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…

画架构图工具-haydn

Haydn解决方案数字化平台_海顿解决方案工具链-华为云 下图为haydn架构图示例 Haydn解决方案数字化平台_海顿解决方案工具链-华为云 1、vpc是一个很重要的元素,有网络隔离的作用。 2、OBS、CES、CTS,不需要画到vpc里面。 3、不在区域内的资源&#xf…

CPU Architecture Methodologies

MMU MMU(Memory Management Unit) 负责将逻辑地址转化为物理地址对于现代处理器来说,一般每个core都有自己的 MMU页表等数据结构保存在 TLB NUMA Non-uniform memory access (NUMA) is a computer memory design used in multiprocessing, where the memory access…

汽车产业链面临重大变革 大运乘用车加强产业布局 助力低碳出行

当前,国家“双碳”战略的全面实施,全球绿色产业发展理念的不断加深以及汽车产品形态、交通出行模式、能源消费结构变革所呈现的发展机遇等诸多因素,持续推动新能源汽车产业全面转型提速。据悉,2022年,中国新能源汽车销…

7、单元测试--测试RestFul 接口

单元测试–测试RestFul 接口 – 测试用例类使用SpringBootTest(webEnvironment WebEnvironment.RANDOM_PORT)修饰。 – 测试用例类会接收容器依赖注入TestRestTemplate这个实例变量。 – 测试方法可通过TestRestTemplate来调用RESTful接口的方法。 测试用例应该定义在和被测…

企业数字化转型失败率达80%,面临哪些挑战?应该如何规划?

随着数字化在社会的飞速发展,人们的生活工作娱乐等方方面面都已经被数字化占领,数字化所衍生出的数字经济更是成为高速增长的国民经济支柱,而数据作为“副产品”也成功进化为第五大生产要素,发挥出巨大的价值,变成了个…

电脑选睡眠、休眠还是关机?

关机 这是大家最熟悉的。关机时,系统首先关闭所有运行中的程序,然后关闭系统后台服务。随后,系统向主板请求关机,主板断开电源的供电使能,让电源切断对绝大多数设备的供电(只剩一些内部零件仍会维持电源供应…

5个值得收藏的AI绘画网站,还有国产!

随着科技的发展,设计领域也迎来了科技创新,AI绘画网站便是其中的一个代表,本文精选了4个好用的AI绘画网站与大家分享,一起来看看吧! 1、即时灵感 作为一个国产的AI绘画网站,即时灵感支持设计师使用中文语…

GitHub仓库如何使用

核心:GitHub仓库如何使用 目录 1.创建仓库: 2.克隆仓库到本地: 3.添加、提交和推送更改: 4.分支管理: 5.拉取请求(Pull Requests): 6.合并代码: 7.其他功能&…

ffmpeg安装

简介 FFmpeg是一个开源的音视频处理库,它提供了一系列的工具和API,可以用于处理音视频文件。你可以使用FFmpeg的命令行工具来执行各种音视频处理操作,比如转码、剪辑、合并等。FFmpeg的命令格式通常是:ffmpeg [全局选项] {[输入文…

HJ99 自守数+OR86N 返回小于N的质数个数

HJ99 自守数 自守数_牛客题霸_牛客网 (nowcoder.com) #include <iostream> #include<cmath> using namespace std; bool Ending_Same(int a) {int a_a a * a;if (a_a a)return true;int i 1;while (a_a ! 0 && a_a/ (int)pow(10, i)!0)//保证a*a有足够…

最全面的接口自动化测试流程、工具及其实践

1、接口自动化测试简介 接口自动化测试是指通过编写脚本或使用自动化工具&#xff0c;对软件系统的接口进行测试的过程。接口测试是软件测试中的一种重要测试方法&#xff0c;主要用于验证系统组件之间的通信和数据交换是否正常。接口自动化测试可以提高测试效率和准确性&#…

【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?

日期&#xff1a;2023年7月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

【Golang】Golang进阶系列教程--Golang中文件目录操作的实现

文章目录 一、文件二、文件目录三、文件目录操作3.1、读取文件3.1.1、方法一 (file.Read())3.1.2、方法二 (bufio读取文件)3.1.3、方法三 (ioutil 读取方法) 3.2、写入文件3.2.1、方法一3.2.2、方法二3.2.3、方法三 (ioutil写入文件) 3.3、复制文件3.3.1、方法一3.3.2、方法二 …

配置IPv6 over IPv4 GRE隧道示例

组网需求 如图1&#xff0c;两个IPv6网络分别通过SwitchA和SwitchC与IPv4公网中的SwitchB连接&#xff0c;客户希望两个IPv6网络中的PC1和PC2实现互通。 其中PC1和PC2上分别指定SwitchA和SwitchC为自己的缺省网关。 图1 配置IPv6 over IPv4 GRE隧道组网图 配置思路 要实现I…

redis之Bitmap

位图数据结构其实并不是一个全新的玩意&#xff0c;我们可以简单的认为就是个数组&#xff0c;只是里面的内容只能为0或1而已(二进制位数组)。 GETBIT用于返回位数组在偏移量上的二进制位的值。值得我们注意的是&#xff0c;GETBIT的时间复杂度是O(1)。 GETBIT命令的执行过程如…

简单的知识图谱可视化+绘制nx.Graph()时报错TypeError: ‘_AxesStack‘ object is not callable

绘制nx.Graph时报错TypeError: _AxesStack object is not callable 写在最前面知识图谱可视化预期报错可能的原因 原代码原因确认解决后的代码解决&#xff01; 写在最前面 实现一个简单的知识图谱的可视化功能。 使用了NetworkX库来构建知识图谱&#xff0c;并使用matplotlib…

vue 使用vue-json-viewer 展示 JSON 格式的数据

npm install vue-json-viewer --save<el-button type"primary" click"previewClick">预览</el-button><el-dialog title"预览" :visible.sync"previewVisible" width"70%"><viewer ref"viewer&qu…

Arcgis通过模型构建器计算几何坐标

模型 模型中&#xff0c;先添加字段&#xff0c;再计算字段 计算字段 模型的计算字段中&#xff0c;表达式是类似这样写的&#xff0c;其中Xmin表示X坐标&#xff0c;Ymin表示Y坐标 !Shape.extent.Xmin!类似计算面积 !shape.area!

在简历上写了“精通”后,拥有工作经验的我被面试官问到窒息

前言 如果有真才实学&#xff0c;写个精通可以让面试官眼前一亮&#xff01; 如果是瞎写&#xff1f;基本就要被狠狠地虐一把里&#xff01; 最近在面试&#xff0c;我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表&#xff1a; 熟悉软件测试理论基…