RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记

这篇具有很好参考价值的文章主要介绍了RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


写在前面

  又是一周,没思路调代码囧么办?当然是继续淦论文了,(┬_┬)

  • 论文地址:Beyond One-to-One: Rethinking the Referring Image Segmentation
  • 代码地址:https://github.com/toggle1995/RIS-DMMI
  • 收录于:ICCV2023
  • Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 6 千粉丝有你的参与呦~

一、Abstract

  开头指出 Referring image segmentation (RIS) 的定义。之前的方法非常依赖于假设先验:一个句子必须只描述图像中的一个目标,但这往往不适用于真实世界。因此,一些方法未能检测出没有目标或者多个目标的场景。于是本文从两个方面解决这个问题:首先提出一个 Dual Multi-Modal Interaction (DMMI) 网络,其中包含两个解码器分支:文本-图像解码器,文本 embedding 用于 query 视觉特征并定位到相应的目标;图像-文本解码器,基于视觉特征重建原始的实体-短语。再者,本文创建了一个新的数据集 Ref-ZOM,包含了不同设置下的图像-文本对。大量的实验表明本文提出的方法效果很好。

二、引言

  首先指出 Referring image segmentation (RIS) 的定义、潜力、应用,现有的挑战。

RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理
  如上图所示,大多数方法仅关注于一对一的设置,即每个句子仅指向一个目标。然而一对多和一对零的设置在真实世界中更常见,因此这些方法在面对这两种情况时不起作用。

  于是本文旨在从两方面解决这一问题,首先大多数方法设计模块来对齐多模态特征,但仅仅采用分割图的像素进行匹配,不能确保语义线索充分整合进视觉流中。结果导致视觉特征缺乏对相关表达式的全面理解,这限制了模型在面对不同场景输入时的解决能力。其次,现有的 RIS数据集都是建立在一对一的假设之上:在训练过程中,强制模型定位到一个与文本最相关的目标。这样导致模型容易过拟合,且仅仅记住去分割最大得分的一个目标。

  为解决上面这两问题,本文提出 Dual Multi-Modal Interaction Network (DMMI) 来实现不同类型的分割,同时建立一个新的数据集 Ref-ZOM (Zero/One/Many)。

RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理
  如上图所示,整体框架包含两个解码器分支,在文本-图像解码器中,语言信息注入到视觉特征中来分割相应的目标;在图像-文本解码器中,随机擦除原始句子中的实体-短语,然后提取出不完整的语言特征,之后利用 Context Clue Recovery (CCR) 模块来恢复缺失的信息。同时多模态对比学习用于辅助重建过程。此外,为了促进这两个解码器的训练,设计一个多尺度双向注意力模块 Multi-scale Bi-direction Attention (MBA) 来对齐编码器中的多模态信息。

  在 Ref-ZOM 中,建立一个新的数据集。一方面 Ref-ZOM 中的句子并不限于一对一假设,相反表达式能够指向多个目标或者无目标。此外,Ref-ZOM 中的语言风格比其它数据集中的短语更加流畅。另一方面,Ref-ZOM 超出了大多数数据集的尺寸,包含了 55078 张图像和 74942 个标注目标。

  本文贡献总结如下:

  • 当处理一对多和一对零文本输入时,现有的方法通常够呛;
  • 提出一个 Dual Multi-Modal Interaction (DMMI) 网络,使得信息能够双向流动。此外,DMMI 利用图像-文本解码器来重建擦除的实体-短语,促进了对文本表达式的理解;
  • 收集了一个新的数据集 Ref-ZOM,其中文本输入不限于一对一的设置。
  • 大量实验表明本文提出的方法很有效。

三、相关工作

3.1 Referring Image Segmentation

  早期的 RIS 方法通常采用 CNN 和 RNN 提取视觉和语言特征,然后拼接+卷积得到融合的多模态特征,然而这未能挖掘图像文本间的交互。于是一些方法基于多模态图建立起关系感知的推理。最近基于 Transformer 的 Backbone 用于特征提取,同时其中的自注意力机制也促进了大量的跨模态注意力对齐。例如,VLT、LAVT、CRIS。

  然而,之前的方法仅仅监督视觉像素,未能确保文本表达式中的语义线索整合进视觉特征内,使得模型很难解决那些没有目标或者多个目标的表达式。于是本文建立一个双流网络来强化信息的双向流动,同时建立一个新的数据集 Ref-ZOM 用于验证。

3.2 视觉-语言理解

  视觉-语言理解的应用范围很广,包括视频检索、图像-文本匹配、视觉问答。之前的方法 masked word prediction (MWP) 预训练实现多模态特征交互和理解。而在本文中并非直接预测单个 token,而是重构文本 embedding 的表示,从而衡量整体的相似度。

  最近一些视觉语言预训练模型表明了对比学习的潜力,于是本文将对比损失整合进图像-文本解码器中来促进文本的重建。

四、方法

RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理
  如上图所示,Dual Multi-Modal Interaction (DMMI) 网络采用编码器-解码器的结构。在编码器部分,视觉和文本编码器分别提取视觉和语言特征。之后 Multi-scale Bidirection attention (MBA) 执行跨模态交互,然后分别送入两个解码器。在文本-图像解码器中,文本 embedding 用于 query 视觉特征生成分割 mask。在图像-文本编码器中,基于视觉特征,利用 Context Clue Recovery (CCR) 模块来重建被擦除的信息,同时运用对比损失促进 CCR 的学习。

4.1 特征编码器

  给定文本表达式 T T T,通过 TextBlob 工具随机 mask 掉实体-短语,生成相应的 T ′ T^{\prime} T。之后将 T T T T ′ T^{\prime} T 送入文本编码器生成语言特征 E = { e l } l = 1 L E=\{e_l\}_{l=1}^L E={el}l=1L E ′ = { e l ′ } l = 1 L ∈ R C t × L E^{\prime}=\{e_l^{\prime}\}_{l=1}^L\in\mathbb{R}^{C_t\times L} E={el}l=1LRCt×L,其中 C t C_t Ct L L L 分别表示通道的数量以及句子的长度。对于输入图像 X X X,利用视觉编码器提取多尺度的视觉特征 V n ∈ R C n × H n × W n V_n\in\mathbb{R}^{C_n\times H_n\times W_n} VnRCn×Hn×Wn,其中 C n C_n Cn H n H_n Hn W n W_n Wn 分别表示通道的数量、高度、宽度, n n n 为第 n n n 个阶段。在特征提取过程中,应用 MBA 模块进行跨模态特征交互。

4.1.1 级联的结构

  如图 2(a) 所示,视觉编码器是一个四阶段的级联结构,其中包含 MBA 模块。首先将视觉编码器第一阶段的浅层特征 V 1 V_1 V1 和语言特征 E 1 E_1 E1 一起送入 MBA 模块, 得到 V 1 ∗ V_1^{*} V1 E 1 ∗ E_1^{*} E1,之后将 V 1 V_1 V1 送入视觉编码器,得到 V 2 V_2 V2。同时 E 1 ∗ E_1^{*} E1 记做 E 2 E_2 E2,用于下个 MBA 模块。类似的,将 V 2 V_2 V2 E 2 E_2 E2 送入下一个 MBA 模块。

4.1.2 多尺度双向注意力模块

  MBA 模块用于提炼视觉特征 V V V 和语言特征 E E E,实现文本-图像和图像-文本对齐。这里举个🌰,首先将视觉特征 V V V 展平为 R C × N \mathbb{R}^{C\times N} RC×N,其中 N = W × H N=W\times H N=W×H。之后进行特征交互:
V ∗ = s o f t m a x ( ( W q V ) T ( W k E ) C ^ ) ( W v E ) T V^*=\mathrm{softmax}(\frac{(W_qV)^T(W_kE)}{\sqrt{\hat{C}}})\left(W_vE\right)^T V=softmax(C^ (WqV)T(WkE))(WvE)T其中 W q W_q Wq W k W_k Wk W v W_v Wv 为投影函数,将通道 C C C 变换为 C ^ \hat C C^。除了上式外,还在 MBA 中设计了两种对齐策略来捕捉不同局部区域内的视觉特征和文本序列间的关系。

文本-图像对齐

  首先计算每个 token 和不同局部区域 Ω r α \Omega_r^{\alpha} Ωrα 间的变换系数 W a t t α , r W_{att}^{\alpha,r} Wattα,r,其中 r r r 表示不同的空间尺寸,其值范围从 1 到 R R R。之后给定位置 i i i 处的 Ω r α ( i ) \Omega_r^{\alpha}(i) Ωrα(i),注意力矩阵 W a t t α , r ∈ R N × L W_{att}^{\alpha,r}\in\mathbb{R}^{N\times L} Wattα,rRN×L 中第 i i i 行的权重 w i α , r w_i^{\alpha,r} wiα,r 计算为:
w i α , r = s o f t m a x ( ∑ m ∈ Ω r α ( i ) ( W q α V m ) T ( W k α E ) C ^ ) w_{i}^{\alpha,r}=\mathrm{softmax}(\sum_{m\in\Omega_{r}^{\alpha}(i)}\frac{(W_{q}^{\alpha}V^{m})^{T}(W_{k}^{\alpha}E)}{\sqrt{\hat{C}}}) wiα,r=softmax(mΩrα(i)C^ (WqαVm)T(WkαE))其中 w i α , r ∈ R 1 × L w_{i}^{\alpha,r}\in\mathbb{R}^{1\times L} wiα,rR1×L m m m 将遍历 Ω r α ( i ) \Omega_r^{\alpha}(i) Ωrα(i) 中的所有空间位置, V m ∈ R C ^ × 1 V^{m}\in\mathbb{R}^{\hat C\times1} VmRC^×1 表示 Ω r α ( i ) \Omega_r^{\alpha}(i) Ωrα(i) 中一个特征向量。对于所有的 Ω r α \Omega_r^{\alpha} Ωrα,最终的变换系数为:
W a t t α = ∑ r = 1 R λ r α W a t t α , r W_{att}^{\alpha}=\sum_{r=1}^{R}\lambda_{r}^{\alpha}W_{att}^{\alpha,r} Wattα=r=1RλrαWattα,r其中 λ r α \lambda_r^{\alpha} λrα 为可学习的参数,用于反映不同尺寸下区域的重要性。最终,将语言信息整合进视觉特征内:
V ∗ = W a t t α ( W v α E ) T V^*=W_{att}^{\alpha}(W_{v}^{\alpha}E)^T V=Wattα(WvαE)T

图像-文本对齐

  对于每个视觉像素,同样建立起与文本序列 Ω r β \Omega_r^{\beta} Ωrβ 的联系,其中 r r r 表示不同序列的长度, Ω r β \Omega_r^{\beta} Ωrβ 在整个句子上滑动。对于文本序列 Ω r β ( i ) \Omega_r^{\beta}(i) Ωrβ(i),起始于位置 i i i,计算变换系数 W a t t β , r W_{att}^{\beta,r} Wattβ,r 在第 i i i 行的权重 w i β , r w_i^{\beta,r} wiβ,r
w i β , r = s o f t m a x ( ∑ m ∈ Ω r β ( i ) ( W q β E m ) T ( W k β V ) C ^ ) w_{i}^{\beta,r}=\mathrm{softmax}(\sum_{m\in\Omega_{r}^{\beta}(i)}\frac{(W_{q}^{\beta}E^{m})^{T}(W_{k}^{\beta}V)}{\sqrt{\hat{C}}}) wiβ,r=softmax(mΩrβ(i)C^ (WqβEm)T(WkβV))其中 w i β , r ∈ R 1 × N w_{i}^{\beta,r}\in\mathbb{R}^{1\times N} wiβ,rR1×N m m m 将遍历 Ω r β ( i ) \Omega_r^{\beta}(i) Ωrβ(i) 中的所有 tokens, E m ∈ R c ^ × 1 E^m\in \mathbb{R}^{\hat c\times1} EmRc^×1 表示 Ω r β ( i ) \Omega_r^{\beta}(i) Ωrβ(i) 中的一个特征向量。之后通过一个可学习的参数 λ r β \lambda_r^{\beta} λrβ 来平均 W a t t β , r W_{att}^{\beta,r} Wattβ,r 得到 W a t t β W_{att}^{\beta} Wattβ。最后嵌入视觉信息生成提炼后的文本 embedding:
E ∗ = W a t t β ( W v β V ) T E^*=W_{att}^{\beta}(W_{v}^{\beta}V)^T E=Wattβ(WvβV)T

4.2 文本-图像解码器

  整体结构如图 2(b) 所示,在浅层的编码器和解码器间添加跳跃连接,从而引入空间信息。文本-图像解码器流程如下:
{ Y 4 = V 4 ∗ Y n = ψ ( ϕ ( Y n + 1 , V n ∗ ) , E 4 ∗ ) n = 3 , 2 \begin{cases}Y_4=V_4^*\\Y_n=\psi\left(\phi\left(Y_{n+1},V_n^*\right),E_4^*\right)\quad n=3,2\end{cases} {Y4=V4Yn=ψ(ϕ(Yn+1,Vn),E4)n=3,2其中 ψ ( ⋅ ) \psi(\cdot) ψ() 表示 Transformer 解码器层, ϕ ( ⋅ ) \phi(\cdot) ϕ() 由两个 3 × 3 3\times3 3×3 卷积跟着一个 batch normalization 和 ReLU 组成。之后一系列卷积操作应用在 Y 2 Y_2 Y2 上,输出两种类别得分图 Y ^ 1 \hat Y_1 Y^1,这是 DMMI 网络的视觉预测。最后采用二值交叉熵损失计算 Y ^ 1 \hat Y_1 Y^1 Y g t Y_{gt} Ygt,表示为 L c e \mathcal{L}_{ce} Lce

4.3 图像-文本解码器

4.3.1 上下文线索恢复模块 Context Clue Recovery Module

  如图 2(c 所示,对于不完整的语言特征 E ′ = { e l ′ } l = 1 L E^{\prime}=\{e_l^{\prime}\}_{l=1}^L E={el}l=1L,在视觉特征 V g ∗ V_g^{*} Vg 的引导下,利用 CCR 模块来重建其 masked 掉的信息。

  具体来说,给定视觉特征 V g ∗ V_g^{*} Vg,应用一个 Transformer 解码器层 D ( E ′ , V g ∗ ) \mathcal{D}(E^{\prime},V_g^{*}) D(E,Vg) 来恢复 E ′ = { e l ′ } l = 1 L E^{\prime}=\{e_l^{\prime}\}_{l=1}^L E={el}l=1L 中的缺失信息。其中视觉特征 V g ∗ V_g^{*} Vg 用于 query E ′ E^{\prime} E。而 V g ∗ V_g^{*} Vg 则源于文本-图像解码器的中间部分,因为其包含了空间和语言信息。输出 D ( E ′ , V g ∗ ) \mathcal{D}(E^{\prime},V_g^{*}) D(E,Vg) 被视为重建后的文本 embedding,表示为 E ^ = { e ^ l ′ } l = 1 L \hat E=\{\hat e_l^{\prime}\}_{l=1}^L E^={e^l}l=1L

  为强制 CCR 模型准确恢复缺失的信息,进一步衡量重建的 embedding E ^ \hat E E^ E 4 ∗ E_4^{*} E4 间相似度距离 L s i m \mathcal{L}_{sim} Lsim
L s i m = δ ∗ ( 1 − cos ⁡ [ D e t a c h ( E 4 ∗ ) , E ^ ] ) \mathcal{L}_{\mathrm{sim}}=\delta*\left(1-\cos\left[\mathrm{Detach}\left(E_{4}^{*}\right),\hat{E}\right]\right) Lsim=δ(1cos[Detach(E4),E^])其中 δ \delta δ 是一个指示器:当样本为一对零匹配时,值为 0,表示文本输入与图像不相关,不可能重建出语言信息。此外, Detach ( E 4 ∗ ) \text{Detach}(E_4^{*}) Detach(E4) 指的是阻止 E 4 ∗ E_4^{*} E4 的梯度流动,防止 E 4 ∗ E_4^{*} E4 E ^ \hat E E^ 误导。

4.3.2 多模态对比学习

  首先从文本-图像解码器的不同部分聚合特征来生成视觉特征 V ~ d ∗ ∈ R B × N × C \tilde{V}_d^*\in\mathbb{R}^{\mathcal{B}\times N\times C} V~dRB×N×C,然后将其与语言特征 E ~ 4 ∗ ∈ R B × N × C \tilde{E}_4^*\in\mathbb{R}^{\mathcal{B}\times N\times C} E~4RB×N×C 一起池化得到 V o V_o Vo E o ∈ R B × C E_o\in\mathbb{R}^{B\times C} EoRB×C。之后计算对比损失:
L c o n = L I → T + L T → I \mathcal{L}_{con}=\mathcal{L}_{I\rightarrow T}+\mathcal{L}_{T\rightarrow I} Lcon=LIT+LTI其中 L I → T \mathcal{L}_{I\rightarrow T} LIT L T → I \mathcal{L}_{T\rightarrow I} LTI 分别表示图像-文本和文本-图像对比损失:
L I → T = − 1 B ∑ i = 1 B δ ( i ) ∗ log ⁡ exp ⁡ ( V o ( i ) ⋅ E o ( i ) / τ ) ∑ j = 1 B exp ⁡ ( V o ( i ) ⋅ E o ( j ) / τ ) \mathcal{L}_{I\to T}=-\frac1{\mathcal{B}}\sum_{i=1}^{\mathcal{B}}\delta^{(i)}*\log\frac{\exp\left(V_o^{(i)}\cdot E_o^{(i)}/\tau\right)}{\sum_{j=1}^{\mathcal{B}}\exp\left(V_o^{(i)}\cdot E_o^{(j)}/\tau\right)} LIT=B1i=1Bδ(i)logj=1Bexp(Vo(i)Eo(j)/τ)exp(Vo(i)Eo(i)/τ)
L T → I = − 1 B ∑ i = 1 B δ ( i ) ∗ log ⁡ exp ⁡ ( E o ( i ) ⋅ V o ( i ) / τ ) ∑ j = 1 B exp ⁡ ( E o ( i ) ⋅ V o ( j ) / τ ) \mathcal{L}_{T\to I}=-\frac{1}{\mathcal{B}}\sum_{i=1}^{\mathcal{B}}\delta^{(i)}*\log\frac{\exp\left(E_{o}^{(i)}\cdot V_{o}^{(i)}/\tau\right)}{\sum_{j=1}^{\mathcal{B}}\exp\left(E_{o}^{(i)}\cdot V_{o}^{(j)}/\tau\right)} LTI=B1i=1Bδ(i)logj=1Bexp(Eo(i)Vo(j)/τ)exp(Eo(i)Vo(i)/τ)其中 V o ( i ) ∈ R C V_o^{(i)}\in\mathbb{R}^{C} Vo(i)RC E o ( i ) ∈ R C E_o^{(i)}\in\mathbb{R}^{C} Eo(i)RC 表示第 i i i 个样本, B \mathcal{B} B 为 batch size。 δ \delta δ 是一对零指示器, τ \tau τ 为缩放 logits 的温度超参数,最后总体损失为 L c e \mathcal{L}_{ce} Lce L s i m \mathcal{L}_{sim} Lsim L c o n \mathcal{L}_{con} Lcon 的求和。

五、Ref-ZOM 数据集

  Ref-ZOM 中的图像源于 COCO 数据集,包含 55078 张图像,74942 个目标标注。训练集包含 43,749 张图像,58356 个目标标注;测试集包含 11329 张图像,16,586 个目标标注。一些样本如下图所示:
  RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理

一对多

  如图 3 第一行所示,以三种方式收集一对多的图像和标注:手工创建一些图像-文本对;基于现有的一对一指代图像分割数据集,组合一张图像中的多个文本表达式;利用 prompt 中的一些模板合成一些文本样本。这三种方法共收集到 41842 个标注目标。

一对零

  从 COCO 数据集中选择 11937 张图像,接下来要么从 COCO 字幕中选择表达式,要么从 RefCOCO\+\g 中选择一个文本描述组成图文对,最后进行一次双向检查。

一对一

  从现有的 RefCOO\+\g 数据集中随机选择一些样本,同时用 prompt 模板创建一些新样本,这两种方法共收集到 42421 个目标。

六、实验

6.1 实施细节

  视觉编码器 ResNet-101\Swin-Transformer-Base (Swin-B),预训练权重采用 ImageNet-1K 和 ImageNet-22K 版本。文本编码器 base BERT 12 层,768 hidden_size,采用官方提供的预训练权重。AdamW 优化器,权重衰减 0.01 0.01 0.01,初始学习率 5 e − 5 5e-5 5e5,polynomial 学习策略。输入图像尺寸 448 × 448 448\times448 448×448,最大短语长度 20 20 20。每个句子每次迭代时,仅随机擦除一个短语。

   Ω r α \Omega_r^{\alpha} Ωrα Ω r β \Omega_r^{\beta} Ωrβ 中的 r r r 值设为 [ 1 , 2 , 3 ] [1,2,3] [1,2,3],即对应 Ω 1 α \Omega_1^{\alpha} Ω1α Ω 2 α \Omega_2^{\alpha} Ω2α Ω 3 α \Omega_3^{\alpha} Ω3α 空间区域尺寸分别为 1 × 1 1\times1 1×1 3 × 3 3\times3 3×3 5 × 5 5\times5 5×5。此外,当 r = 1 , 2 , 3 r=1,2,3 r=1,2,3 时, Ω r β \Omega_r^{\beta} Ωrβ 对应的文本序列分别有 1 , 2 , 3 1,2,3 1,2,3 个 tokens。所有解码器中 Transformer layer 均有 8 个头, L c o n \mathcal{L}_{con} Lcon 中的温度系数 τ \tau τ 设为 0.05。

6.2 数据集和指标

  除了新收集的 Ref-ZOM 数据集外,还有 RefCOCO、RefCOCO+、GRef。

  在测试中,对于一对一和一对多样本,采用 overall intersection-over-union (oIoU)、mean intersection-over-union (mIoU)、prec@X 评估masks 的质量。对于一对零的样本,利用 image-level accuracy (Acc) 评估其性能:当预测 mask 中所有点的分类为背景时,Acc 值为 1,否则为 0,最后的 Acc 值在整个测试集上取平均。

6.3 与 SOTA 方法的比较

RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理
RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理

6.4 消融研究

  • 图像-文本解码器的有效性
  • MBA 模块的有效性

RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理

6.5 可视化

  • 在 Ref-ZOM 上的 Zero-shot
  • 在 Cityscapes 上的 Zero-shot
    RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记,RIS_REC,论文阅读,笔记,目标检测,人工智能,图像处理

七、结论

  
  本文指出现有 RIS 在面对表达式没有目标或指向多个目标时的缺陷,于是提出 Dual Multi-Modal Interaction (DMMI) 网络,同时建立起一个 Ref-ZOM 数据集。在 DMMI 中,除去视觉预测外,还提出了基于视觉特征重建擦除的实体-短语。实验表明方法的性能和泛化效果很好。
  

写在后面

  写完博客,接着去调试代码了~文章来源地址https://www.toymoban.com/news/detail-831017.html

到了这里,关于RIS 系列 Beyond One-to-One: Rethinking the Referring Image Segmentation 论文阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包