暴力检测-Modality-Aware Contrastive Instance Learning with Self-Distillation for Weakly-Supervised Audio

摘要

弱监督的视听暴力检测旨在通过视频级别标签区分包含多模态暴力事件的片段。许多先前的研究以早期或中期的方式进行视听整合和交互,但忽视了弱监督环境下的模态异质性。本文分析了多实例学习(MIL)过程的模态异步和无关实例现象,并进一步探讨了其对弱监督视听学习的负面影响。为了解决这些问题,我们提出了一种模式感知的自蒸馏对比实例学习(MACIL-SD)策略。具体来说,我们利用轻量级的双流网络来生成音频和视觉包,其中单峰背景,暴力和正常实例以无监督的方式聚类到半包中。然后将音频和视觉暴力半袋表征组合为正对,将暴力半袋与相反情态的背景和正常实例组合为对比负对。此外,采用自蒸馏模块将单模态视觉知识转移到视听模型中,消除了噪声,缩小了单模态和多模态特征之间的语义差距。实验表明,在大规模的XD-Violence数据集上,我们的框架以较低的复杂度优于以前的方法。结果还表明,我们提出的方法可以作为插件模块来增强其他网络。代码可在https://github.com/JustinYuu/MACIL_SD上获得。

引言

近年来,暴力检测已经从纯视觉任务[4,18,20,30,33,45,47,54,61,67,68]扩展到视听多模态问题[43,44,62],其中相应的听觉内容补充了细粒度的暴力线索。尽管许多模态融合和交互方法已经显示出良好的结果,但弱监督环境下多实例学习(MIL)[38]框架的模态差异仍有待探索。

为了减轻对精细标记数据的需求,MIL被广泛用于弱监督的暴力检测,其中每个视频序列的输出形成一个包含多个片段级实例的包。在视听场景中,所有先前的作品都有一个通用的方案,即将每个视听片段视为一个完整的实例,并将前k个视听logits平均作为最终的视频级分数。然而,我们分析了这个公式存在两个缺陷:模态异步和未分化实例。模态异步表明听觉和视觉暴力线索在时间上不一致。以图1(a)中典型的暴力事件虐待为例,当施暴者殴打受害者时,随后会出现尖叫,整个过程都被视为暴力事件。在这种情况下,部分视觉模态(第2 -3片段)和音频模态(第4-5片段)中的场景包含暴力线索。我们认为直接利用视听对作为实例可能会在视频级优化中引入数据噪声。我们发现的另一个缺陷是未区分的实例,也就是说,选择前K个实例进行优化会导致许多未参与的实例。如图1(b)所示,在一系列暴力视频中,暴力事件可以在一些音频/视觉实例中得到反映。相比之下,其他图像则包含背景噪音等无关元素。相反,在正常事件的视频中,一些片段包含正常事件的元素,而其他片段包含背景信息。在这种情况下,K-max激活放弃了包含背景元素的实例,并且暴力和正常实例之间的差异没有明确显示出来。为此,我们认为在暴力、正常和背景实例之间添加对比约束可能会导致对暴力内容的区分。

请添加图片描述

​ 图1

在初步分析的基础上,我们提出了一个由模态感知对比实例学习(MA-CIL)和自蒸馏(SD)模块构建的简单而有效的框架。为了解决模态异步问题,我们在原始的视听包之外还形成了单模态袋,计算单模态logits,并将top-K和bottom-K单模态实例的嵌入聚类为半包。为了区分实例,我们提出了一种基于模态感知的对比方法。其中,将音频和视觉暴力半袋构建为正对,将暴力半袋与背景实例嵌入和正常半袋组装为负对。此外,采用自蒸馏模块将单模态知识提取到视听模型中,消除了模态之间的语义差距,减轻了大量跨模态交互带来的数据噪声。综上所述,我们的贡献如下:

  1. 我们分析了广泛使用的MIL框架在视听场景中的模态异步和无差别实例现象,进一步阐述了它们在弱监督视听暴力检测中的不足。
  2. 我们提出了一种基于自蒸馏框架的模态感知对比实例学习方法,以引入特征识别并缓解模态噪声。
  3. 由于配备了轻量级网络,我们的框架在XD-Violence数据集上的性能优于最先进的方法,而且我们的模型还显示出作为插件模块的通用性。

相关工作

1、Weakly-Supervised Violence Detection

弱监督暴力检测需要识别视频级别标签下的暴力片段,其中MIL[38]框架被广泛用于去噪无关信息。先前的一些研究[4,18,20,30,45,47,61,67,68]将暴力检测作为一项纯视觉任务,利用基于cnn的网络对视觉特征进行编码。在这些方法中,提出了各种特征集成和改进方法来增强MIL的鲁棒性。Tian等人提出了RTFM,一种鲁棒的时间特征大小学习方法来改进识别正实例的能力。Li等人[33]设计了一个基于Transformer[57]的多序列学习网络,以降低实例选择错误的概率。然而,这些模型忽略了相应的听觉信息以及跨模态的相互作用,从而限制了暴力预测的性能。

最近,Wu等人[62]策划了一个大规模的视听数据集XD-Violence,并建立了一个视听基准。然而,它们以早期的融合方式整合了音频和视觉特征,从而限制了进一步的跨模态交互。为了促进多模态融合,Pang等人提出了一种基于注意力的网络,以中间方式自适应地将视听特征与相互学习模块集成在一起。与之前的方法不同,我们通过轻量级的双流网络进行模态交互,并通过模态感知对比和自蒸馏进行判别多模态学习。

2、Contrastive Learning

对比学习是通过在没有数据监督的情况下对正对和负对进行对比而形成的。在单模态领域,几种视觉方法[10,23,25,35]利用视觉数据的增强作为对比来提高模型的辨别能力。此外,一些自然语言处理方法利用标记级和句子级的对比来增强预训练模型[15,50]和监督任务[17,46]的性能。对于多模态领域,一些研究将模态感知与视觉语言任务进行了对比,如图像字幕[16,58]、视觉问答[9,60]和表征学习[34,49,59,66]。此外,最近的文献[1,2,14,32,37,39,40,42]利用视听流的时间一致性作为对比借口任务来学习稳健的视听表征。在现有实例级对比框架的基础上[12,63],我们提出了半袋的概念,并利用跨模态对比获得模型判别。

3、Cross-Modality Knowledge Distillation

知识蒸馏首先被提出用于将知识从大规模架构转移到轻量级模型[5,28]。而跨模态蒸馏的目的是将单模态知识转移到多模态模型中,以减轻模态之间的语义差距。几种方法[21,29]通过幻觉网络将深度特征提取到RGB表示中,以解决模态缺失和噪声现象。Chen等人提出了一种视听蒸馏策略,该策略学习组合嵌入并跨语义不相关模态传输知识。最近,多模态知识扩展[65]被提出作为一种两阶段蒸馏策略,它通过生成伪标签将知识从单模态教师网络转移到多模态学生网络。受自蒸馏方法的启发[6,8,11,19,52,64],我们提出了参数集成范式,通过两个类似的轻量级网络将视觉知识转移到我们的视听模型中,从而减少了模态噪声并有利于稳健的视听表示。

准备工作

给定一个视听视频序列 S = ( S A , S V ) S=(S^{A},S^{V}) S=(SA,SV),其中 S A S^{A} SA为音频通道, S V S^{V} SV变量为视觉通道,将整个序列划分为 T T T个不重叠的片段 { s t A , s t V } t = 1 N \{s_{t}^{A},s_{t}^{V}\}_{t=1}^{N} {stA,stV}t=1N。对于一个视听对 ( s t A , s t V ) (s_t^{A},s_t^{V}) (stA,stV),弱监督暴力检测任务需要通过一个事件关联标签 y t ∈ { 0 , 1 } y_{t}\in\{0,1\} yt{0,1}来区分它是否包含暴力事件,其中 y t = 1 y_{t}=1 yt=1表示当前片段中至少有一个模态包含暴力线索。在训练阶段,只有视频级别的标签(分)可用于优化。因此,一般的方案是利用多实例学习(MIL)过程来满足弱监督。

在MIL框架中,将每个视频序列 S S S视为一个包,以视频段 { s t A , s t V } t = 1 N \{s_t^A,s_t^V\}_{t=1}^N {stA,stV}t=1N为实例。然后通过特定的特征级/分数级池化方法聚合实例以生成视频级预测𝑝。在本文中,我们使用平均池化的K-max激活而不是基于注意力的方法[41,53]和全局池化[51,67]作为聚合函数。具体来说,给定CNN网络提取的音频和视觉特征 f a , f v f_{a},f_{v} fa,fv,我们使用多模态网络生成单模态logits l a , l v l_{a},l_{v} la,lv和视听logits l a v l_{av} lav。音频和视觉实例的嵌入符号分别表示为 h a h_{a} ha h v h_{v} hv。然后我们取𝐾最大logits的平均值,并使用sigmoid激活生成视频级预测𝑝。由于我们提出的对比学习方法的附加约束,我们定义了单模态袋 B a , B v \mathrm{B}_{a},\mathrm{B}_{v} Ba,Bv。在每个单模态袋中,实例根据其固有特征聚类成几个半袋 B m , m ∈ { a , v } B_{m},m\in\{a,v\} Bm,m{a,v},对应的半袋表示记为 B m , m ∈ { a , v } \mathcal{B}_{m},m\in\{a,v\} Bm,m{a,v}

方法

我们提出的框架由三部分组成,一个轻量级的双流网络,模态感知对比实例学习(MA-CIL)和自蒸馏(SD)模块。图2中所示的框架的详细说明如下。

请添加图片描述

​ 图2

1、Two-Stream Network

考虑到现有方法在大规模网络中存在参数冗余的问题,设计了一种与编码器无关的轻量级结构来实现特征聚合和模态交互。以预训练网络(例如I3D和VGGish分别用于视觉和音频特征)提取的视觉和听觉特征 f v , f a f_{v},f_{a} fv,fa作为输入,我们提出的网络由三部分组成,线性层保持输入特征的维度相同,跨模态注意力层进行模态间交互;以及用于弱监督训练的MIL模块。其中,跨模态注意力层是在transformer的编码器部分[57]的基础上进行改进的,包括多头自注意、前馈层、残差连接[26]和层归一化[3]。在原始的自注意力块中,特征由三个不同的参数矩阵分别作为query,key和value向量来进行投影。然后通过 a t t ( q , k , v ) = s o f t m a x ( q k T d m ) v att(q,k,v)=softmax(\frac{qk^{T}}{\sqrt{d_{m}}})v att(q,k,v)=softmax(dm qkT)v计算scale点积注意力得分,其中 q , k , v q,k,v q,k,v为查询、键和值向量, d m d_m dm为查询向量的维数, T T T为矩阵的转置运算。为了加强跨模态交互,我们将自注意块的键和值向量更改为其他模态的特征:

h a = a t t ( f a W Q , f v W K , f v W V ) , ( 1 ) h_{a}=att(f_{a}W_{Q},f_{v}W_{K},f_{v}W_{V}),\quad(1) ha=att(faWQ,fvWK,fvWV),(1)

h v = a t t ( f v W Q , f a W K , f a W V ) , ( 2 ) h_{v}=att(f_{v}W_{Q},f_{a}W_{K},f_{a}W_{V}),\quad(2) hv=att(fvWQ,faWK,faWV),(2)

其中, h a h_{a} ha h v h_{v} hv是更新的音频和视觉特征, W Q W_{Q} WQ W K W_{K} WK,和 W V W_{V} WV是可学习参数。我们采用共享参数策略进行特征投影,以减少计算量。

我们采用弱监督设置下的MIL程序来获得视频级分数。与之前的工作不同,我们单独处理单模态特征以减轻模态异步。具体地说,在每个模态中使用全连接层来生成单模态logits。然后,我们将单模态logits的和作为融合的视听logits,同时保留单模态logits用于后续的对比学习。最后,对前k个视听logits进行平均池化,并将其放入sigmoid激活中,以生成视频级别的分数以进行优化。整个程序如下:

l a , l v = W a f a o u t + b a , W v f v o u t + b v l_{a},l_{v}=W_{a}f_{a}^{out}+b_{a},W_{v}f_{v}^{out}+b_{v} la,lv=Wafaout+ba,Wvfvout+bv

p = Θ ( Ω ( σ ( l a ⊕ l v ) ) ) ( 4 ) p=\Theta(\Omega(\sigma(l_{a}\oplus l_{v})))\quad(4) p=Θ(Ω(σ(lalv)))(4)

其中 W a W_{a} Wa W v W_{v} Wv b a b_{a} ba b v b_{v} bv为可学习参数,Ω为K-max激活, σ \sigma σ为sigmoid函数,⊕为求和运算,Θ为平均池化,𝑝为视频级预测。

2、MA-CIL

为了利用更多的空闲实例,我们提出了MA-CIL模块,如图2的右侧所示。给定嵌入,我们执行无监督聚类,根据视觉和音频logits将它们分为暴力、正常和背景半袋表示。我们认为可以利用语义无关实例之间的差异来丰富模型的识别能力。

具体来说,我们首先利用视频级概率𝑝来区分给定视频是否包含暴力事件。在每个mini-batch中,对于 p i > 0.5 p_{i}>0.5 pi>0.5的视频序列 S i S_{i} Si,具有最高logits的top-K个实例聚类为暴力半袋 B m v i o ( i ) = { h m ( n ) } n = 1 K v i o , m ∈ { a , v } B_{m}^{vio}(i)=\{h_{m}(n)\}_{n=1}^{K_{vio}},m\in\{a,v\} Bmvio(i)={hm(n)}n=1Kvio,m{a,v}。对于 p j ≤ 0.5 p_{j}\leq0.5 pj0.5的序列 S j S_j Sj,选取top-K个实例作为正常半袋型的 B m n o r ( j ) = { h m ( n ) } n = 1 K n o r , m ∈ { a , v } B_{m}^{nor}(j)=\{h_{m}(n)\}_{n=1}^{K_{nor}},m\in\{a,v\} Bmnor(j)={hm(n)}n=1Knor,m{a,v}。我们希望在正常和暴力事件中加入对比,可以帮助模型区分感知信号的暴力程度。

此外,我们认为正常视频和暴力视频都包含背景片段,学习事件相关片段和背景噪声之间的差异有助于定位。因此,我们选择整个mini-batch的bottom-k个实例作为背景半袋 B m b g d = { h m ( n ) } n = 1 K b g d , m ∈ { a , v } B_{m}^{bgd}=\{h_{m}(n)\}_{n=1}^{K_{bgd}},m\in\{a,v\} Bmbgd={hm(n)}n=1Kbgd,m{a,v}。在每个小批量中,模型应该将暴力的视听实例与暴力实例和其他实例(背景和正常)构建的负对进行对比。

一种直观的方法是随机选择相反模态的半袋内和半袋间实例作为正对和负对。然而,我们认为具有不同位置的音频和视觉暴力实例可能在语义上不匹配,例如分别表达暴力事件的开始和结束。因此,假设它们具有相同的含义是不自然的。相反,我们对每个袋中的所有暴力实例的嵌入进行平均池化,形成半袋级表示 B m v i o , m ∈ { a , v } \mathcal{B}_{m}^{vio},m\in\{a,v\} Bmvio,m{a,v}。通过这样做,音频和视觉表示都表达了事件级语义,从而减轻了噪声问题。为此,我们构建了半袋级正对,它们由音频和视觉暴力半袋表示 B a v i o , B v v i o \mathcal{B}_{a}^{vio},\mathcal{B}_{v}^{vio} Bavio,Bvvio组合而成。我们还构建了半袋到实例的负对,以保持大量的对比样本,其中暴力半袋表示与相反模态中的背景和正常实例嵌入 h m n o r , h m b g d , m ∈ { a , v } h_{m}^{nor},h_{m}^{bgd},m\in\{a,v\} hmnor,hmbgd,m{a,v}组合成负对。

我们使用InfoNCE[55]作为这部分的训练目标,它缩小了正对之间的距离,扩大了负对之间的距离。对于音频暴力半袋表示 B a v i o ( i ) B_{a}^{vio}(i) Bavio(i)与视觉正常实例嵌入 { h v n o r ( n ) } n = 1 K n o r \{h_{v}^{nor}(n)\}_{n=1}^{K_{nor}} {hvnor(n)}n=1Knor之间的目标可以表示为:

L c t v 2 n ( B a v i o ( i ) ) = − l o g e ϕ ( B a v i o ( i ) , B v v i o ( i ) ) / τ ) e ϕ ( B a v i o ( i ) , B v v i o ( i ) ) / τ ) + ∑ n = 1 K n o r e ϕ ( B a v i o ( i ) , h v n o r ( n ) / τ ) , \begin{aligned}\mathcal{L}_{ct}^{v2n}(B_{a}^{vio}(i))&=\\&-log\frac{e^{\phi(B_{a}^{vio}(i),B_{v}^{vio}(i))/\tau)}}{e^{\phi(B_{a}^{vio}(i),B_{v}^{vio}(i))/\tau)}+\sum_{n=1}^{K_{nor}}e^{\phi(B_{a}^{vio}(i),h_{v}^{nor}(n)/\tau)}},\end{aligned} Lctv2n(Bavio(i))=logeϕ(Bavio(i),Bvvio(i))/τ)+n=1Knoreϕ(Bavio(i),hvnor(n)/τ)eϕ(Bavio(i),Bvvio(i))/τ),(5)

式中,$\phi 为余弦相似函数, 为余弦相似函数, 为余弦相似函数,\tau 为温度超参数, 为温度超参数, 为温度超参数,K_{nor} 为整个小批量中的正常实例数。类似地,音频暴力半袋表示 为整个小批量中的正常实例数。类似地,音频暴力半袋表示 为整个小批量中的正常实例数。类似地,音频暴力半袋表示B_{a}{vio}(i)$与视觉背景实例嵌入${h_{v}{bgd}(n)}{n=1}^{K{bgd}}$之间的目标可以表示为:

L c t v 2 b ( B a v i o ( i ) ) = (6) − l o g e ϕ ( B a v i o ( i ) , B v v i o ( i ) ) / τ ) e ϕ ( B a v i o ( i ) , B v v i o ( i ) ) / τ ) + ∑ n = 1 K b g d e ϕ ( B a v i o ( i ) , h v b g d ( n ) / τ ) , \begin{aligned}&\mathcal{L}_{ct}^{v2b}(B_{a}^{vio}(i))=\\&&\text{(6)}\\&-log\frac{e^{\phi(B_{a}^{vio}(i),B_{v}^{vio}(i))/\tau)}}{e^{\phi(B_{a}^{vio}(i),B_{v}^{vio}(i))/\tau)}+\sum_{n=1}^{K_{bgd}}e^{\phi(B_{a}^{vio}(i),h_{v}^{bgd}(n)/\tau)}},\end{aligned} Lctv2b(Bavio(i))=logeϕ(Bavio(i),Bvvio(i))/τ)+n=1Kbgdeϕ(Bavio(i),hvbgd(n)/τ)eϕ(Bavio(i),Bvvio(i))/τ),(6)

其中 K b g d K_{bgd} Kbgd表示整个mini-batch中背景实例的数量。视觉与听觉的对应物非常相似,因此为了简洁的写作,我们省略了它们。

3、Self-Distillation

前一部分提供的视听交互会引入大量的模态噪声,而模态异步也会导致同一时间位置的多模态和单模态特征的语义失配。为了解决这些问题,我们认为同时训练一个类似的视觉网络可以使模型集成单模态和多模态知识。通过可控的共蒸馏策略,我们提出的模块保证了模态降噪和鲁棒模态不可知知识。

具体来说,我们提出了一个类似的单模态网络,它包含与我们的双流网络相当的架构。跨模态注意块被包含自注意的标准Transformer编码器块所取代。在训练过程中,单模态网络以相对较小的学习率进行训练,并且相同层的参数通过指数移动平均策略被注入到音频-视觉网络中:

θ a v ← m θ a v + ( 1 − m ) θ v ( 7 ) \theta_{av}\leftarrow m\theta_{av}+(1-m)\theta_{v}\quad(7) θavmθav+(1m)θv(7)

式中,其中, θ a v \theta_{av} θav θ v \theta_{v} θv分别表示视听模型和视觉模型的参数, m m m是控制超参数,遵循余弦调度器,在训练过程中从原始值 m ^ \hat{m} m^增加到1。

4、Learning Objective

整个框架以联合训练的方式进行优化。对于视频级预测𝑝,我们利用二元交叉熵 L B \mathcal{L_B} LB作为训练目标,并使用线性增长策略来控制对比损失的权重。总的目标是:

L a v = λ v 2 n ( t ) K v i o ∑ i ( L c t v 2 n ( B a v i o ( i ) ) + L c t v 2 n ( B v v i o ( i ) ) ) + ( 8 ) λ v 2 b ( t ) K v i o ∑ i ( L c t v 2 b ( B a v i o ( i ) ) + ( L c t v 2 b ( B v v i o ( i ) ) ) + L B \begin{aligned}\mathcal{L}_{av}= & \frac{\lambda_{v2n}(t)}{K_{vio}}\sum_{i}(\mathcal{L}_{ct}^{v2n}(B_{a}^{vio}(i))+\mathcal{L}_{ct}^{v2n}(B_{v}^{vio}(i)))+ & \\ & & \left(8\right)\\ & \frac{\lambda_{v2b}(t)}{K_{vio}}\sum_{i}(\mathcal{L}_{ct}^{v2b}(B_{a}^{vio}(i))+(\mathcal{L}_{ct}^{v2b}(B_{v}^{vio}(i)))+\mathcal{L}_{B} & \end{aligned} Lav=Kvioλv2n(t)i(Lctv2n(Bavio(i))+Lctv2n(Bvvio(i)))+Kvioλv2b(t)i(Lctv2b(Bavio(i))+(Lctv2b(Bvvio(i)))+LB(8)

λ ( t ) = m i n ( r ∗ t , Λ ) \lambda(t)=min(r*t,\Lambda) λ(t)=min(rt,Λ)(9)

其中 K v i o K_{vio} Kvio为整个mini-batch中暴力半袋的个数, λ ( t ) \lambda(t) λ(t)为几个epoch内线性增加权重的控制器,𝑟为增长比,𝑡为当前epoch, Λ为最大权重。

随着“平安城市”建设的不断推进,公共安全逐渐成为人们关注的热点间 题,税频监控技术也随之得到了越来越广泛的应用,传统的视频监控系统主要提供采集存储功能,这远远无法满足人们对其智能化的需求。要实现智能化的视频监控系统,以下几个关键问题亟需解决:(1)如何快速发现监控视频中的异常行为,及时给出警报,并最大限度地减少误报和漏报现象;(2)如何在多种不利因素下(如羊样本,低分辨率)对可疑目标进行准确的识别分析:(3)在海量数据的情况下,如何确保视频分析系统的实时性及准确性。 近年来,深度学习在机器视觉、语音识别和自然语言处理等多个领域都取得了优异的成绩,这也为智能视频分析技术的发展带来了新的契机。因此,本文基于深度学习的方法对上述相关问题展开研究,主要研究工作与创新如下: 1,针对监控视频中的异常行为尤其是暴力打斗行为难以准确快速发现的问题,提出了一种基于三维卷积深度网络的暴力检测方法。该方法利用大量带标签的视频数握进行有监督的学习,通过将传统二维卷积核扩展为三维来提取视颈中的运动信息,然后综合利用视频的空间信息及运动信息来构建深度神经网络模型,从而实现对监控视须中暴力打斗的检测。由于深层模型端到端学习的特性,所以不需要设计复杂的手工特征来描述运动信息,从而降低了任务的复杂度。实验结果表明,本文提出的方法在单一场景以及人群密集环境下都可以对暴力打斗行为进行准确识别。 2.针对人脸图像在单训练样本下难以被准确识别的问题,提出了一种基于核主成分分析网络(Kernel Principle Component Analysis Setworks,KPCANet)模型的二阶段投票人脸识别方法。该方法在不使用额外样本数据的情况下,利用非监督深层模型KPCANet对分块后的人脸图像进行训练并利用KPCA学习得到的波器进行特征提取,从而保证了提取的特征对光照及遮挡的鲁棒性,同时也消除了人脸局部形变对识别率的影响。本文通过投票的方法融合每一个分块的预测值来得到最后的识别结果,对于单次投票结果不唯一的情况,本文采取了二阶段的投票方法,通过扩大每一块的预测候选集,并对不同的区域赋子不同的权值来得出最后的结果,从而进一步提升了识别的准确率。实验结果表明,该方法在四个公开人脸数据集上都取得了优异的表现,算法准确率优于使用了额外数据集的通用方法,尤其是在非限制人脸数据集LFW-a上,本文提出的方法比sVDL和LGR方法准确率提升了约15%.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值