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

ADAS巨卷干货,即可获取

后台回复【LMix】获取论文!

后台回复【ECCV2022】获取ECCV2022所有自动驾驶方向论文!

后台回复【领域综述】获取自动驾驶全栈近80篇综述论文!

  • 标题:LaserMix for Semi-Supervised LiDAR Semantic Segmentation

  • 机构:新加坡南洋理工大学S-Lab

  • 论文:https://arxiv.org/abs/2207.00026

  • 主页:https://ldkong.com/LaserMix

  • 代码:https://github.com/ldkong1205/LaserMix

一句话总结

一个新颖的半监督LiDAR点云分割框架,有效地利用了LiDAR传感器和自动驾驶场景中的结构先验(spatial prior)对分割模型进行一致性约束,在主流的自动驾驶数据集(nuScenes ,SemanticKITTI ,ScribbleKITTI )上实现了优异的分割性能。


背景

得益于实时、精细且结构化的感知能力,激光雷达(LiDAR)近乎成为了自动驾驶感知模块的标配。随着学术机构和自动驾驶大厂不断推出大规模的LiDAR数据集(如KITTI , nuScenes , Waymo Open 等),利用深度学习技术对由LiDAR收集得到的点云进行感知(如分割、检测、跟踪等)已经成为当下研究的热点之一。然而,从真实世界中收集得到的数据往往具有极高的复杂度多样性;同一个街道的路况在一天中的不同时刻尚且复杂多变,更不用说不同街道甚至不同城市的街道间呈现出的变化。因此,收集并标注一个能涵盖各种情境的真实世界数据集是极其困难的。

雨天条件下的城市道路情况

以LiDAR点云分割为例,搭载于自动驾驶车(通常是车顶部)的激光雷达可以方便、迅速且相对准确地收集到实时的环绕自车(ego-vehicle)的场景信息(scene layout)。这些结构化的信息隐藏于收集到的LiDAR点云之中,由点的三维坐标 , , 以及反射强度(intensity)等特征所定义。

由LiDAR点云构成的复杂场景

和常见的图像或语音数据类似,LiDAR点云的收集(相对于标注)是较为方便的。对于一个基于学习的问题而言,昂贵的数据标注往往是制约模型泛化能力的关键因素。这样一个问题在LiDAR点云上尤为突出:一个由64线LiDAR传感器收集得到的场景点云往往包含超过10万个点 ,而给收集到的每个点云都打上语义标签(semantic label)所需要的人力和经济成本是及其巨大的。

动机

在上述前提条件的驱动下,这个工作开始探究基于半监督学习(semi-supervised learning)的LiDAR点云感知,即:在充分利用到现有的已标注数据的基础上,结合便于收集的大量无标注数据,训练泛化能力优异的模型。经典的半监督学习框架(如Mean Teacher ,MixMatch ,CPS 等)主要为图像识别等任务所设计;它们在LiDAR点云分割任务下没有展现出具有竞争力的性能。

由于LiDAR点云是从真实世界中收集而来的,其自然而然地包含了真实场景下的结构先验(spatial prior)。举例来说,一个复杂的自动驾驶场景往往包括丰富的静态(static)类别(如road,sidewalk,building,vegetation等)和动态(dynamic)类别(如car,pedestrian,cyclist等)。前者往往是构成一个场景点云的主要部分,而后者由于较小的体积(如pedestrian类,每个样例仅包含少量的点)和较低的出现频率(如motorcyclist类,仅在少量场景中出现)等因素,仅占场景中的一小部分(如下图所示)。

19种语义类别在SemanticKITTI数据集中的分布

这个工作观察到,无论是静态类别还是动态类别,都在LiDAR点云场景中表现出很强的结构先验(spatial prior)。这样一种先验可以很好地由LiDAR传感器的激光束(laser beam)所表征。以最常见的旋转型LiDAR传感器为例,其以自车为中心向周围各向同性地(isotropically)发射具有固定倾角(inclination)的激光射线。如下图中的简单例子所示,两条射线(Beam 1和Beam 2)分别按照各自预定的倾角由LiDAR传感器发出,探测并返回所捕捉的空间信息。由于不同类别本身具有特殊的分布,由激光射线探测并返回的点便能够较为精准地捕捉到这些不同类别所蕴藏的结构化信息。

旋转型LiDAR传感器以自车(ego-vehicle)为中心向周围发射具有固定倾角(inclination)的激光射线(laser beam),用以捕捉空间中不同位置上的分布信息

如下图(a)所示,对于一个自动驾驶场景(通常为涵盖[-50m, +50m]的大型场景)而言,LiDAR传感器发射出的不同激光射线准确地记录下了各个语义类别的分布情况:road类在靠近自车周围的区域中大量分布,主要由位于下部的射线所收集;vegetation类分布在远离自车的区域,主要由位于上部的具有较大正向倾角(inclination)的射线所收集;而car类主要分布在LiDAR点云场景的中部区域,主要由中间的射线所收集。

LaserMix框架概览。(a) LiDAR点云包含着很强的结构先验;环绕于自车周围的物体和背景在不同的laser beam(如上、中、下)上有着不同的分布表现。(b) 基于LaserMix的框架适用于各种流行的点云表征,如range view和voxel。(c) LaserMix在low-data和high-data条件下取得了超过各种SoTA方法的表现

基于上述发现,这个工作提出了一个简洁且高效的半监督LiDAR分割框架LaserMix。这个框架主要由以下三个部分组成

  1. 点云划分(partition)。利用所观察到LiDAR点云结构化信息,提出了按照点的倾角(inclination)将LiDAR点云划分为“低变区域”(low-variation area)的策略;

  2. 点云混合(mixing)。将划分好的LiDAR点云依照交织(intertwine)的形式进行混合;

  3. 一致性约束(consistency regularization)。鼓励模型对不同混合下的同一区域(area)作出高置信度(confident)和高一致性(consistent)的预测。

这个框架具有以下三个重要特点

  1. 通用(generic)。LaserMix直接对点进行操作,因此可以适用于绝大多数LiDAR点云表征框架,如range view , bird's eye view , raw points 和cylinder voxel ,等;

  2. 有统计依据(statistically grounded)。所提出的半监督学习框架具有理论解释,在这个工作对其进行了详尽的分析;

  3. 高效(effective)。充分的实验结果表明,LaserMix能有效提升半监督场景下的LiDAR分割性能。

方法

基于先验的半监督学习

构建结构先验

真实世界场景下的物体(object)和背景(background)与在LiDAR点云中的空间位置之间展现出了很强的相关性(correlation)。在某一特定区域内,物体和背景遵从着较为相似的“模式”(pattern);举例来说,靠近自车的近距离(close-range)区域内主要包括road类,而远离自车的远距离(long-range)区域主要由building和vegetation等类别组成。

换句话说,此处存在一个空间结构区域(spatial area) ,使得在其中的LiDAR点和其语义标签(这里定义为 和 )有着较小的可变性(low variation)。更具体地,它们的条件熵(conditional entropy) 较小。因此,在估测分割模型 的参数 时,有如下形式:

其中 为常数。与经典的熵最小化(entropy minimization)框架 类似,上述公式中的约束项(constraint)可以通过熵极大化准则(principle of entropy maximization)转化为模型参数 的先验(prior):

,

其中 为常数 所对应的拉格朗日乘数(Lagrange multiplier); 由于与模型参数 独立(independent)而被省略。上式被认为是对于结构先验(spatial prior)的正式表示(formal formulation)。

边缘化(Marginalization)

为了利用到上式中的结构先验,熵 可以由下式计算:

,

其中 表示经验估计(empirical estimation)。由于端到端的分割模型 通常使用完整尺寸的数据作为输入,因此,为了计算上式中的 ,需将在区域(area)外的部分作填充(padding)。此处用 表示区域外数据。模型的预测被转换为 ; 可以被边缘化(marginalize)为:

,

其中用作填充部分的分布 可直接从数据集本身得到。

训练(Training)

至此,分割模型 的训练可以通过标准的最大后验估计(maximum-a-posteriori,MAP)完成:

402 Payment Required

其中 ; 为监督学习下的似然函数(likelihood function),可由有标注数据 得出。最大化 要求边缘概率 具有高置信度,也即要求 对于不同的 具有高置信度(confidence)和高一致性(consistency)。

总得来说,这样一个基于结构先验(spatial prior)的半监督学习框架鼓励(encourage)分割模型对预先定义区域(pre-defined area)作出高置信度和一致性的预测。其中,预先定义区域集 决定了先验的“强度”(strength);当把 定义为整个数据(full data)时(也即整个LiDAR点云),这个框架便退化为经典的熵最小化(entropy minimization)框架 。

实现(Implementation)

上述框架的整体实现可以总结为一下三个步骤:

  1. 选取具有强先验(strong prior)的划分区域集 ;

  2. 设计可以高效计算边缘概率(marginal probability) 的方式;

  3. 最小化边缘熵(marginal entropy) 。

在本文中,作者设计就上述三个步骤设计了简洁高效的操作,将在以下内容中逐一介绍。

LaserMix中基于倾角(inclination)的点云划分示意

LiDAR点云划分与混合

划分(Partition)

LiDAR传感器通常具有固定数目的激光射线(laser beam),如常见的32线,64线和128线激光雷达。如上图所示,这些激光射线以固定的倾角(inclination)由车顶部的LiDAR传感器向周围发出。为了得到具有强先验(strong prior)的划分区域集 ,本文提出根据激光射线来划分LiDAR点云。具体地,对LiDAR点云中的点而言,它的倾角被定义为:

,

其中 为点的笛卡尔坐标。给定两个LiDAR点云 和 ,其中各点可以按照倾角划分为非重合的(non-overlapping)的组(group)。具体地,想要划分 个非重合组,我们可以设定包括 个倾角的集 ;这些倾角可以通过均分LiDAR点云分割数据集中预定的最大和最小倾角得到。由此,可以得到按照倾角范围 所划分的区域集 。

混合(Mixing)

至此,我们可以正式引出LaserMix,本文中所提出的半监督LiDAR点云分割框架,其所提出的划分策略可以很好地控制结构先验(spatial prior)的“强度”。具体地,LaserMix将前文提到的区域集 按照交织(intertwine)的形式进行混合,即:其中之一由奇数项区域 混合而得,而另一点云由偶数项区域 混合而得。这样,任意区域的相邻区域中的点都来自另一个LiDAR点云:

,,,

其中 为 在区域 中的被裁剪出来的数据;LiDAR点云的语义标签(semantic label)按照相同的方式进行划分与混合。

由于LaserMix是直接在点上进行操作的,因此可以适用于各种LiDAR点云表征。这个工作以range view和cylinder voxel这两种表征为例,探究了LaserMix的有效性。其中range view是当前最高效的LiDAR表征方式,具有直观、低内存占用和高推理速度等特点,代表工作有:RangeNet++ ,SqueezeSeg系列 和SalsaNet 等;cylinder voxel是目前分割表现最好的表征,代表工作为Cylinder3D 。

设计理念

LaserMix中对于LiDAR点云的划分与混合方式使得边缘概率(marginal probability) 的计算变得高效。对于采集自真实世界的LiDAR点云数据来说,若直接按照前一章节中所示的方式计算,需要遍历 中的所有区域和 中的所有区域外数据,也即总计需要 次预测。而从实际实现上来看,LaserMix按照交织(intertwine)的形式混合两帧LiDAR点云,确保了所有区域的相邻区域都来自域外数据;直接地,仅通过两次预测便得到了两帧LiDAR点云中所有区域 的预测结果,平均地将计算代价从 降低到了 。由于一帧LiDAR点云在混合前后作为了两个填充数据,因此 。总结来看,计算成本被从 降低到了 。在训练时,每个batch的内存占用变为了原来的两倍,而训练速度不受影响。

LaserMix框架总览

LaserMix的整体网络框架如下图所示。其共包含两个网络:一个学生网络(Student net)和一个教师网络(Teacher net)。

LaserMix框架总览

在训练时,一个batch中包含了一半有标注数据 和一半无标注数据 ;无标注数据的伪标签(pseudo-label) 可以通过预先设定的阈值(threshold) 由Teacher网络生成。

对于有标注数据,其有监督损失 为学生网络预测和标签的标准交叉熵损失(cross-entropy loss)。对于无标注数据,LaserMix按照前文所述的形式对数据和标注(ground-truth和pseudo-label)进行混合;学生网络对混合数据 进行预测,并由标注和教师网络生成的伪标签混合后的监督信号 计算混合损失(mix loss)。除此之外,LaserMix中的学生网络和教师网络之间还按照Mean Teacher 中的方式计算了一致性损失(consistency loss),其为两个网络预测之间的L2损失。总的来说,LaserMix中的损失函数由三部分组成,分别为:

  1. 有监督损失 ;

  2. 混合损失 ;

  3. 一致性损失 。

该框架的训练伪代码(pseudo-code)如下图所示。

LaserMix半监督学习框架中训练步骤的伪代码(pseudo-code)

设计理念

LaserMix中提出的这样一个半监督学习框架的目标是最小化前一章节中所述的边缘熵(marginal entropy)。和往常的伪标签优化方法仅仅鼓励预测结果的高置信度(confident)不同,最小化边缘熵要求分割网络的预测兼具高置信度(confident)和高一致性(consistent)。因此,LaserMix以有标注数据和无标注数据为“锚”(anchor),通过结构化的混合来鼓励分割网络输出和监督信号可信且一致的预测。

实验结果

实验配置

数据集

LaserMix在三个LiDAR分割数据集中进行了验证:nuScenes ,SemanticKITTI ,ScribbleKITTI 。其中,nuScenes 数据集中的LiDAR点云较为稀疏,由32线激光雷达所收集;SemanticKITTI 和ScribbleKITTI 中的LiDAR点云较密集,由64线激光雷达所收集。值得一提的是,ScribbleKITTI 采用了涂鸦(scribble)的形式对SemanticKITTI 中的点云进行了标注,其总体的语义标签仅为后者的8%左右。

LaserMix在这样三个特征各异的包含了真实世界数据的数据集上测试,验证了其方法出色的有效性和广泛的适用性

分割网络

在LiDAR点云分割模型选取方面,LaserMix采用了LiDAR点云表征中最流行的range view和voxel两种形式。其中,range view网络使用了FIDNet ;而voxel网络为Cylinder3D 。这两种分割网络各具特色:range view网络将3D的LiDAR点云投影到2D的range image表征并作为分割网络的输入,其紧凑、结构化和较小的尺寸很好地节约了内存和提高了计算速度,并取得了不错的分割性能;而cylinder voxel网络以规整的网格体素作为分割网络的输入,取得了目前最好的分割结果。

LaserMix在这两种LiDAR点云表征上都进行了验证,体现出该方法的普适性适配性

对比实验

作者将上述三个数据集(nuScenes ,SemanticKITTI ,ScribbleKITTI )按照1%,10%,20%和50%的(有标注数据)比例进行了划分,并认为其余数据均为未标注数据。具体的半监督LiDAR点云分割结果如下表所示。其中Sup.-only代表仅使用有标注数据进行训练后的结果,可以理解为该任务的下界(lower bound)。

半监督LiDAR点云分割基线结果

从表中结果可以看出,LaserMix极大地提升了半监督条件下的LiDAR分割结果。无论是在不同的数据集还是不同的LiDAR点云表征下,LaserMix的分割结果都明显地超过了Sup.-only和SoTA的半监督学习方法。

与当前的SoTA点云半监督学习方法GPC 对比(如下表左所示),LaserMix亦在多种半监督数据切分条件下取得了明显优异的性能,尤其是在极少有标注数据(如5%和10%)等场景下的提升尤为明显。

左:与SoTA的3D半监督点云分割方法的对比结果;右:LaserMix框架中的消融实验

下图所示为不同半监督学习方法的定性结果(qualitative results)。可以看出,与其他方法仅能提升自车(ego-vehicle)周围特定区域的分割性能不同,LaserMix几乎提升绝大部分区域的分割结果。其鼓励混合数据具有高置信度(confident)和高一致性(consistent)预测的理念整体而有效地提升了半监督场景下的LiDAR点云分割性能。

不同半监督学习方法的分割性能(可视化)对比

消融实验

作者将LaserMix与几种流行的混合方法进行了比较:MixUp 和CutMix 可被认为是将区域集 设定为随机点(random points)和随机区域(random areas),而CutOut 可被认为是将 设定为了“假填充”(dummy filling)。所下图(a)所示,MixUp 几乎对分割性能没有帮助(未利用到任何结构信息);CutMix 带来了一定程度的性能提升,因为LiDAR点云场景总是包含着一些场景结构,即相同的语义类别倾向于聚集(cluster),从而减小了在连续区域中的熵(entropy)。

消融实验:(a) 混合策略;(b) EMA衰减率;(c) 置信度阈值

LaserMix提供了更加明显的性能提升:由于其很好地利用了LiDAR点云场景下的结构化的先验信息(即spatial prior),其用于最小化边缘熵(marginal entropy)的区域集 使得分割网络的预测更加的可信(confident)和一致(consistent)。

上图中的(b)和(c)分别探究了LaserMix中的EMA参数了置信度阈值。可以看出,这两组参数比较依赖于数据集本身,即dataset-dependent。总体上看,较高的EMA衰减率(decay rate),如0.9 ~ 0.99,能够较好的鼓励学生网络(Student net)和教师网络(Teacher net)之间的一致性(consistency)。而对置信度阈值 来说,稍高的值,如0.9左右,能够提供较高质量的伪标签(pseudo-label);过高的阈值将减小混合(mix)带来的性能提升(因为过多的预测被设定为了ignored label),而过低的阈值可能会引入较多错误的监督信号,从而对性能提升造成损伤。具体的参数选取依旧需要在目标数据集上进行一定的调参实验才能确定。

LiDAR点云分割策略消融实验。水平方向:不同的倾角(inclination)ϕ;垂直方向:不同的方位角(azimuth)α。(i-α, j-ϕ)表示分别在方位角α和倾角ϕ上有i个和j个划分区域

有趣地,作者在上表中展示了LaserMix中的不同区域划分策略(partition strategy),其中蓝色和黄色区域分别来自不同的LiDAR点云。首先可以肯定的是,对LiDAR点云场景进行混合(mix)对分割结果带来了提升,即对比与Baseline结果,所有划分方法都或多或少地提升了分割结果。其次,按照水平方向(horizontal direction,即行方向)进行对比可以看出,随着混合变得更加精细,即倾角(inclination)ϕ的混合区域的数目增大,分割性能有着显著的提升;而按照垂直方向(vertical direction,即列方向)上进行对比,增加方位角(azimuth)α的划分次数并未带来如倾角ϕ那般明显的提升,特别地,上表第一列给出了将LiDAR点云不同视角(如第二行第一列中的前视和后视)进行混合的例子。这样一种更符合”直觉“的划分方式并未带来明显的性能提升。

的确,按照方位角α进行划分并未充分利用到LiDAR点云的结构化信息:与按照角度划分自车(ego-vehicle)周围360度范围相比,按照倾角ϕ(也即点至自车的空间距离)划分最能体现出LiDAR点云的场景信息。正如我们在开头讨论的那样,不同的语义类别(semantic class)在场景中有着独特的分布方式,如road类在靠近自车周围的区域大量分布,car类主要在中距离的区域分布,而building和vegetation等类别倾向于在远离自车的区域出现。

按照方位角α方向的划分没有充分利用到这样一种结构化信息(即所有的被划分区域中均包含了近、中、远距离上的类别),而仅仅是将自车周围不同的场景(如前视场景和后视场景)进行了拼接。这样一种策略更加接近”直觉“上的数据增强(data augmentation)。不同地,LaserMix按照倾角ϕ进行划分的策略很好地适配了LiDAR点云的场景分布,从而为前文所述的半监督学习框架构建了较优的低熵区域(low-entropy areas),整体地提升了半监督条件下的LiDAR点云分割性能。

结论与讨论

这个工作提出了一个名为LaserMix的用于半监督LiDAR点云分割的框架。该工作不仅为所提出的框架提供有统计依据(statistically grounded)的解释,还通过在不同数据集和不同LiDAR表征形式下的大量实验,进一步验证了其方法的有效性和强适用性。该工作中提出的LiDAR点云场景划分方法(即按照LiDAR传感器的倾角ϕ对点云进行划分)很好地适配了自动驾驶场景的结构化特征,为未来的LiDAR点云分割工作提供了一个有潜力的发展思路。

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

标注成本降低5倍!LaserMix:通用半监督LiDAR点云分割框架(新加坡南洋理工大学)...相关推荐

  1. 笔记:半监督的3D语义分割

    笔记:半监督的3D语义分割 半监督的意义:解决三维点云标注的时间和成本代价. 基于点云的深度学习问题 voxel-based method 需要大量的memory cost view-based me ...

  2. 推理成本降低48倍!1张GPU就能让静态图像动起来 | 格拉兹科技大学Facebook

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自打伯克利和谷歌联合打造的NeRF横空出世,江湖上静态图变动图的魔法就风靡开来. 不过,想要像这样依靠AI来简化3D动态效果的制作,算力开销 ...

  3. B.3【智能标注】:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。

    NLP专栏简介:数据增强.智能标注.意图识别算法|多分类算法.文本信息抽取.多模态信息抽取.可解释性分析.性能调优.模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强.智能标注.意图识别算法|多分 ...

  4. 点云分割训练哪家强?监督,弱监督,无监督还是半监督?

    点击进入->3D视觉工坊学习交流群 0. 笔者个人体会 近年来,自动驾驶领域的各项下游任务基本上都要求了对场景的语义理解,比如自动驾驶车辆要能够理解哪个是路面.哪个是交通灯.哪个是行人.哪个是树 ...

  5. 刚被通用收编的这家创业公司,号称能把LiDAR成本降低近100%

    李杉 编译自 TechCrunch 量子位 出品 | 公众号 QbitAI Cruise是去年被通用汽车收购的无人车创业公司,现在,他们又收购了另一家公司,名叫Strobe. Strobe是一家激光雷 ...

  6. 【半监督医学图像分割 2022 CVPR】S4CVnet 论文翻译

    文章目录 [半监督医学图像分割 2022 CVPR]S4CVnet 摘要 1. 介绍 2. 相关工作 3. 方法 3.1 CNN & ViT 3.2 特征学习模块 3.3 引导模块 3.4 目 ...

  7. 【半监督医学图像分割 2021 CVPR】CVRL 论文翻译

    文章目录 [半监督医学图像分割 2021 CVPR]CVRL 论文翻译 摘要 1. 介绍 1.1 总览 1.2 无监督对比学习 2. 实验 3. 总结 [半监督医学图像分割 2021 CVPR]CVR ...

  8. 【半监督医学图像分割 2023 CVPR】UCMT 论文翻译

    文章目录 [半监督医学图像分割 2023 CVPR]UCMT 论文翻译 摘要 1. 介绍 2. 相关工作 2.1 半监督学习 2.2 半监督分割 2.3 不确定性引导的半监督语义分割 3. 方法 3. ...

  9. 半监督目标检测相关方法总结

    作者丨kinredon@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/404160115 编辑丨极市平台 导读 本文结合相关论文介绍了一些半监督目标检测算法,即如何利 ...

最新文章

  1. 爬虫之手机APP抓包教程-亲测HTTP和HTTPS均可实现
  2. 24. Swap Nodes in Pairs
  3. python3.6安装scrapy-python3.6 安装scrapy
  4. 证明连通简单图是哈密顿图
  5. nutwk的maven中央仓库及配置
  6. ubuntu软件安装、卸载
  7. 机器闹乌龙?Amphetamine 险遭苹果下架
  8. 五大法则助你成为更出色的开发者|原力计划
  9. bzoj 1191: [HNOI2006]超级英雄Hero
  10. GridView中的格式化
  11. 水体专题图和土地利用专题图制作
  12. opencv车牌照识别
  13. 奇妙的数字-2015省赛C语言A组第三题
  14. 用台达PLC485通信控制11台英威腾变频启动停止速度设定
  15. python输入三个整数_Python求解输入三个整数排序
  16. orientation
  17. 淘宝运营 高客单价的特点、推广引流方式
  18. sqli-lab安装中遇到的报错
  19. c语言 显示一行中文 程序,关于C语言TurboC中显示汉字的问题程序如下(我已把hak16 爱问知识人...
  20. python的图形界面库wxpython的快速简单使用

热门文章

  1. python执行过程打印_Python-并发编程(进程)
  2. 禅心武意写就《少林传奇》
  3. 青少年武术入门 少林拳.pdf
  4. 找对方法,事半功倍!有目标抓重点!
  5. win10家庭版连接不上远程桌面
  6. 阿里技术人生书籍推荐
  7. Unity之OpenXR+XR Interaction Toolkit实现 传送
  8. 计算机一级text函数应用,在Excel中如何使用TEXT函数? -电脑资料
  9. 电脑USB接口无法识别到到移动硬盘问题
  10. 使用谷歌libphonenumber获取号码归属地