【新型密集采样网络:遥感超分】

news2024/9/24 6:01:19

Remote Sensing Image Super-Resolution Using Novel Dense-Sampling Networks

(基于新型密集采样网络的遥感图像超分辨率)

超分辨率技术在提高遥感数据的空间分辨率、克服星载成像系统的物理限制等方面发挥着重要作用。基于卷积神经网络(CNN)的方法虽然取得了很好的性能,但在处理大规模超分辨任务时表现出有限的能力。遥感数据空间分布的复杂性进一步增加了重建的难度。为了探索遥感影像的大尺度超分辨率重建问题,本文提出了一种稠密采样超分辨率网络(DSSR)。具体而言,提出了一种密集采样机制,重用一个升尺度器对多个低维特征进行升采样,使网络在重构时能够联合考虑多个层次的先验信息.为了增强网络的表示能力,引入了一种融合了宽激活和宽注意机制的宽特征注意块(WAB)。此外,提出了链式训练策略,通过借用预先训练好的小规模模型的知识,进一步优化大规模模型的性能。

介绍

超分辨率(SR)重建是遥感领域的一个重要研究方向。它的目标是通过从低分辨率(LR)观测数据中重建高频信息来提高图像分辨率。一般而言,星载成像系统的空间分辨率不可避免地受到轨道高度、重访周期和瞬时视场等因素的限制。这与照相机等普通成像设备有很大不同。因此,一旦卫星发射,SR是进一步提高空间分辨率的最有效的后处理技术。

Convolutional Neural Network-Based Single-Image Super-Resolution

针对图像超分辨率,人们提出了基于插值的方法、基于重构的方法、基于学习的方法,其中基于卷积神经网络(CNN)的单幅图像超分辨率(SISR)已成为主流。根据上采样方式的不同,我们将基于神经网络的SISR方法大致分为两类:早期上采样方法和后期上采样方法。
早期的上采样方法首先使用双三次插值作为上采样算子来将LR图像输入放大以匹配期望的输出大小。超分辨率卷积神经网络(SRCNN)作为一项开创性工作,仅使用卷积层就实现了超分辨率图像。它成功地证明了CNN可以用于学习LR空间和高分辨率(HR)空间之间的端到端映射,并实现了良好的重建性能。然而,它所采用的三层结构依赖于小图像区域的上下文,并且具有有限的表示能力。为了克服这些缺点,Kim等人[8]提出了一种非常深的卷积网络(VDSR),其多次级联小滤波器以实现利用分布在大图像区域上的上下文信息并提高重构能力。然而,简单地添加权重层引入了大量的参数,因此,可能出现过拟合。因此,他们进一步提出了深度递归卷积网络(DRCN)。通过重复使用相同的卷积层,DRCN在不引入额外参数的情况下实现了改进的超分辨性能。类似地,Tai等人后来分别基于使用递归连接的卷积层和递归链接的单元提出了深度递归残差网络(DRRN)和持久记忆网络(MemNet)。尽管相对于SRCNN取得了显著的改进,但他们采用的早期上采样设计被证明是次优的。具体地,在网络的第一层之前或第一层处的插值操作不能带来任何可用的先验信息,并且经常导致可见的重建伪影。此外,为了处理更大尺寸的输入,网络必须在高维特征空间上计算,产生比在LR空间上工作 r 2 r^2 r2倍的计算预算(r指示超分辨因子,即,放大因子)。这种低效率的设计很快被后期上采样方案所取代。
后期上采样方法仅在网络末端将分辨率从低维空间投影到高维空间。这允许网络通过LR空间中的非线性卷积直接执行特征提取。反卷积层和有效子像素卷积层是用于在后期上采样网络中恢复分辨率的普遍选择。快速超分辨率卷积神经网络(FSRCNN)是SRCNN的重新设计版本,首次尝试在网络末端使用反卷积层来聚合和上采样先前学习的特征。其后期上采样结构实现了比SRCNN更高效的重建。最近的其他工作,如SRDenseNet 和信息蒸馏网络(IDN)也选择反卷积层作为其后期上采样算子。高效子像素卷积层首次出现在高效子像素卷积神经网络(ESPCN)中。其核心思想是学习一系列放大滤波器,以便直接从LR特征图生成HR图像,每个特征图使用一个放大滤波器。与去卷积层相比,子像素卷积层引入较少的棋盘状伪像,并且在训练时产生非常小的附加计算成本。ESPCN的工作对后续的研究具有启发作用。Lim等人使用子像素卷积作为后上采样器,优化了He等人的ResNet架构,并证明了表示宽度对于SR网络具有重要意义。尽管他们获得了优异的超分辨性能,但他们使用的特征信息极其有限。为了促进卷积层之间的信息和梯度的传播,级联残差网络(CARN)在其后期上采样结构中构造有效的残差块和级联连接。多尺度残差网络(MSRN)提出了多尺度残差块,并将所有块的输出级联以充分利用分层特征。虽然CARN和MSRN在多个层面上考虑了先验信息,但他们忽略了这些信息之间的差异。对所有特征信息一视同仁,在一定程度上降低了网络的区分学习能力。Choi和Kim 随后提出了一种非线性选择单元来控制重建以区分信息的使用。此外,注意机制可以将可用的处理资源导向信息量最大的特征,通过与后期上采样网络耦合,有效地优化了超分辨过程。在CVPR 2019上发表的最新作品,如常微分方程启发的超分辨率网络(OISR)和自然和现实的超分辨率网络(NatSR),也采用了基于子像素卷积的后期上采样结构。
对于为遥感图像SR设计的网络,类似于早期上采样设计。其他工作,例如局部-全局组合网络、耦合-鉴别生成对抗网络、深度记忆连接网络和多尺度残差神经网络(MRNN)选择通过在网络末端使用一个或多个卷积层来增加分辨率。对于最近的后期上采样网络,高效的子像素卷积是学习上缩放操作的最流行的选择。例如,由Dong等人开发的多知觉注意网络(MPSR)采用子像素卷积作为其多知觉学习框架中的后期升级器。残差密集反投影网络修改了Haris等人提出的交互式上采样和下采样方案,利用子像素卷积也执行后期上采样。其他模型,如基于残差信道注意力的网络、深度蒸馏递归网络和密集残差生成对抗网络都是基于子像素卷积的设计。

Large-Scale Super-Resolution of Remote Sensing Images

从上面的讨论可以看出,早期上采样和后期上采样方法都在一个步骤中提高了分辨率。当在大比例因子下处理重建任务时(例如,×4,尤其是×8),它们表现出有限的容量。为此,拉普拉斯金字塔超分辨率网络(LapSRN)提出了渐进上采样机制。LapSRN通过使用拉普拉斯金字塔结构中的多个转置卷积,渐进地生成具有不同尺度的多个高维中间预测。实际上,LapSRN是三个标度特定的单次上采样网络的堆栈,其依赖于极其有限的LR特性。
在遥感图像的舰船检测、分类等应用中,大幅提高图像分辨率具有重要意义。一般来说,一个舰船目标在一幅图像中只覆盖几个像元,不同类型的舰船具有较小的类间差异。利用较大的上采样率提高图像分辨率可以提高检测和分类的精度。然而,遥感图像SR社区的大多数研究集中在小尺度因子上,如×2、×3和×4。很少有工作试图解决大尺度放大因子下的重建问题。在极端上采样条件下(例如,r = 8),由于LR空间中可用的先验有限,准确预测局部细节变得具有挑战性。另一方面,遥感图像通常具有高度复杂的空间分布,并且缺少高频成分。在重建时,需要恢复大量的缺失信息。这使得遥感图像在大的上采样因子下实现超分辨率更加困难。在超分辨过程中,研究人员总是试图尽可能多地保留特征先验信息。
包括MemNet、SRDenseNet和CARN在内的方法在不同卷积层之间引入了各种跳过连接以重用信息。MSRN、MRNN和MPSR试图学习存在于图像模式中的多级特征表示。事实上,由于他们采用的单一上采样方案,对最终重建做出真实的贡献的上尺度特征仍然有限。如何解决更好的大规模重建以及上采样方式是否可以进一步有助于重建仍有待探索。
从优化上采样方式提高重构性能的思路出发,研究了一种新的稠密采样超分辨率网络(DSSR),用于探索遥感图像的大尺度超分辨率重构。

贡献

1)提出了一种简洁的超分辨模型–DSSR,该模型在高采样率下仍具有较强的重建能力。
2)提出了一种基于子像素卷积的稠密采样机制,该机制重用升尺度器对多水平先验数据进行升采样,并使网络能够联合利用不同类型的高维信息进行重构。
3)为了充分利用宽激活和注意机制的有效性,增强网络的表征能力,构建了宽特征注意块(WAB)。
4)提出了一种链式训练策略,通过借用预先训练好的小规模模型的知识来优化大规模模型的性能。

方法

Network Architecture

请添加图片描述
如图1所示,所提出的DSSR采用密集上采样框架。它可以进一步分为三个部分:初始特征提取、深度特征提取和重建。设Conv(nc,k,nf)为卷积层,其中nc、k和nf分别为滤波器通道数、核大小和滤波器数。nc = nf在本文的其余部分中使用。对于输入图像 I L R I^{LR} ILR,Conv(3,3,nf)被用于提取初始特征F0。初始特征提取fIF(·)运算可表示为在这里插入图片描述
然后将F0发送到由G个残差组组成的深度特征提取部分。每个组进一步包含G个WAB。设fRGg(·)是第g个群的函数,我们有
请添加图片描述
其中Fg对应于第g组的输出特征。在不同的水平上提取先验知识,包括F0,F1,…和FG被传送到重构部分。
重构部分fREC(·)由因子特定的上定标器fUP(·|r)和Conv(nc,3,3)组成在这里插入图片描述
其中r是放大因子(r = 2、4、8)。 I S R I^{SR} ISR表示超分离结果。 W ( n c , 3 , 3 ) W^{(nc,3,3)} W(nc,3,3)是大小为nc ×3×3的三个滤波器的权重矩阵。在提出dense-sampling框架中,最初的特性和中间特性都投射到高维空间通过重用一个高档。这使网络有效地利用多个先验当执行重建。
最后,整个超分辨过程可以定义为在这里插入图片描述
其中fDSSR(·)表示DSSR实现的端到端映射。注意,由于在RGB空间中进行实验,所以第一卷积层的nc值是3,并且最后卷积层的nf值是3。

Wide Feature Attention Block

请添加图片描述
图2(a)所示的WAB是拟议DSSR的基本构件。WAB使用不同空间大小的卷积来在激活之前加宽特征。具体来说,在图2(a)中,ReLU 之前的卷积层由大小为nc× 3 × 3的α · nf滤波器组成。ReLU之后的卷积层包含nf个大小为(α · nc)× 3 × 3的滤波器。
设Fg,b−1为WABg,b(第g个剩余群中的第b个WAB)的输入,则有
在这里插入图片描述
其中Xg,B是包含n f个特征图的中间特征。σ(·)= max(0,x)代表ReLU激活。显然,特征映射的数量在激活前从nc扩大到α ·nf,而在激活后又减少到nf。改变α的值实现了加宽特征的灵活性,以增强网络的表示能力,而不引入额外的参数。
在这里插入图片描述

然后,引入CA 来提高判别学习能力。如图2(b)所示,CA的机理可简单描述为
在这里插入图片描述
其中X’g,b是Xg,b的重新标度版本。 X g , b X^{g,b} Xg,b1,…, X g , b X^{g,b} Xg,bnf是Xg,b的特征映射。 s g , b s^{g,b} sg,b1,…, X g , b X^{g,b} Xg,bnc是sg,b的元素,sg,b是用于重新缩放Xg,b的nc维信道统计量(nc = nf)。sg,b定义为在这里插入图片描述
它通过执行几个操作获得,包括平均全局合并fGP(·)、通道降尺度fD(·)= Conv(nc,1,nf/η)、ReLU激活σ(·)、通道放大fU(·)= Conv(nc/η,1,nf)、和sigmoid 门控 fsigmoid(·),在Xg,b上(η设置为16)。这样的统计量可以作为描述符的集合,其统计量有助于表达Xg,b的特征图之间的差异,并允许WABg,b对其接收到的特征图产生不同的关注。
在数学上,WABg,b的运算可以表示为在这里插入图片描述

Residual Learning Design

B WAB进一步构成残差组,G个残差组构成网络的深层特征提取部分。这种设计得益于局部残差学习,允许我们建立一个深度网络来建模高度复杂的映射。
请添加图片描述
ResGroupg的结构(即,第g个剩余组)在图3中示出。这里,我们将WABg,b的函数简化为fWABg,b(·)。等式(8)等价于
在这里插入图片描述
然后,ResGroupg的操作可以公式化为
在这里插入图片描述
如图3所示,局部残差连接将特征Fg−1从浅部转移到深部。因此,残差群只能预测其输入Fg−1和输出Fg之间的残差。这种有效的残差学习设计有助于克服消失梯度,并简化深度网络的训练。此外,这种模块化设计使得所提出的密集采样机制能够灵活地利用在不同级别学习的特征。

Dense-Sampling Mechanism

大多数现有的超分辨模型采用单个上采样方案。这使得它们依赖于有限的特征信息,增加了大规模重建的难度,因为大规模重建往往对低维空间的先验知识有着巨大的需求。在超分辨网络中,在不同深度学习的特征包含不同类型的先验知识,并且在预测高频分量时贡献不同的重要性。然而,随着网络的加深,在网络的浅部学习到的特征被随后的卷积层卷积,并且不能直接参与最终的重构。针对这一问题,提出了一种新的密集采样机制,以更好地利用多层次特征。该算法重用一个尺度提升器将多个先验信息投影到高维空间,并使这些提高了分辨率的信息共同贡献于最终的重建。请添加图片描述

如图4所示,在不同级别学习的先验,包括初始特征F0和来自G个残差组的输出特征(即,F1,…FG)都被馈送到上定标器在这里插入图片描述
移除连接到上分频器的跳跃连接,网络变为标准的单次延迟上采样设计。我们将DSSR的这种单次上采样版本表示为DSSR-S。这种情况下,上分频器的输出可定义为:
在这里插入图片描述
这种单次上采样结构使得DSSR-S只能依靠极其有限的信息进行重构。与此相反,由于充分利用了多层次信息,所提出的密集采样机制使得网络能够高效地对复杂的LR-HR映射进行建模,有效地优化了大规模模型的超分辨性能。升阶器fUP(·|r)如图5(a)所示。对于因子r,它由ngroup = l o g r log^r logr2个卷积群组成。一组进一步包含一个正常卷积和一个有效的子像素卷积(也称为像素混洗)。请添加图片描述
对于包含nc个特征图的输入特征,如图5(b)所示,反向卷积Conv(nc,3, r 2 r^2 r2 ·nf)将特征图的数量增加到 r 2 r^2 r2 ·nf。亚像素卷积PixelShuffle(r )将H × W ×(r2 · nf)LR特征张量的元素重新排列为大小为(r · H)×(r · W)× nf的HR特征张量。我们选择一个包含Conv(nc,3, 2 2 2^2 22 · nf)和PixelShuffle(2)的卷积群作为基本的上尺度算子。因此,×2上定标器fUP(·|2)、×4上定标器fUP(·|4)和×8上定标器fUP(·|8)分别由 l o g 2 log^2 log22 = 1、 l o g 4 log^4 log42 = 2和 l o g 8 log^8 log82= 3个卷积组组成。

Chain Training Strategy

良好的训练策略有助于提高模型性能。一些研究者用预先训练好的×2模型初始化了×3和×4模型的权重。这种预训练策略使× 3和×4模型比从头随机训练的模型收敛更快,性能更好。为了进一步优化大规模模型的超分辨性能,本文提出了一种新的链式训练策略。提出的训练策略使用链式转移从预先训练的小规模模型借用知识。具体而言,上采样因子×2的DSSR从头开始训练。基于预先训练的×2模型训练因子×4的DSSR。在×4 DSSR的基础上训练出×8 DSSR。通过这种方式,×4 DSSR从预先训练的×2模型中借用知识。×8型DSSR可以通过链式迁移从×2模型和×4模型中借用知识。

Loss Function

在训练DSSR时,需要最小化训练样本之间的损失,以获得最优的网络参数集。最小化L2损失通常是优选的,以最大化峰值信噪比(PSNR)。实际上,由于L2损失未能捕获HR补片的潜在多峰分布(即,相同的LR面片可以映射到多个HR面片),超分辨率图像通常被过度平滑并且与图像上的人类视觉感知不耦合。我们选择优化L1损耗,因为它提供了更好的收敛性。给定训练集{ I L R I^{LR} ILRi I H R I^{HR} IHRi }n i=1,其包含n个HR图像{ I H R I^{HR} IHRi }n i=1和对应的LR版本{ I L R I^{LR} ILRi}n i=1,我们有在这里插入图片描述
其中θ表示DSSR的最优参数集,它包含了所有的权矩阵。该参数集允许DSSR重建图像 I S R I^{SR} ISR = fDSSR I L R I^{LR} ILRi ;θ),其与地面实况图像 I H R I^{HR} IHR最相似。

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

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

相关文章

可视化技术第一节课

主要内容通过echarts实现在网页上显示图表实现不同类型图表的转换实际操作&#xff08;1&#xff09;安装echarts如果想要安装echarts可以参考&#xff1a;安装步骤当然我们可以直接在我们的代码里面添加连接直接引用<script src"http://cdn.bootcss.com/echarts/4.8.0…

buu [BJDCTF2020]rsa_output 1 SameMod 1

[BJDCTF2020]rsa_output 1&#xff1a; 题目描述&#xff1a; {210583393373542878475341075446136053050154410905089240941988166912191033995268001128024163830889952539088574602667269256158268953033778016148293640346244751958599979431463055883159391307774504851…

2.27日报

情报上传接口添加字段&#xff1a;问题分配 调试手机号登录接口 解决困惑已久的bug&#xff1a;解析不到token; 问题描述&#xff1a; 在局域网下&#xff0c;前端页面请求时在请求头里携带token信息&#xff0c;后台获取不到header里的token参数&#xff0c;但是使用postma…

阶段八:服务框架高级(第六章:ElasticSearch3)

阶段八&#xff1a;服务框架高级&#xff08;第六章&#xff1a;ElasticSearch3&#xff09;Day-第六章&#xff1a;ElasticSearch分布式搜索引擎30.学习目标1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法&#xff08;桶聚合&#xff09;1.2.2.聚合结果排序1.2…

软件测试面试题 —— 整理与解析(2)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;&#x1f30e;【Austin_zhai】&#x1f30f; &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

python学生信息管理系统

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python学生信息 免费获取完整源码源文件配置教程说明等 在IDLE中运行《学生信息管理系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;有两种方…

SpringBoot2入门 第一个HelloWorld(参考尚硅谷SpringBoot2零基础入门教程)

文章目录0 官方文档1 系统要求2 maven设置3 HelloWorld3.0 需求3.1 创建Maven工程3.2 引入依赖3.3 创建主程序3.4 编写业务3.5 测试3.6 简化配置3.7 简化部署0 官方文档 https://docs.spring.io/spring-boot/docs/2.3.4.RELEASE/reference/html/index.html 1 系统要求 想要运…

RFS自动化测试工具安装与使用总结

一&#xff0c;调试 1&#xff0c;在调试时&#xff0c;总时提示“无法打开浏览器” 解决办法&#xff1a; 1&#xff0c;把浏览器的代理关闭 2&#xff0c;把浏览器的显示比例调到100% 3&#xff0c;在IE设置的安全选项中&#xff0c;把启用保护模式开启 4&#xff0c;去除进…

layui框架学习(12:进度条)

进度条是应用系统中的常见元素&#xff0c;无论是上传文件、下载文件、加载内容时都会显示进度条&#xff0c;Layui支持设置线条形进度条的样式&#xff0c;同时支持通过element模块动态操作进度条。   进度条样式分为两级结构&#xff0c;顶层一般为div元素&#xff0c;其cl…

【Opencv项目实战】背景替换:动态背景移除与替换(cvzone)

文章目录一、项目思路二、环境布置2.1、cvzone安装2.2、MediaPipe安装2.3、常见问题2.4、注意事项三、算法详解3.1、segmentor.removeBG()&#xff1a;去除背景&#xff08;抠出图像中的人&#xff09;3.2、cvzone.stackImages()&#xff1a;堆叠图像3.3、fpsReader.update()&a…

Hot Chocolate 构建 GraphQL .Net Core 服务

Hot Chocolate 是 .NET 平台下的一个开源组件库, 您可以使用它创建 GraphQL 服务, 它消除了构建成熟的 GraphQL 服务的复杂性, Hot Chocolate 可以连接任何服务或数据源&#xff0c;并创建一个有凝聚力的服务&#xff0c;为您的消费者提供统一的 API。 我会在 .NET 应用中使用…

mysql一两种索引方式hash和btree

1. Hash索引&#xff1a; Hash 索引结构的特殊性&#xff0c;其检索效率非常高&#xff0c;索引的检索可以一次定位&#xff0c;不像B-Tree 索引需要从根节点到枝节点&#xff0c;最后才能访问到页节点这样多次的IO访问&#xff0c;所以 Hash 索引的查询效率要远高于 B-Tree 索…

FFmpeg 编译和集成

背景FFmpeg 是一款知名的开源音视频处理软件&#xff0c;它提供了丰富而友好的接口支持开发者进行二次开发。FFmpeg 读作 “ef ef em peg” &#xff0c;其中的 “FF” 指的是 “Fast Forward”&#xff0c;“mpeg” 则是 “Moving Picture Experts Group” &#xff08;动态图…

隧道代理的工作原理是什么,为何爬虫使用起来更高效?

在网络爬虫领域&#xff0c;使用HTTP代理是非常普遍的一种技术手段。而隧道代理则是HTTP代理中的一种&#xff0c;它是指将请求通过隧道传输到代理服务器上&#xff0c;并由代理服务器向目标服务器发送请求&#xff0c;从而达到隐藏真实IP的目的。那么&#xff0c;隧道HTTP代理…

告别空指针让代码变优雅,Optional使用图文例子源码解读

一、前言 我们在开发中最常见的异常就是NullPointerException&#xff0c;防不胜防啊&#xff0c;相信大家肯定被坑过&#xff01; 这种基本出现在获取数据库信息中、三方接口&#xff0c;获取的对象为空&#xff0c;再去get出现&#xff01; 解决方案当然简单&#xff0c;只…

华为OD机试模拟题 用 C++ 实现 - 最优资源分配(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明最优资源分配题目输入输出描述备注示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注

2023 Java 分布式 面试 大纲

前段时间 &#xff0c;公司部门的HR找到我&#xff0c;说来了几份简历 &#xff0c;都是三年所有的开发 让我面一下&#xff0c; HR那边 一面核对了基本的信息 二面技术&#xff0c;是由我来接手&#xff0c;然后问了 一些分布式的问题 &#xff0c;大部分都是在围绕着SpringCl…

这回稳了!电力巡检低功耗摄像头全新来袭

最近的狂飙成为大家的话题&#xff0c;互联网的发展让很多信息都很透明&#xff0c;这个也是我比较喜欢和各位技术大咖一起分享一些当下比较前沿的解决方案 春回大地&#xff0c;疫情远去&#xff0c;我们也没有理由逃避不去努力&#xff0c;在互相网的各种平台去获取各种自己需…

安全配置检查的必要性?以及检查流程

随着行业信息化建设的不断深入&#xff0c;生产、业务支撑系统的网络结构越来越复杂&#xff0c;由此带来的各种应用和服务器的数量及种类也日益增多&#xff0c;一旦发生维护人员错误操作&#xff0c;或者采用一成不变的初始系统设置&#xff0c;就可能会带来安全隐患&#xf…

〖大前端 - 基础入门三大核心篇②〗- 前端开发工具和环境准备

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…