[论文笔记] CSFCN

news2025/1/17 6:08:57

摘要

上下文建模或多级特征融合方法已被证明可以有效提高语义分割性能。 然而,它们并不是专门处理像素上下文不匹配和空间特征不对齐的问题,并且高计算复杂度阻碍了它们在实时场景中的广泛应用。

在这项工作中,我们提出了一种轻量级的上下文和空间特征校准网络(CSFCN),以通过基于池化和基于采样的注意力机制来解决上述问题。

CSFCN包含两个核心模块:上下文特征校准(CFC)模块和空间特征校准(SFC)模块。

CFC采用级联金字塔池化模块来有效捕获嵌套上下文,然后根据像素上下文相似度聚合每个像素的私有上下文,以实现上下文特征校准。

SFC将特征沿通道维度分割为多组子特征,并通过可学习的采样传播其中的子特征,以实现空间特征校准。

对 Cityscapes 和 CamVid 数据集的大量实验表明,我们的方法在速度和准确性之间实现了最先进的权衡。

介绍

我们观察到,上下文不匹配主要来自于上下文建模中的不加区别的处理。 具体来说,用于聚合上下文的常用方法[4]、[5]、[6]为每个像素引入了非自适应上下文,忽略了它们在上下文需求方面的固有差异。 如图 2(a) 所示,对于像素 A 和 B,先前的方法在预定义区域内为它们建模与空间相关的上下文。 然而,激活的上下文区域可能太大或太小,这些不匹配的上下文将带来意想不到的不相关信息或无法提供足够的语义线索。 另一方面,特征错位主要是由重复下采样引起的,这会导致输出(例如特征或预测)和输入图像之间的空间错位。 这个问题在无参数上采样中会加剧,并引入更多的预测误差(特别是在边界处),如图2(b)所示。 考虑到空间注意力(尤其是自注意力)[16],[17]可以捕获每个像素的有益特征并抑制不相关的信息,而其昂贵的计算开销是实时方法无法承受的。 为了解决上述问题,我们提出了一种轻量级的上下文和空间特征校准网络(CSFCN),它具有两种简化的空间注意方式来匹配像素和上下文并将特征与输入对齐。 如图1所示,我们的CSFCN在满足实时性要求的同时,比其他方法实现了更高的精度。

具体来说,为了缓解上下文不匹配问题,我们提出了上下文特征校准(CFC)模块。 与以前以固定方式聚合每个像素的上下文的方法不同,CFC 对每个像素的不同上下文进行建模,即上下文特征是输入的函数,并且也因像素而异。

在这里,我们首先设计了一个级联金字塔池化模块,通过重用池化结果来有效捕获多尺度上下文。 然后,与 selfattention [16]、[18] 类似,但我们不是计算像素到像素的相似度,而是计算像素到上下文的相似度来聚合每个像素的语义相关上下文,从而实现上下文特征校准。 然而,由于池化上下文很容易偏向于具有大模式的特征,因此将它们均匀分布到每个位置将压倒小模式的表示并导致过度平滑的结果。 因此,我们进一步提出了上下文重新校准块(CRB),通过锐化大对象并保留空间细节来有条件地学习局部上下文,如图2(a)所示。

此外,我们引入了空间特征校准(SFC)模块来解决特征错位问题。 源于自注意力 [16]、[18],但 SFC 不是聚合来自所有位置的信息,而是仅从学习的采样位置收集信息,这取决于输入。 直观上,我们只需采样对当前位置预测最有利的特征并将其放置在当前位置,这在实现特征校准的同时大大减轻了计算负担。 此外,我们观察到特征图雕刻了各种语义信息(例如,物体或东西,如图2(b)所示),并且对于不同的特征图通常没有单一的最佳校准方法。 换句话说,统一校准所有特征图会削弱整体特征的区分度。 因此,为了更精细的特征校准,我们首先将通道维度分为多个子特征,然后分别进行校准,这进一步提高了性能。

创新点

1)我们引入了两种简化的自注意力模型 在实现实时分割的同时解决上下文不匹配和特征错位问题的方法。

2)我们设计了一个基于池化的上下文特征校准模块,该模块通过将像素与基于池化的上下文进行匹配来定制每个像素的上下文。

)我们设计了一个基于采样的空间特征校准模块,它对每个位置最具代表性和信息量的特征进行采样

相关工作

A. Generic Semantic Segmentation 

1) Context Modeling:  2) Feature Fusion:  3) Efficient Transformer:

B. Real-Time Semantic Segmentation

感兴趣可看

方法框架

A. Network Architecture

所提出的CSFCN的整体架构如图3所示,它采用非对称编码器-解码器架构。 具体来说,CSFCN 采用轻量级骨干网络来提取多级特征。 之后,我们设计了上下文特征校准模块来为每个像素构建私有上下文以增强其辨别力。 此外,我们使用空间特征校准模块进行空间特征校准,以产生具有精确边界的强语义特征。 不失一般性,我们采用 ImageNet [38] 中预训练的 ResNet-18 [37] 作为主干网络,其他 CNN 也可以用作我们方法中的主干网络。

B. Context Feature Calibration Module

上下文信息可以提供丰富的场景类别先验,以纠正意外的错误分类。 然而,以前的方法[4]、[5]、[6]聚合了预定义区域内的上下文,并忽略了并非所有上下文对给定像素的分类贡献相同,这不可避免地导致上下文不匹配的问题。

此外,捕获的上下文严重偏向于大对象,因为它们包含更多像素,并导致小对象的过度平滑结果。 基于上述见解,我们提出了一个上下文特征校准模块(CFC)来定制和细化每个像素的语义上下文。

通常,大型物体或物体在图像中占主导地位,全局上下文通常与它们相似,但与空间细节不同。 受这种直觉的启发,我们将上下文与每个像素进行匹配,以捕获对其分类最具指导意义的上下文。 也就是说,我们聚合来自语义更接近的区域而不是空间更接近的区域的上下文

具体来说,给定特征 X ∈ RC×H×W,我们首先处理 X 以捕获高度抽象的多尺度上下文 Z ∈ RC×M。 然后,我们计算像素上下文相似度 ɵ∈ RN×M,又名空间注意力图,其中 N = H × W 和 M 分别表示像素和上下文的总数。 我们采用 ɵ 作为指导来聚合每个 像素 的上下文,以实现上下文特征校准。 最后,我们进一步调整每个语义上下文的响应值以生成细粒度的上下文,从而实现上下文重新校准。 从数学上讲,我们的 CFC 可以定义为:

 其中 xi , yi , αi , z j ∈ RC×1 分别表示输入、输出、重新校准因子和上下文。 i的范围为[1,···,H×W],f(·)表示计算特征之间亲和度的成对函数。

模块详细信息

我们在图4中说明了我们的CFC模块。为了追求效率,我们设计了级联金字塔池化(CPP)块来重用前几层的池化结果,从而减少不必要的冗余计算。 如图 4 所示,给定特征 X ∈ RC×H×W,我们首先采用 1 × 1 卷积层生成降维特征 Q ∈ RC′×H×W,其中 C′ 远小于 C

(默认情况下,C′ = 32,C = 256)。 然后,我们使用 CPP 块来收获多尺度上下文 Z ∈ RC×M。

特别地,当池化层的输出高度n ∈ [1, 2, 3](一般情况下,输出宽度等于高度)时。默认情况下, 我们设置 n = [1, 2, 3, 6]。 由于池化层在同质空间网格(例如3×3)上进行池化,因此当输入的纵横比不为1时,这可能会导致池化特征的信息冗余。为此,我们保持纵横比为 池化输出大小等于输入。 例如,在方形裁剪上训练时,我们的最小输出大小为 1 × 1,而对于 1024 × 2048 输入,其大小将为 1 × 2。 最后,我们将 Z 输入两个卷积层(使用 BN 和 ReLU)以产生两种形式的上下文表示,即 K ∈ RC′×M 和 V ∈ RC×M。

然后,我们将 Q 重塑并转置为 RN×C′,并在 Q 和 K 之间进行矩阵乘法,并添加一个 softmax 层以产生像素上下文相似性 ɵ∈ RN×M:

其中 ɵi, j 表示第 i 个像素 Qi 和第 j 个上下文 Kj 之间的亲和度。

最后,我们在 V 和  ɵT 之间执行矩阵乘法以获得校准的语义上下文 E ∈ RC×N 并将 E 重塑为 RC×H×W。         获得校准上下文E后,我们将其发送到上下文重新校准块(CRB)以生成精炼上下文E'。 CRB采用类残差设计[37],可以表示为:

 其中 α ∈ RC×H×W 表示重新校准因子,W1 ∈ R C 4 ×C×1×1 和 W2 ∈ RC×C 4 ×3×3 表示卷积层。贴一下原文 ()

 在这里,我们选择 tanh 函数来删除冗余信息并突出显示上下文中的有益信息(例如边界和小对象)。 最后,我们对 X 和 E′ 进行逐元素求和以生成最终的。这里我们采用求和而不是串联操作来减少计算成本。

C. Spatial Feature Calibration Module

        为了弥补逐步下采样造成的空间细节损失,之前的方法 采用跨级特征融合来增强具有低级细节的高级语义特征。 给定低分辨率特征 Fℓ ∈ RCℓ×Hℓ×Wℓ 和高分辨率特征 Fℏ ∈ RCℏ×Hℏ×Wℏ ,他们首先通过标准双线性插值对 Fℓ 进行上采样,然后将 Fℏ 和上采样的 Fℓ 添加或连接以获得输出。 然而,由于空间错位和巨大的表示差距,直接融合它们仍然无法达到令人满意的性能。

        此外,由于特征图编码各种语义信息[39],沿通道维度[17]、[22]执行统一特征对齐也会损害性能。 为了缓解这些问题,我们将通道的维度分组为多个子特征以分别执行校准操作,并无缝集成门控机制以自适应地融合跨级特征。

关于特征校准,我们建议采用特征重采样来重建特征。

ps特征重采样

具体来说,假设特征图上每个位置的空间坐标为 {(1, 1) , (1, 2) , 。 。 。 , (H, W)} 学习到的 2D 偏移图为 1 ∈ R2×H×W。 我们的校准函数 T(·) 可以表示为:

   在 p = (h+11 h,w, w+12 h,w) 处采样特征来导出输出 Uh,w。 由于 p 表示任意(分数)位置,因此等式: 等式5 枚举所有积分位置并使用双线性插值核获得采样位置的特征。 直观上,如图3中SFC中的采样过程所示,我们只是采样对当前位置(蓝点)最有利的特征来替换当前位置(绿点)特征进行校准。 此外,为了更精细的校准,我们沿着通道维度将特征 F 分成 G 组,然后分别对齐每组内的特征,如图 5 所示。

由于F′ℏ通常包含丰富的空间细节,而F′ℓ包含更多语义,仅仅校准然后融合它们并不能产生令人满意的性能。 这是因为单独的特征校准无法处理特征之间巨大的代表性差异。 因此,我们进一步建议通过门控策略自适应地融合校准语义特征 F′ ℓ 和细粒度特征 F′ ℏ,弥合它们之间的表示差距:

 其中 βℓ 和 βℏ 表示门掩模。

1)模块详细信息:为了提高效率,我们将校准和融合过程集成在单个空间特征校准模块中。 如图 5 所示,给定特征 Fℓ ∈ RCℓ×Hℓ×Wℓ 和 Fℏ ∈ RCℏ×Hℏ×Wℏ ,我们首先通过两个卷积层将它们的通道统一为相同的数字 C(默认= 128)。 其次,我们采用双线性插值对 Fℓ 进行上采样。 然后,将上采样的 Fℓ 和 Fℏ 连接起来。

之后,我们将它们输入到卷积块中以预测两组偏移图 1ℓ ∈ R(2×G)×H×W 和 1ℏ ∈ R(2×G)×H×W,用于对齐两个级别的特征和两个 门掩码 βℓ, βℏ ∈ R1×H×W 用于控制两个级别的特征信息流。 最后,校准后的跨级特征进行逐元素求和以获得输出。 综上所述,我们的SFC模块可以正式写为:

 其中 U (·) 表示双线性上采样函数,Wℓ ∈ RCℓ×C′×3×3 和 Wℏ ∈ RCℏ×C×3×3 表示具有 BN 和 ReLU 的卷积层。

注意,我们采用残差思想来减轻初始阶段大偏移和掩模预测误差的负面影响,这使得我们可以将SFC插入到网络中,而不会影响其原始性能(如果卷积块被构造为零映射)。 也就是说,我们将卷积块的最后一个卷积层的权重初始化为零,以逐渐学习更准确的偏移量和掩模。 此外,我们选择对门掩模采用 1 + tanh 激活。 因此,最初,T(F, 0) 成为恒等映射,且 β = 1 + tanh(0) = 1。现在,SFC 可以表示为:

 此时,我们的SFC模块相当于[3]、[8]和[9]中的简单特征融合策略。

实验

上下文特征校准:在我们的方法中,上下文的粒度会显着影响性能,很大程度上取决于 M 的值,而 M 的值由池化层输出大小决定。 为此,我们通过改变输出大小进行了一组对比实验。

如表二所示,保持池化层输入和输出的宽高比(KAR)一致可以明显提高性能(76.96% vs. 77.59%),而无需增加来自更细粒度上下文的过多计算。 此外,我们发现性能随着上下文数量(M)的增加而增加,而当输出大小超过(1,2,3,6)时性能趋于稳定。 请注意,过于详细的划分(例如,(1,3,6,8))将导致性能下降(77.27% vs. 77.59%),可能是因为输出包含的上下文信息太少,无法提供高质量的语义线索。 最终,考虑到效率和准确性之间的折衷,我们采用(1,2,3,6)作为默认设置。

表 III 显示了各种上下文建模方法的结果。 为了公平比较,我们在相同的设置下重现所有比较的模块,并将它们统一附加到降维层(DRL,图 3 中的绿色箭头)。 如表三所示,在类似或更低的计算成本下,我们的 CFC 优于其他同行。 例如,当 FLOP 较低时,CFC 达到 78.09% mIoU,比 AlignCM [22] (77.26%) 高 0.83 个百分点。 特别是,CFC 以更快的速度实现了最佳性能,超越了 PAM [16](77.56% vs. 78.09%),而我们的 FLOP 减少了 81.4%。

 空间特征校准:我们将 SFC 模块附加到没有 DRL 的主干网的 Stage4 来研究其能力。 请注意,如果我们将 SFC 放在 DRL 之后(如 CFC),其计算量和性能将会下降。 表IV列出了不同设置的实验结果。 我们可以看到,进行分组校准可以明显提高性能。 例如,当使用 1 + tanh 激活时,设置 G = 2 的性能比 G = 1(即,无分组)高出 0.97%(77.15% vs. 78.12%),并且仅产生很小的额外计算负担(6.73G vs. 6.80) G)。 同时,1+tanh 也取得了比 sigmoid 更好的性能(77.37% vs. 78.12%),这可能是因为其优越的初始性能。 此外,不同的分组数也会带来不同的性能提升。 最后,考虑到性能和效率之间的权衡,我们选择 G = 2 和 1 + tanh 激活作为默认设置。

此外,我们还将SFC与其类似方法进行了比较。 表V给出了结果,其中“校准”和“融合”表示SFC仅执行特征校准或门控融合。 为了公平比较,我们还在相同的设置下重现了所有比较的模块。 据观察,直接校正预测输出的iGUM[42]很难获得高精度。 此外,FAM [17]和AlignFA [22]对齐不同级别的特征并直接混合多级别特征,忽略了不同级别特征和子特征之间的差异,导致性能较差(76.21%和75.25%mIoU) 。 同时,采用注意力特征融合的iAFF[43]取得了相对优越的性能(77.22%)。 相比之下,我们的SFC不仅校准了每组多级特征中的子特征,而且采用加权融合策略来弥合它们之间的表示差距,从而获得更领先的性能(78.12% mIoU和70.02 FPS)。

与最先进的比较:我们首先在 Cityscapes 测试数据集上展示各种方法的详细每类结果,以研究 CSFCN 的优越性。 如表七所示,我们的 CSFCN 在大多数类别(例如“道路”、“卡车”和“自行车”)上都达到了最佳 mIoU,这明显优于现有的实时方法(例如 ENet [27]、CGNet [44] ]和PCNet [11])。 尽管如此,与通常采用大扩张主干网(例如,DUC [23])的面向精度的方法(例如,DUC [23])相比,CSFCN 仍然难以处理空间细节相关的类别(例如,“交通灯”和“交通标志”)。 ,ResNet-101 [37])来提取高分辨率特征。 然而,我们的方法也可以实现可比的性能,并且在整体准确率方面优于它(78.7% vs. 77.6%)。 此外,采用MobileNetV3-L作为Backbone的CSFCN也以更少的计算量(21.7G FLOPs)实现了更好的精度(75.1%)。

我们进一步在 Cityscapes 测试集上将 CSFCN 与 SOTA 实时网络进行比较。 特别是,我们在网络名称后面附加 50、75 和 100,分别表示输入大小 512 × 1024、768 × 1536 和 1024 × 2048。 如表八所示,我们的 CSFCN 实现了最佳的速度与准确度权衡,并且以相对较大的优势优于其他竞争对手。 具体而言,CSFCN-100 以更快的速度实现了 78.7% mIoU 的最佳准确率,比 SFANet [12]、MGSeg [1]、HyperSeg [48] 和 BiSeNetV2-L† [33] 分别提高了 0.6%、0.9%、2.9 分别为 % 和 3.4%。 与此同时,我们的 CSFCN-50 在类似的推理速度下比 STDC1-Seg50† [36] 提高了 1.9% mIoU。 特别是,我们的 CSFCN-75 在相同主干网 (ResNet-18) 和相似的 FLOPs (55.3G vs. 56.2G) 下也大幅优于 BiSeNet2 [32] (2.5%)。 特别是,虽然深度卷积可以显着减少计算量(意味着更少的FLOP),但由于内存访问成本或其他原因,其实际推理速度往往低于标准卷积[50]。 因此,与 FBSNet [31] 或 SFANet [12] 等方法不同,我们仅使用标准卷积来获得更快的速度(70.0 FPS)。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8.第二阶段x86游戏实战2-实现瞬移

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

【C++11 —— 包装器】

C11 —— 包装器 包装器function包装器function包装器介绍function包装器统一类型function包装器的意义 bind包装器bind包装器介绍bind包装器绑定固定参数bind包装器调整传参顺序bind包装器的意义 包装器 function包装器 function包装器介绍 function包装器 也叫作适配器。C…

【Go】使用Goland创建第一个Go项目

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

go-zero的快速实战(完整)

微服务框架 go-zero 的基本介绍 go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero 中的 api,rpc,数据库等涉及的代码,都可以给我们一键生成&#…

计算机毕业设计 自习室座位预约系统的设计与实现 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

RTC、ADC

RTC RTC(Real-Time Clock)是实时时钟模块,用于跟踪实际时间(年、月、日、时、分、秒),即使在系统断电或处于低功耗模式下也能保持时间的准确性。 特点 时间和日期跟踪低功耗模式支持可编程闹钟和定时器备…

贪心算法day31|56. 合并区间、738. 单调递增的数字(整数与字符串的转换)、贪心刷题总结

贪心算法day31|56. 合并区间、738. 单调递增的数字、贪心刷题总结 56. 合并区间738. 单调递增的数字贪心刷题总结 56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 …

大模型微调 - 自动加载预训练模型

大模型微调 - 自动加载预训练模型 flyfish AutoModelFor 是 Hugging Face transformers 库中的一个通用接口,这里用的是modelscope ,用于自动加载预训练模型,涵盖多种任务的模型。AutoModelFor 后面接不同的任务名称会对应不同的模型架构&a…

基于 CycleGAN 对抗网络的自定义数据集训练

目录 生成对抗网络(GAN) CycleGAN模型训练 训练数据生成 下载开源项目CycleGAN 配置训练环境 开始训练 模型测试 可视化结果 生成对抗网络(GAN) 首先介绍一下什么是GAN网络,它是由生成器(Generator…

工具、环境等其他小问题归纳

此篇文章内容会不定期更新,仅作为学习过程中的笔记记录 一、查询Windows 10环境下python版本与安装路径 若电脑成功安装了python环境,不小心忘了版本。 I、查询版本 1、cmd窗口快捷查询 Win R 输入cmd 进入窗口; 直接输入 python --version …

2024.9.13 系统运维

学习目标:了解 云计算运维 “云计算是中国的骄傲!” 企业向云服务商租用云服务(省钱、省心、省力) 云计算:公有云、私有云(大公司,数据隐私性)、混合云(私有云跑重要…

前端刷新进不了登录页面

报错props.ts:15 Uncaught (in promise) SyntaxError: Unexpected token 错误截图: 原因:谷歌浏览器版本过低,升级浏览器 比如这边版本就过低了

ThinkCMF框架任意内容包含漏洞的讲解

本文来自无问社区,更多网安资料可前往查看http://www.wwlib.cn 背景描述 ThinkCMF是一款基于PHPMYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。 ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可…

CSP 2023 提高级第一轮单项选择题解析

CSP 2023 提高级第一轮单项选择题解析 第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11题第12题第13题第14题第15题 第1题 在 Linux 系统终端中,以下哪个命令用于创建一个新的目录?(B) A.newdir B.mkdir C.create D.mkfold 解析:记…

部署Tomcat和抓包

部署Tomcat 复制文件到桌面 查看自己是否有java环境,下图所示是有的,若没有需另行下载 解压tomcat文件 tar -xzvf apache-tomcat-7.0.96.tar.gz 下列为tomcat文件的几个重要文件 进入到bin文件中 启动tomcat ./startup.sh 可以先用本机查看是否启动…

【PostgreSQL里的restartpoint重启点】

不知道大家有没有关注过,配置文件里archive_cleanup_command参数的注释部分有着这么一句"command to execute at every restartpoint",意思是在每个restartpoint时执行的命令。 提起checkpoint大家可能比较熟悉,对于这个restartpoint&#xff…

英文软件汉化中文软件教程asi exe dll 等汉化教程

相信大家在使用国际软件的时候,会经常碰到英文类型的软件 或者玩一些游戏使用一些工具,也基本都是外网的,那么对于用户来讲 就会非常的不方便! 小编为大家整理了一些国内大佬出的的英文软件汉化中文软件的视频教程 教程分为EX…

HarmonyOS开发实战( Beta5.0)滑动视频自动播放案例实践

鸿蒙HarmonyOS开发往期文章必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 介绍 本示例主要介绍视频列表滑动到屏幕中间自动播放场景&…

[项目] -登录框

前言 各位师傅大家好,我是qmx_07,今天来给大家讲解登录框的小练习,就此SDK的相关学习就此结束 登录框 对话框绘制 通过添加DIaLog对话框,添加 static test文本、Edit Control输入框、Button按钮,制作登录框passwor…

快速入门编写一个Java程序

一、jdk配置 下载完jdk后需要配置环境变量 以下是其步骤 1、我的电脑-属性-高级系统设置-环境变量 2、在系统变量中新建JAVA_HOME环境变量,指向jdk的安装目录 3、编辑path环境变量,新建%JAVA_HOME%\bin 4、打开Dos命令行,任意目录下敲入j…