语义分割任务中的Transformer

SETR——Rethinking系列工作,展示使用纯transformer在语义分割任务上是可行的,但需要很强的训练技巧 自[ 36 ]的开创性工作以来,现有的语义分割模型主要是**基于全卷积网络( FCN )的模型。**一个标准的FCN分割模型具有编码器-解码器结构: 编码器用于特征表示学习,而解码器用于特征表示的像素级分类。[ 36 ]Jonathan Long, Evan Shelhamer, and Trevor Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. 1, 2, 3, 6 FCN针对在非约束场景图像 阅读详情

语义分割中的Transformer

Transformer 在语义分割中的使用主要有两种方式:

  • patch-based Transoformer
  • query-based Transformer

1 Patch-based Transformer

Transformer最初应用于NLP领域,在NLP中称每个单词为token,而在CV中就是将图像切割成不重叠的Patch序列(其实就是token)。Patch-basedTransformer实际上是模仿NLP任务,将语义分割任务视为了一个Seq2Seq的问题。
自FCN(全卷积网络)之后,语义分割模型大多数都是基于带有Encoder-Decoder结构的FCN进行设计:Encoder用于特征表示学习,Decoder用于对特征表示进行像素级分类。核心是Encoder部分:其由大量卷积层堆叠而成,在堆叠过程中考虑到计算量,会逐渐降低feature maps的空间分辨率,同时增大了后续像素点的感受野,也因此使得Encoder可以学到更为抽象的特征表示。这种设计有两个优点:
①平移等变性:给定一对空间点( i , j) ,相应的卷积权重w_i-j只关心二者的相对偏移,即i − j,而不是 i 或 j 的具体数值。这可以在有限的数据集上提升模型的泛化能力。
②局部性:通过参数共享降低了模型复杂度。
然而,CNNs难以学习长距离依赖关系,而这种关系对语义分割至关重要。
相较于传统CNN 需要很多的 decoder 堆叠来扩大感受野,进而得到高层特征,patch-based Transformer 是对全局特征的建模,将输入图像看成一个 Patch 序列,然后输入 encoder 中,自始至终保持了全局语义依赖,有效提升了分割任务的效果。
很多工作开始研究将 patch-based Transformer 和不同的Decoder进行结合。

1.1 SETR

SETR 使用 Transformer encoder 完全替代 CNN backbone,舍弃了卷积和下采样过程,将分割任务作为序列-序列的预测任务。与现有基于FCN的模型利用空洞卷积和注意力模块来增大感受野的方式不同,SETR使用transformer作为encoder,在encoder的每层中都进行全局上下文建模,完美去掉了对FCN中卷积的依赖。设计了三种不同复杂度的Decoder解决语义分割问题,来对自注意力进行深入研究:①朴素上采样 (Naive) ②渐进上采样 (PUP) ③多级特征融合 (MLA)。

但是,SETR完全采用ViT-large作为encoder有以下几个缺点:
(1) ViT-large 参数和计算量非常大,有300M+参数,这对于移动端模型是无法承受的;
(2) ViT的结构不太适合做语义分割,因为ViT是柱状结构,全程只能输出固定分辨率的feature map, 比如1/16, 这么低的分辨率对于语义分割不太友好,尤其是对轮廓等细节要求比较精细的场景。
(3) ViT的柱状结构意味着一旦增大输入图片或者缩小patch大小,计算量都会成平方级提高,对显存的负担非常大。
(4) 位置编码,ViT 用的是固定分辨率的positional embedding, 但是语义分割在测试的时候往往图片的分辨率不是固定的,这时要么对positional embedding做双线性插值,这会损害性能;要么做固定分辨率的滑动窗口测试,这样效率很低而且很不灵活。

1.2 Segformer

Segformer 使用一系列简单和有效的方法来提升 Transformer 在语义分割的效果。
重新设计了Transformer encoder:(1)对patch设计成有重叠的,保证局部连续性。(2)使用Mix FFN替代Position Embeding,解决固定分辨率的positional embeding在测试时效率低且不够灵活的问题
设计轻量级的 decoder(只包含4层 MLP):decoder的计算量和参数量可以非常非常小,从而使得整个方法运行的非常高效。

2 Query-Based Transformer

self-attention是Transformer中很关键的部分:利用输入样本自身的关系构建注意力模型。self-attention中有三个非常重要的元素:Query、Key和Value。query、key & value 的概念其实来源于推荐系统。基本原理是:给定一个 query,计算query 与 key 的相关性,然后根据query 与 key 的相关性去找到最合适的 Value。在Self-Attention 中,这里 key 和 value 都是输入序列本身的一个变换,但是 self-attention 不是为了 query 去找 value,而是根据当前 query 获取 value 的加权和。这是 self-attention 的任务使然,想要为当前输入找到一个更好的加权输出,该输出要包含所有可见的输入序列信息,而注意力就是通过权重来控制。

Query embeding是从图像输入逐渐学习的一组临时语义表示,与patch embeding不同,Query可以更“公平”地整合来自特征的信息,并自然地与集合预测损失相结合以进行后处理消除。

Query-Based Transformer可分为两个类别:

  • 由检测和分割任务驱动(称为Object Queries)
  • 仅由分割任务来驱动(称为Mask Embeddings)
    在这里插入图片描述

2.1 Transformer with Object Queries

  • 基于 DETR 在检测任务上预训练,再针对分割任务进行微调(图a):Panoptic DETR
  • 不使用多阶段串行训练方式,并行进行检测和分割任务。常见于端到端的网络(图b):Cell-DETR & VisTR
  • 混合级联网络 ,根据检测器预测的粗略区域,生成细粒度掩码,以实现精准分割(图c):QueryInst

2.2 Transformer with Mask Embeddings

一系列基于query的Transformer直接预测掩码。不同于object query,mask embeding仅由分割任务监督。如图(d)所示,两个不相交的query集并行用于不同的任务,并将box学习视为辅助损失以进一步提升预测结果准确性(ISTR、SOLQ)。对于语义分割和无框实例分割,一系列基于query的transformer直接预测掩码,而不需要box分支的帮助,如图(e)所示(Max-DeepLab、Segmenter)。
与传统的在像素级预测掩码的语义分割方法不同,Maskformer将语义分割任务重新定义为掩码预测问题,并将此输出格式启用到基于Query的Transformer。与MaxDeepLab不同,Maskformer利用了一个简单的Transformer解码器,没有多余的连接,以及一个用于重叠二进制掩码选择的sigmoid激活。它不仅在大类语义分割数据集上优于目前的每像素分类SOTA,并且还在全景分割任务中刷新了SOTA。

3. 思考

1. Transformer模型如何跨越语言和视觉的鸿沟

Transformer最初是为机器翻译任务设计的。句子中的每个单词都可以看作高级语义信息的基本单位,这些词可以嵌入到地位向量空间的表示中。对于视觉任务,图像中的像素不能携带语义信息,所以在视觉任务中使用Transformer的关键是建立图像到向量的转换,并有效地保持图像的特征。
例如,ViT将图像的低维信息直接转换为patch embeding,而CoAtNet使用卷积来提取高维特征并减少了冗余。

2. Transformer,自注意力和卷积神经网络之间的关系

从CNN的角度来看,其归纳偏置主要表现为局部性、平移不变性、权重共享、稀疏连接等。这种简单的卷积核可以在低层语义处理中有效地执行模板匹配,但由于过度偏置,其上界低于Transformers。(“归纳偏置”可理解为贝叶斯学习中的先验概率)
从自注意力机制的角度来看,当采用足够数量的头时,它们理论上可以表达任何卷积层。这种全注意力操作可以结合局部级别和全局级别的注意力,并根据特征关系动态生成注意力权重。但是,由于精度低,计算成本高,它的实用性比 SOTA CNN 低。
从Transformer的角度看,当在没有残差连接或FFN的深层训练时,自注意力层表现出对“令牌均匀性(token uniformity)”很强的归纳偏置。得出的结论是,**Transformer 由两个关键组件组成:一个 self-attention 层聚合了 token 的关系,一个 position-wise FFN(前馈神经网络) 提取了输入的特征。**尽管 Transformer 具有强大的全局建模能力,但是卷积可以有效处理低级特征,增强 Transformer 的局部性,并通过填充附加位置特征。

3. 针对性的Encoder和Decoder

(1)对于语义分割,特征提取非常重要,Transformer已经在分类上证明了比CNN更强大的特征提取能力。但是分类和分割还是有一定的GAP, 因此如何设计对分割友好的更好的Transformer结构,还可以继续研究。

(2)有了很好的特征,decoder该如何设计才能进一步提高性能?
在CNN encoder中相对复杂的decoder很重要且很有意义。但是,在Segformer中仅用了一个很简单的MLP decoder就取得了不错的效果,为什么呢?
有效感受野:在卷积计算时,实际有效的感受野区域。一般而言,特征点有效感受野要小于实际感受野。其有效性,类高斯分布向边缘递减,且不同的激活函数对有效感受野影响不同。
**对于语义分割来说最重要的问题就是如何增大感受野。**之前无数的工作也都是在研究这方面。首先对于CNN encoder来说,有效感受野是比较小且局部的,所以需要一些decoder 的设计来增大有效感受野,比如ASPP (Atrous Spatial Pyramid Pooling, 空洞空间卷积池化金字塔)利用了不同大小的空洞卷积来实现这一目的。
但是对于Transformer encoder来说,由于 self-attention有效感受野变得非常大,因此decoder 不需要更多操作来提高感受野。但是较大的感受野需要非常多的计算量,这就限制了它的应用范围。因此,未来如何针对性的设计更好的decoder也比较值得探索。

4. 下一步计划

  • 通过阅读相关论文进一步理解query-based
  • 代码复现patch-based和query-based经典模型,从细节上深入理解
  • 追踪Transformer在伪装目标语义分割中的应用。比较在伪装目标上进行语义分割时与通用目标分割的异同
整理:4篇论文如何利用Transformer技术突破语义分割极限 与传统方法使用类别级可学习查询不同,本方法使用特征作为查询,具体来说,FeedFormer通过解码高层特征(查询)与最低层特征(键)进行关联,从而增强了高层特征中缺失的结构信息。基于U-Net在捕捉和传递分层特征方面的优势,我们的方法独特地利用了来自Transformer编码器的横向连接作为查询特征,提升了语义分割的效率和效果。3.MetaSeg在效率、准确性和鲁棒性方面优于现有的最先进方法,并且在三个具有挑战性的语义分割数据集和一个医学图像分割数据集上取得了优秀的表现,展示了其在不同领域的适用性。 阅读详情

相关推荐

从CNN到Transformer:PyTorch遥感影像多任务实战指南(地物分类、目标检测与语义分割)

本文详细介绍了从CNN到Transformer在PyTorch框架下的遥感影像多任务处理实战指南,涵盖地物分类、目标检测与语义分割三大核心任务。通过对比传统CNN与Transformer模型的优劣,结合代码示例展示混合模型搭建、数据预处理及训练技巧,帮助开发者高效解决遥感影像处理中的实际问题,提升模型性能与部署效率。

weixin_29046611的博客 282

Transformer前沿——语义分割

Transformer在语义分割领域的发展

qq_42096890的博客 1万+

为什么SegFormer能在语义分割任务中超越Swin Transformer?技术细节全解析

本文深入解析了SegFormer在语义分割任务中超越Swin Transformer的技术细节。其核心在于编码器采用高效自注意力、重叠式块嵌入和混合前馈网络,在保持全局建模能力的同时大幅提升计算效率,并结合轻量级全MLP解码器,实现了精度与推理速度的双重优势。

weixin_29081163的博客 434

计算机视觉算法——基于Transformer的语义分割(SETR / Segmenter / SegFormer)

基于Transformer的语义分割方法

weixin_44580210的博客 1万+

【深度学习】Transformer在语义分割上的应用探索

【深度学习】Transformer在语义分割上的应用探索 文章目录 1 Segmenter 2 Swin-Unet:Unet形状的纯Transformer的医学图像分割 3 复旦大学提出SETR:基于Transformer的语义分割 4 Cell-DETR:基于Transformer的细胞实例分割网络 5 总结 1 Segmenter 图像分割在单个图像patches级别通常是ambiguous,需要上下文信息才能达成标签共识。 在本文中,我们介绍了Segmenter,这是一种用于语义分割的Transfo

NJU phd 在读。 2829

别再乱调NvM_WriteBlock了!手把手教你搞懂Autosar NVM状态机与读写时序

本文深入解析Autosar NVM状态机与读写时序,帮助开发者避免常见错误。通过详细的状态机解读、最佳实践代码示例和异常处理策略,提升嵌入式系统中数据存储的可靠性。特别针对NvM_WriteBlock的调用逻辑和状态机机制进行实战讲解,解决工程师在实际开发中遇到的异步写入问题。

weixin_33701617的博客 344

第一章 SegFormer(语义分割篇)——SegFormer: 简单高效的基于Transformer的语义分割设计

我们提出了SegFormer,这是一个简单、高效且强大的语义分割框架,它将Transformer与轻量级多层感知机(MLP)解码器结合在一起。SegFormer具有两个吸引人的特点:1)SegFormer包含一个新颖的层次结构的Transformer编码器,它输出多尺度特征。它不需要位置编码,从而避免了位置编码的插值问题,当测试分辨率与训练不同时,导致性能下降。2)SegFormer避免了复杂的解码器。提出的MLP解码器从不同层级聚合信息,从而结合了局部注意力和全局注意力,以生成强大的表示。

ADICDFHL的博客 5万+

XTDrone——无人机基于2D激光Lidar进行二维运动规划(细节提醒以及相关报错解决)

本文介绍了在Ubuntu 20.04系统无人机基于ROS Noetic实现HectorSLAM二维激光建图与运动规划的完整流程。主要内容包括:安装必要ROS依赖库;修改HectorSLAM的launch文件,解决坐标系转换问题;配置地图发布参数以避免覆盖已建地图;启动PX4仿真环境与XTDrone通信模块;最后通过2D导航目标点实现无人机运动规划。文中详细说明了各步骤的关键配置修改,并提供了处理常见错误(如TF转换超时)的解决方案。实现了从激光SLAM建图到路径规划的过程。

weixin_45390670的博客 994

Point Transformer V3 性能实测:室内外语义分割任务的终极解决方案

Point Transformer V3(PTv3)作为CVPR 2024的官方项目,是一款在点云语义分割领域表现卓越的深度学习模型。本文将通过实测数据全面解析PTv3在室内外场景下的性能表现,展示其如何成为语义分割任务的终极解决方案。 ## 核心优势:更快、更强、更高效 ⚡ PTv3在设计上实现了三大突破,使其在众多点云处理模型中脱颖而出: ### 性能全面领先的语义分割能力 PTv3在

gitblog_01134的博客 1099

针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

SXXYNHHXX的博客 923

从S参数到SPICE模型:Cadence Sigrity Boardband SPICE完整使用指南

本文详细介绍了Cadence Sigrity Boardband SPICE工具的核心价值与完整使用流程。该工具通过矢量拟合算法,将复杂的多端口S参数文件转化为无源、紧凑且高精度的SPICE等效电路模型,从而极大提升时域仿真效率。指南涵盖了从数据导入、关键参数配置、模型精度验证到集成应用于PowerSI等系统级仿真的全步骤,是信号与电源完整性分析的必备利器。

defi6farmer的博客 432

Point Transformer V3 实战教程:ScanNet 语义分割任务全流程

Point Transformer V3(PTv3)是CVPR 2024提出的高效点云处理模型,在ScanNet语义分割任务中实现了77.6%的mIoU性能,同时推理速度较上一代提升3.3倍,内存消耗降低10.2倍。本教程将带您完成从环境配置到模型部署的全流程实战,掌握基于PTv3的点云语义分割技术。 ## 🚀 PTv3核心优势解析 PTv3在ScanNet语义分割任务中展现出三大核心优势,

gitblog_01126的博客 369

舵机操作手册

微型伺服马达原理与控制(中鸣) 1、微型伺服马达内部结构一个微型伺服马达内部包括了一个小型直流马达;一组变速齿轮组;一个反馈可调电位器;及一块电子控制板。其中,高速转动的直流马达提供了原始动力,带动变速(减速)齿轮组,使之产生高扭力的输出,齿轮组的变速比愈大,伺服马达的输出扭力也愈大,也就是说越能承受更大的重量,但转动的速度也愈低。 2、微行伺服马达的工作原理一个微型伺服马达是一个典型闭环反馈系统,其原理可由下图表示: 减速齿轮组由马达驱动,其终端(输出端)带动一个线性的比例电位器作位置检测,该电位器把

HEIMENGER的博客 3136

GeoAI遥感深度学习,遥感分类·语义分割·目标检测·变化检测四大任务,从CNN、Transformer到空间基础模型与AI Agent全流程实战

以场景分类、语义分割、目标检测、变化检测四大真实任务为主线,贯通数据组织、样本工程、模型训练、整景影像推理到GIS成果交付的完整链路,"带着数据来、带着成果走"的真实战,而非纸上谈兵的算法科普。

weixin_46747075的博客 509

别再傻傻分不清了!用Design Compiler和PrimeTime实操对比PBA与GBA模式

本文深度解析静态时序分析(STA)中Design Compiler与PrimeTime工具的PBA与GBA模式差异,通过实际案例演示两种模式在转换时间计算、时钟路径分析等方面的对比,并提供工程实践中模式选择的策略与调试技巧,帮助工程师在芯片设计流程中平衡精度与效率。

weixin_42552315的博客 414

硬件工程师提前批真题及答案解析2

我们需要考虑题目可能的简化假设,即输入电阻 Ri​ 可能是 rbe​ 和 βre​ 的组合,但题目可能简化为: Ri​≈rbe​+βre​。由于锗管的正向导通电压较小(0.2 V~0.3 V),而硅管的正向导通电压较大(0.6 V~0.7 V),因此-4.7 V的电压差不符合硅管的特性,而更接近锗管的特性。在三极管电路中,静态电位是指在无信号输入时,三极管各电极的直流电压。re​ 是动态发射极电阻,通常可以近似为 re​=IE​VT​​,但在题目中已经给出了 re​=300Ω,因此可以直接使用这个值。

XU157303764的博客 777

GeoAI遥感深度学习丨场景分类·语义分割·目标检测·变化检测四大任务,从CNN、Transformer到空间基础模型与AI Agent全流程

遥感已成为自然资源、生态环境、农业、水利、应急、林业等几乎所有自然学科的共性支撑技术,而当高分辨率卫星与无人机影像以TB级增长,"看得见的影像"与"提得出的信息"之间的鸿沟,只能靠深度学习跨越。本研修班的初衷,就是把这条断掉的路一次接通——以场景分类、语义分割、目标检测、变化检测四大真实任务为主线,贯通数据组织、样本工程、模型训练、整景影像推理到GIS成果交付的完整链路,办成一门"带着数据来、带着成果走"的真实战培训,而非纸上谈兵的算法科普。

CCfz566的博客 209

简单VASP计算INCAR设置(结构优化OPT、静态自洽SCF、能带BAND、态密度DOS)

改变 K 点、NBANDS、晶胞、ENCUT、POTCAR、自旋或 SOC 后要检查兼容性。该参数不参与物理计算,因此不会改变总能量、受力、应力或最终结构。如果研究的是金属、磁性材料、表面、二维材料、分子、缺陷、DFT+U、杂化泛函或强自旋轨道耦合体系,部分参数必须调整。适合已经用 IBRION = 2 预优化、力较小、自由度较多的结构。在 IBRION = 1、2、3 中,它只是内部缩放因子。“不能修改”不是程序禁止修改,而是修改后会改变理论模型、数值精度或能量参考,使结果不能直接比较。

weixin_51420530的博客 123

GeoAI遥感深度学习 场景分类·语义分割·目标检测·变化检测四大任务,从CNN、Transformer到空间基础模型与AI Agent全流程实战技术应用

本研修班的初衷,就是把这条断掉的路一次接通——以场景分类、语义分割、目标检测、变化检测四大真实任务为主线,贯通数据组织、样本工程、模型训练、整景影像推理到GIS成果交付的完整链路,办成一门"带着数据来、带着成果走"的真实战培训,而非纸上谈兵的算法科普。——把Agent变成你的科研助理:代码、制图、批处理、论文图表全面提效 11.1 Codex等AI Agent在遥感项目中的角色定位。遥感已成为自然资源、生态环境、农业、水利、应急、林业等几乎所有自然学科的共性支撑技术,而当高分辨率卫星与无人机影像以。

aishangyanxiu的博客 242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

语义分割系列26-VIT+SETR——Transformer结构如何在语义分割中大放异彩

SETR:《Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers》重新思考语义分割范式,使用Transformer实现语义分割。本文介绍了SETR和VIT如何在语义分割中实现,介绍了Self-Attention机制和Multi Head Self Attention机制,在Camvid数据集上做了训练和预测。提供了代码。......

yumaomi的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows论文精读(逐段解析)

【前沿论文精读】Swin Transformer是一种创新的视觉Transformer架构,通过引入移位窗口机制和分层设计解决了传统Transformer在视觉任务中的两大挑战。它将图像划分为非重叠窗口进行局部自注意力计算,通过窗口移位实现跨窗口连接,将计算复杂度从二次降为线性。分层架构通过逐层合并patch构建多尺度特征金字塔,使其适用于分类、检测和分割等任务。

weixin_46248968的博客 1981

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CVPR2022 MulT: 端到端的多任务学习transformer

CVPR2022 MulT: 端到端的多任务学习transformer,一个端到端的多任务学习transformer框架MulT,该框架可以同时学习对各高级视觉任务,包括深度估计,语义分割,reshading重着色,表面法线估计,2D关键点检测和边缘检测。

qq_35831906的博客 5999

突破语义分割瓶颈:用vit-pytorch实现多任务视觉AI系统

你是否还在为图像分类模型无法精确识别物体边界而烦恼?是否希望用一个框架同时搞定分类、分割甚至目标检测?本文将带你用vit-pytorch构建多任务视觉AI系统,重点解决语义分割难题,无需深厚的Transformer理论基础,跟着代码示例即可快速上手。 读完本文你将获得: - 用ViT(Vision Transformer,视觉转换器)实现语义分割的完整流程 - 多任务模型构建的核心参数配置方案 ...

gitblog_00663的博客 871

【深度学习】SETR:基于视觉 Transformer 的语义分割模型

VisualTransformerAuthor:louwillMachine Learning Lab 自从Transformer在视觉领域大火之后,一系列下游视觉任务应用研究也随...

fengdu78的博客 1万+

三十章:Segmenter:Transformer for Semantic Segmentation ——分割器:用于语义分割的Transformer

本工作部分得到了GENCI-IDRIS的HPC资源支持(Grant 2020-AD011011163R1),路易威登ENS人工智能讲座和法国政府在Agence Nationale de la Recherche的管理下,作为“Investissements d’avenir”计划的一部分,参考编号ANR-19-P3IA-0001(PRAIRIE 3IA Institute)的支持。

ADICDFHL的博客 2034

OneFormer:一统图像分割江湖的Transformer,多任务一次训练的秘密

OneFormer是一种基于Transformer的通用图像分割模型,旨在通过一次训练同时解决语义、实例和全景分割三大任务。其核心创新在于任务条件联合训练策略、任务动态Token和查询文本对比损失三大设计,实现了多任务的高效统一与优异性能,显著降低了模型开发与维护的复杂度,代表了视觉基础模型向通用化、高效化发展的重要方向。

weixin_29062823的博客 544
上一篇: Linux conda离线安装终极教程
下一篇: DETR的学习与分析
东方采菊
博客等级 码龄7年 381粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值