性能爆炸!最新MapEX:大幅超过现有所有SOTA,无图感知真的要来了???

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

>>点击进入→自动驾驶之心【高精地图】技术交流群

论文作者 | 汽车人

写在前面&笔者的个人理解

看完这篇文章,会有一种无图感知到头了的错觉???刚刚出炉的MapEX,迫不及待的吸取了一波文章精华,顺便分享给大家。MapEX的核心是利用历史存储的地图信息,优化当前局部高精地图的构建,历史地图可以是只有一些简单的地图元素(例如道路边界)、也可是是带噪声的地图(比如每个地图元素偏移5m)、也可以是旧的地图(例如只有一小部分地图元素能与当前场景对齐)。显而易见,这些历史的地图信息对当下的局部高精地图构建都是有用的,因此也引出了本文的核心,即如何使用???具体来说,MapEX基于MapTRv2构建,这些历史地图信息可以编码为一系列的query和原始的query拼接起来,进一步由解码器输出预测结果。文章还是非常有意思的~

论文整体概览

传感器的在线高精地图(HDMap)估计为传统手动获取HDMap提供了一种低成本的替代方案。因此,它有望降低已经依赖HDMap的自动驾驶系统的成本,甚至有可能将其应用于新系统。

本文建议通过考虑现有地图来改进在线HDMap估计。主要确定了三种合理类型的现有地图(简单地图、带噪和老的地图)。此外本文还介绍了MapEX,这是一个新的在线HDMap构建框架,用于感知现有的地图。MapEX通过将地图元素编码为query,并通过改进用于训练经典的基于查询的地图估计模型的匹配算法来实现这一点。

文章最后展示了MapEX对nuScenes数据集的显著改进。例如,MapEX(给定有噪声的地图)比MapTRv2检测提高了38%,比当前的SOTA提高了16%。

f21e66fcf95d16a1107506c6e856cd42.jpeg

总结来说,MapEX的主要贡献如下:

  • 根据传感器数据估计在线HDMaps时考虑现有地图信息;

  • 讨论了现有地图不完整的合理情况。我们还为nuScenes数据集提供了这些场景的实际实现和代码;

  • 介绍了MapEX,这是一种新的基于query的HDMap获取方案,在从传感器估计在线HDMap时,可以结合地图信息。特别是在MapEX中引入了一种将现有地图信息与现有(EX)查询结合起来的新方法,以及一种通过在训练过程中将预测预先归因于GT来帮助模型学习利用这些信息的方法。

在线局部高精地图构建工作回顾

我们在这里提供了一些关于自动驾驶中HDMaps的简要概述。首先讨论HDMap在轨迹预测中的应用,然后再讨论它们的获取。最后讨论在线HDMap构建本身。

用于轨迹预测的HDMaps:自动驾驶通常需要大量关于车辆导航世界的信息。这些信息通常嵌入到丰富的HDMaps中,作为修改神经网络的输入。HDMaps已被证明对轨迹预测的性能至关重要。特别是在轨迹预测中,一些方法明确地基于HDMap的表示,因此绝对需要访问HDMap。

HDMap获取和维护:传统HDMap的获取和维护成本高昂。虽然预测中使用的HDMaps只是一个简化版本,包含地图元素(车道分隔符、道路边界等),并在完整的HDMaps中提供了许多复杂信息,但它们仍然需要非常精确的测量。因此,许多公司一直在朝着不那么严格的中清晰度地图(MDMaps)标准发展,甚至朝着卫星导航地图(谷歌地图、SDMaps)发展。至关重要的是,具有几米精度的MDMap将是现有地图的一个很好的例子,为在线HDMap生成过程提供有价值的信息。我们的地图场景2a探讨了这种情况的近似情况。

传感器的在线HDMap构建:因此在线HDMap构建已成为轻图/无图感知的核心。虽然一些工作侧重于预测虚拟地图元素,即车道中心线,但也有一些工作侧重于更具视觉识别性的地图元素:车道分隔符、道路边界和人行横道。可能是因为视觉元素更容易被传感器检测到,后一种方案在过去一年中取得了快速进展。有趣的是,最新的这种方法—Map-TRv2确实为检测实际车道中心线提供了一个辅助设置。这表明向更复杂的方案收敛,包括大量额外的地图元素(红绿灯等)。

本文的工作与通常研究的变化检测问题相似,这些问题旨在检测地图中的变化(例如交叉点)。MapEX的目标是在现有的(可能非常不同的)地图的帮助下生成准确的在线HDMap,这是为当下在线HDMap构建问题而实现的。因此,我们不仅纠正了地图中的小错误,而且提出了一个更具表现力的框架,以适应任何变化(例如扭曲的线条、非常嘈杂的元素)。

3022f9925d14ce9650536bc54364df8d.jpeg

我们可以使用什么样的现有地图?

我们的核心主张是,利用现有地图将有利于在线HDMaps构建。我们认为,在许多合理的情况下,不完美的地图可能会出现。

在线HDMap表示

我们采用了传感器在线生成HDMaps的标准格式:我们认为HDMaps由3种类型的多段线、道路边界、车道分隔带和人行横道组成,颜色分别与之前的绿色、石灰色和蓝色相同,如图2a所示。

虽然真正的HDMaps要复杂得多,并且已经提出了更复杂的表示,但这项工作的目的是研究如何解释现有的地图信息。因此,我们使用研究最多的范式。本文的工作将直接适用于更多地图元素、更细的polylines或栅格化目标的预测。

MapModEX:模拟不完美的地图

由于为标准地图采集既昂贵又耗时,我们从现有的HDMaps中综合生成了不精确的地图。

为此我们开发了MapModEX,一个独立的地图修改库。它获取nuScenes地图文件和样本记录,并为每个样本输出ego车辆周围给定补丁中的人行道、边界和人行横道的多段线坐标。重要的是,MapModEX提供了修改这些多段线以反映各种修改的能力:删除地图元素、添加、移动人行横道、向点坐标添加噪波、地图移动、地图旋转和地图扭曲。MapModEX将在发布后提供,以便于进一步重新搜索,将现有地图纳入传感器的在线HDMap采集中。

我们使用MapModEX包实现了三个具有挑战性的场景,如下所述,为每个样本生成场景2和3的10个变体(场景1只允许一个变体)。我们选择使用一组固定的修改地图,以降低训练期间的成本,并反映可能只有有限数量的地图变体可用的真实情况。

场景1:只有边界可用

第一种情况是只有一个粗糙的HDMap(没有分隔带和人行横道)可用,如图2b所示。道路边界通常与3D物理地标(如人行道边缘)相关,而人行道和人行横道通常由更容易错过的平面标记表示。此外,人行横道和车道分隔带通常因建筑工程或道路偏差而被丢弃,甚至部分被轮胎轨道隐藏。

因此,使用只有边界的HDMaps是合理的。这样做的好处是,只需要求标注道路约束,就可以降低标注的成本。此外,只定位道路边界可能需要较少的精确设备和更新。实施从实际的角度来看,场景1的实施很简单:我们从可用的HDMaps中删除了分隔带和人行横道。

场景2:带噪地图

第二种可能的情况是,我们只有非常嘈杂的地图,如图2c所示。现有HDMaps的一个弱点是需要高精度(大约几厘米),这给它们的获取和维护带来了巨大的压力[11]。事实上,HDMaps和新兴的MDMaps标准之间的一个关键区别在于较低的精度(几厘米和几米)。

因此,我们建议使用嘈杂的HDMaps来模拟不太精确的地图可能是由于更便宜的获取过程或改用MDMaps标准而导致的情况。更有趣的是,这些不太精确的地图可以从传感器数据中自动获得。尽管像MapTRv2这样的方法已经达到了非常令人印象深刻的性能,但它们还不是完全精确的:即使有非常灵活的检索阈值,预测的精度也远低于80%。

实现:我们提出了这些有噪声的HDMaps的两种可能的实现方式,以反映我们可能缺乏精度的各种条件。在第一个场景2a中,我们提出了一个偏移噪声设置,其中对于每个地图元素定位,我们添加来自高斯分布的噪声,其标准偏差为1米。这具有对每个地图元素(分隔符、边界、人行横道)应用统一平移的效果。这样的设置应该很好地近似于人工标注从嘈杂数据中快速提供不精确标注的情况。我们选择了1米的标准偏差来反映精确到几米的MDMaps标准。

然后,我们用一个极具挑战性的逐点噪声场景2b来测试我们的方法:对于每个地面实况点——记住,一个地图元素由20个这样的点组成——我们从标准偏差为5米的高斯分布中采样噪声,并将其添加到点坐标中。这提供了地图自动获取或提供非常不精确定位的情况的最坏情况近似。

场景3:地图发生了实质性变化

我们考虑的最后一种情况是,我们可以访问过去准确的旧地图(见图2d)。人行横道等油漆标记不时发生位移是相当常见的。此外,城市对一些有问题的十字路口进行实质性改造或翻新区域,以适应新景点带来的交通量增加。

因此,使用HDMaps是很有趣的,它们本身是有效的,但在很大程度上与实际的HDMaps不同。当HDMaps只由维护人员每隔几年更新一次以降低成本时,这些地图应该经常出现。在这种情况下,现有地图仍将提供一些关于世界的信息,但可能不会反映暂时或最近的变化。

实现:我们通过在场景3a中对现有HDMaps进行强有力的更改来近似这一点。我们删除了地图中50%的人行横道和车道分隔线,添加了一些人行横道(剩余人行横道的一半),最后对地图应用了一个小的扭曲变形。

然而,重要的是要注意,随着时间的推移,全球地图的很大一部分将保持不变。在我们的场景3b中,我们对此进行了计数,其中我们研究了随机选择(概率p=0.5)来考虑真实HDMap而不是扰动版本的影响。

MapEX:利用现有地图

为此我们提出了MapEX(见图3),这是一种在线HDMap构建的新框架。它遵循标准的基于查询的在线HDMap构建范式,并通过两个关键模块处理现有地图信息:地图查询编码模块和预测及GT的预归因方案。本文基于MapTRv2搭建baseline。

7b3dddacd7d9b8e8d3dfb6bb4bab5c65.jpeg

概览

基于查询的核心通过图3中的灰色元素显示。它首先获取传感器输入(相机或激光雷达),并将其编码为鸟瞰图(BEV)表示,作为传感器特征。使用类似DETR的检测方案来检测地图元素(最多N个)来获得地图本身。这是通过将N×L个学习的查询令牌(N是检测到的元素的最大数量,L是为元素预测的点数)传递到Transformer解码器中来实现的,该Transformer解码器使用与BEV特征的交叉注意力将传感器信息馈送到查询令牌。然后,通过线性层将解编码的查询与类预测(包括额外的背景类)一起转换为地图元素坐标,使得L个查询组表示地图元素的L个点(本文中L=20)。训练是通过使用匈牙利算法的一些变体匹配预测地图元素和GT地图元素来完成的。一旦匹配,使用回归(对于坐标)和分类(对于元素类别)损失,对模型进行优化,以使预测的地图元素与其响应的GT相匹配。

但是这个框架无法解释现有的地图,这需要在两个关键级别引入新的模块。在查询级别,我们将地图元素编码为不可学习的EX查询。在匹配级别,我们预先将查询属性为它们所代表的GT地图元素。

完整的MapEX框架(如图3所示)将现有的地图元素转换为不可学习的地图查询,并添加可学习的查询,以达到一定数量的查询N×L。然后,将这组完整的查询传递给Transformer解码器,并像往常一样通过线性层转换为预测。在训练时,我们的归因模型将一些预测与GT进行预匹配,其余预测使用匈牙利匹配进行正常匹配。在测试时,解码的非背景查询产生HDMap表示。

将地图转换为EX查询

目前的在线HDMap构建框架中没有机制来解释现有的地图信息。因此,我们需要设计一个新的方案,可以将现有的地图翻译成标准的基于查询的在线HDMap构建框架可以理解的形式。我们使用MapEX提出了一种简单的方法,将现有的地图元素编码为解码器的EX查询,如图4所示。

150bc48080159f839d8e35257bab191e.jpeg

对于给定的地图元素,我们提取L个等距点,其中L是我们为任何地图元素寻求预测的点的数量。对于每个点,我们制作一个EX查询,该查询在前2个维度中编码其地图坐标(x,y),在接下来的3个维度中对地图元素类(分隔符、交叉点或边界)进行一次性编码。EX查询的其余部分用0填充,以达到解码器架构使用的标准查询大小。

虽然这种查询设计非常简单,但它提供了直接编码感兴趣的信息(点坐标和元素类)和最大限度地减少与已学习查询的冲突的关键好处(得益于丰富的0填充)。

一旦我们有了L个查询的集合(对于现有地图中的地图元素),可以从标准可学习查询池中检索()个L个分类可学习查询集合。然后,按照本文的方法,将生成的N×L个查询提供给解码器:在MapTR中,N×L查询被视为独立查询,而MapTRv2使用更有效的解耦注意力方案,将同一地图元素的查询分组在一起。在从查询中预测地图元素后,可以直接在测试时使用,也可以将它们与训练的GT相匹配。

地图元素归属

虽然EX查询引入了一种解释现有地图信息的方法,但没有什么能确保模型正确使用这些查询来估计相应的元素。事实上,如果单独使用,网络甚至无法识别完全准确的EX查询。因此,我们在训练中使用传统的匈牙利匹配之前引入了预测和GT元素的预归因,如图3所示。

简单地说,我们跟踪修改后的地图中的每个地图元素,它们对应于哪个GT地图元素:如果地图元素未修改、偏移或扭曲,我们可以将其与真实地图中的原始地图元素联系起来。为了确保模型学会只使用有用的信息,我们只在修改后的地图元素和真实地图元素之间的平均逐点位移得分时保持匹配:

4157913475022663b944745d0bdb3abc.jpeg

给定GT和预先预测的地图元素之间的对应关系,我们可以从要匹配的元素池中移除预先归因的地图元素。然后,按照惯例,使用匈牙利算法的一些变体来匹配剩余的地图元素(预测和GT)。因此,匈牙利匹配步骤只需要识别哪些EX查询对应于不存在的添加地图元素,并找到适合真实地图中不存在的一些真实地图元素的标准学习查询(由于删除或强烈扰动)。

减少匈牙利算法必须处理的元素数量很重要,因为即使是最有效的变体也具有立方复杂度()[8]。这并不是目前大多数在线HDMap获取方法的主要弱点,因为预测的地图很小(30m×60m),并且只预测了三种类型的地图元素。然而,随着在线地图生成的进一步发展,随着预测地图变得更大和更完整,有必要容纳越来越多的地图元素。

实验结果

设置:我们在nuScenes数据集上评估了MapEX框架,因为它是在线HDMap估计的标准评估数据集。我们基于MapTRv2框架和官方代码库。按照通常的做法,我们报告了三种地图元素类型(divider, boundary, crossing)在不同检索阈值(0.5米、1.0米和1.5米的倒角距离)下的平均精度,以及三个类别的mAP。

对于每个实验,使用三个固定的随机种子进行3次实验。重要的是,对于给定的种子和地图场景组合,在验证期间提供的现有地图数据是固定的,以便于比较。为了保持一致性,我们将结果报告为平均值±标准差,即使标准偏差超过该精度,也可以精确到小数点。

MapEX的性能

我们在表2中提供了相关方法的比较,以及MapEX的性能:没有lane divider或人行横道的地图(S1)、有噪声的地图(S2a用于偏移的地图元素,S2b用于强逐点噪声)和大幅度变化的地图(S3a仅包含这些地图,S3b包含混合的真实地图)。我们将MapEX的性能与现有在线HDMap在可比设置(相机输入、CNN主干)上的评估进行了详尽的比较,并与当前最先进的技术(使用了更多的资源)进行了比较。

023b6faab9eb3a4cc0557644158e0786.jpeg

首先,从表2中可以清楚地看出,任何类型的现有地图信息都会使MapEX在可比设置方面显著优于现有文献,而不考虑所考虑的场景。在除一种情况外的所有情况下,现有的地图信息甚至允许MapEX比当前最先进的MapTRv2模型执行得更好,该模型使用在广泛的深度估计数据集上预训练的大型ViT主干在四倍多的时期内训练。即使是具有不精确地图元素定位的相当保守的S2a场景也会得到11.4mAP分数的提高(即16%)。

在所有场景中,我们都观察到在所有4个指标上对基本MapTRv2模型的一致改进。可以理解,场景3b(一半时间使用准确的现有地图)在很大程度上产生了最佳的整体性能,从而展示了识别和利用完全准确的现有图的强大能力。场景2a(具有偏移的地图元素)和场景3a(具有“过时”的地图元素”)都提供了非常强大的整体性能,所有三种类型的地图元素都具有良好的性能。场景1中只有道路边界可用,由于其(预期的)非常强大的边界检索,显示出巨大的mAP收益。即使在极具挑战性的场景2b中,将标准偏差为5米的高斯噪声应用于每个地图元素点,也会在基本模型上获得显著的增益,并且对分隔符和边界具有特别好的检索性能。

MapEX带来的改进

我们现在更具体地关注现有地图信息给MapEX带来的改进。作为参考,我们将MapEX增益与其他附加信息来源带来的增益进行了比较:具有全局学习特征图的Neural Map Prior、卫星地图,以及使用地理本地化SDMaps的P-MapNet。重要的是,MapModEX依赖于比这些方法更强的基础模型。虽然这使得在基础模型的基础上更难改进,但也更容易获得高分。为了避免拥有不公平的优势,表3中提供了绝对得分。

我们从表3中看到,使用MapEX的任何类型的现有地图都会导致比任何其他额外信息来源(包括更复杂的P-MapNet设置)更大的整体mAP增益。我们观察到该模型在车道分隔器和道路边界上的检测性能都有很大的改进。一个轻微的例子是场景1(只能访问道路边界),其中模型成功地保留了边界上的地图信息,但只在没有先前信息的两个地图元素上提供了与以前方法相当的改进。人行横道似乎需要从现有地图中获得更精确的信息,因为场景1和场景2b(对每个地图点施加极具破坏性的噪声)只能提供与现有技术相当的改进。场景2a(元素发生了变化)和场景3a(地图“过时”)导致人行横道的检测得分很高,这可能是因为这两个场景包含了更精确的人行横街信息。

cea7670ff252248f5875268dcdacc19c.jpeg

消融实验

MapEX输入的贡献

表4显示了不同类型的输入(现有地图、地图元素对应关系和传感器输入)如何影响MapEX。现有地图大大提高了性能。

e4fa099ec03e9eda152a01db4d8722ac.jpeg
关于EX查询编码

表5显示,学习后的EX查询比我们简单的不可学习的EX查询执行得差得多。有趣的是,用不可学习的值初始化可学习的EX查询可能会带来非常小的改进,无法证明增加的复杂性是合理的。

edd1a9b9a047b14162eabbdec4f38a69.jpeg
On ground truth attribution

由于预先确定地图元素的属性对于充分使用现有地图信息很重要,因此可能很容易对所有相应的地图元素进行预先确定属性,而不是像在MapEX中那样对其进行过滤。表6显示,当现有地图元素差异太大时,丢弃对应关系确实会比不加区分的归因带来更强的性能。本质上,这表明当现有地图元素与基本事实相差太大时,MapEX最好使用可学习的查询,而不是EX查询。

c3ad3c003bf5840b24a8bef586d677ac.jpeg

讨论

本文建议利用现有地图来改进在线HDMap构建。为了研究这一点,作者概述了现有(简单地图、带噪或过时)地图可用的三种现实场景,并引入了一个新的MapEX框架来利用这些地图。由于当前框架中没有考虑现有地图的机制,我们开发了两个新模块:一个将地图元素编码到EX查询中,另一个确保模型利用这些查询。

实验结果表明,现有地图代表了在线HDMap构建的关键信息,无论在何种情况下,MapEX都显著改进了可比较的方法。事实上,就mAP而言——具有随机移动地图元素的场景2a——在基本MapTRv2模型的基础上改进了38%,在当前最先进的基础上提高了16%。

我们希望这项工作将引导新的在线HDMap构建方法来解释现有信息。现有的地图,无论好坏,都可以广泛使用。忽略它们就是放弃了在搜索可靠的在线HDMap构建时的一个关键工具。

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

64f9827570211b67efad08c1dd1b42cc.jpeg 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

a42db77bcd88e3a902aba3f7a7d9780a.jpeg

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

eb3694b8aa6764addb6bcc965b5588cc.jpeg

④【自动驾驶之心】平台矩阵,欢迎联系我们!

d1e1419f15b19d15c9a3a1fbc2632555.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值