char-net:一种用于扭曲场景文本识别的字符感知神经网络

摘要

本文提出了一种字符感知神经网络(char-net)来识别扭曲的场景文本。我们的char-net由一个字级别的编码器,一个字符级编码器和一个基于LSTM的解码器组成。和以往使用全局STN网络来校正整个扭曲文本图像的工作不同,我们采用了检测和校正单个字符的方法。为此,我们提出了一种新的分层注意机制(HAM),该机制由一个RoIWarp递归层和一个字符级注意层组成。RoIWarp层从字级编码器产生的特征图中依次提取字符对应的特征区域,并将其提供给字符级编码器,字符级编码器通过一个简单的STN消除字符的失真,并进一步对字符区域进行编码。字符级注意层接着关注字符级编码器生成的特征映射中最相关的特征,并组成上下文向量,最后将其送入基于LSTM的解码器进行解码。这种简单的局部变换对单个字符的失真进行建模不仅提高了效率,而且还可以处理难以由单一全局变换建模的不同类型的失真。在六个公共基准数据集上进行了实验。结果表明char-net在所有基准上都能达到最先进的性能,特别是在包含大失真场景文本的IC-IST上。代码将被提供。

简介

近年来,场景文本识别作为提取嵌入自然场景中的文本信息的基础,收到了广泛的关注,随着Gopro等可穿戴式相机的日益普及,越来越多的图像以任意姿态拍摄。这不可避免地在这些图像出现的文本中引入了不同类型的失真(见图1a),尽管在场景无失真文本方面取得了显著成果,但构建一个能够有效处理高度失真文本的鲁棒文本识别器仍然是一个挑战。

图一:(a)一些场景文字遭受失真的例子;(b)沿着曲线的文本可被视为一系列单独旋转的字符

据我们所知,有两种方法利用全球STN来校正扭曲的文本,他们都采用复杂的TPS变换来模拟场景文本中不同类型的失真。由于他们的STN仅在对识别损失的弱监督下进行优化,因此他们难以精确定位紧密绑定文本区域的基准点。这导致TPS变换中的误差,从而导致场景文本从基准点变形。

在这项工作中,我们采取了检测和纠正扭曲文本中的单个字符的方法,而不是估计全局转换并纠正整个场景文本。我们观察到,通过单独考虑扭曲文本中的字符,由复杂变换建模的扭曲实际上可以通过单个字符的一些更简单的局部变换来描述。例如,沿着曲线的文本可以被视为一系列单独旋转的字符(见图1b)。因此,我们可以通过简单的局部变换(例如旋转)纠正每个单独的角色来消除场景文本的失真。这种采用简单的局部变换来对单个字符的失真进行建模的方法不仅提高了效率,而且可以处理不同类型的失真,这些失真即使不是不可能,也很难通过单个全局变换来建模。

在上述观察的驱动下,我们提出了一种用于识别扭曲场景文本的特征感知神经网络(Char-Net)。我们的Char-Net由字级编码器、字符级编码器和基于LSTM的解码器组成。我们引入了一种新的分层注意力机制(HAM),该机制将单词级编码器与字符级编码器以及字符级编码器与基于LSTM的解码器连接起来。新提出的HAM由两层组成,即递归RoIWarp层和字符级注意力层。递归RoIWarp层从由字级编码器产生的特征图中顺序地提取与字符相对应的特征区域,并将其馈送到字符级编码器,字符级编码器通过简单的空间变换器去除字符的失真,并进一步编码字符区域。然后,字符级关注层关注由字符级编码器产生的特征图的最相关特征,并组成上下文向量,该上下文向量最终被馈送到基于LSTM的解码器进行解码。配备了HAM,我们的Char-Net能够通过简单的局部变换来纠正单个字符,从而高效地处理场景文本中呈现的复杂失真。

总之,这项工作的主要贡献就是:

  1. 一种用于失真场景文本识别的简单有效的字符感知神经网络(Char-Net)。整个网络可以仅使用文本图像及其相应的字符标签以端到端的方式进行训练。在六个公共基准测试上的实验结果不仅表明,我们的Char-Net可以实现最先进的性能,而且还证明了其每个组件的有效性。
  2. 一种新颖的分级注意机制,有助于纠正个别字符,并注意识别个别字符的最相关特征。
  3. 字符级编码器,使用简单的局部空间变换器消除单个字符的失真,并使我们的Char-Net能够处理场景文本中显示的不同类型的变形。

 相关工作

场景文本识别

由于深度神经网络的巨大成功,场景文本识别近年来取得了重大进展。对于词典约束的方法,Wang等人和Jaderberg等人通过神经网络进行了字符识别,他们以从左到右的方式对预测的字符进行分组,以输出最终的单词预测,而不是基于字符的识别,并直接从整个单词图像中提取CNN特征来进行90k单词分类(90k是预先定义的字典的大小)。对于无约束场景文本识别,Jaderberg等人采用两个CNN的架构,一个CNN用于预测,另一个CNN检测单词图像中包含的N个字符。随着递归神经网络(RNN)在序列识别中的普及,最近的场景文本识别器同时使用神经网络和RNN来编码单词图像的特征。此外,受神经机器翻译的成功启发,Shi等人和Lee等人都在其RNN中引入了一种可学习的注意机制,以自动选择最相关的特征来识别单个字符。在识别失真场景文本方面,文献相对较少。Phan等人使用SIFT描述符匹配来处理场景文本中显示的透视失真。为了处理更一般的失真,引入了STN来校正整个文本。与这两种方法不同,我们的Char-Net能够纠正单个字符,因此可以处理更复杂的失真形式,而这些失真无法通过单个全局转换轻松建模。

网络体系结构

在本节中,我们将描述char-net的架构。如图2所示,我们的char-net由一个字级编码器、一个循环RoIWrap层、一个字符级编码器、字符级关注层及基于LSTM的解码器组成。循环RoIWrap层和字符级注意力层构成了我们的分层注意力机制(HAM)的核心,我们在下面的各小节详细描写了这些组件。

在本文中,我们将文本图像的ground truth记为y=\left\{y_{1},y_{2},y_{3},......,y_{T},y_{T+1} \right\},其中T是文本的长度,y_{T+1}是字符串的结尾(eos)表示标记结束。我们将从文本图像中预测一个字符的过程称为一个时间步骤/解码步骤。

图2:char-net的结构。字级编辑器中的蓝色和黄色矩阵表示卷积层和最大池化层,来自CNN不同级别的三个卷积特征图被归一化、级联和降维产生特征图F。两个红色矩阵表示分层注意力机制的两层。

字级编码器

我们首先使用字级编码器(WLE)对整个文本图像进行编码,采用CNN的形式。需要一张单通道的灰度图像作为输入I\in \mathbb{R}^{W*H},输入一个三维的特征图F=WLE(I),维度为F=W_{f}*H_{f}*C_{f},分别表示特征图的宽、高和channels。为了在时间步骤t识别字符的标签y_{t},我们HAM的递归RoIWrap层从特征图F中提取相对应的小区域特征F_{c}^{t},并将其送到字符级编码器。这个过程要求WLE生成的特征图不仅包含语义信息,还包含每个字符的空间信息。由于深度CNN的最后一层中的特征在语义上很强,但在空间上很粗糙,我们的WLE通过多个超连接堆叠来自不同级别的卷积特征图以增加输出特征图中编码的空间信息(如图2中的word-level encoder)。

字符级编码器

字符级编码器(CLE)由局部空间变换器和一个CNN组成。它将由递归RoIWrap层提取的小特征区域F_{c}^{t}作为输入。该变换器使得我们的char-net能够处理场景文本中显示的复杂失真。与之前采用全局空间变换器(STN)的工作不同,CLE的局部空间变换器旨在消除单个字符的失真。

F_{c-r}^{t}=STN(F_{c}^{t})。校正后的F_{c-r}^{t}F_{c}^{t}有相同的维度。与使用复杂的TPS来模拟不同类型失真的全局STN相比,CLE的局部STN可以通过简单的预测每个单独字符的旋转来有效模拟场景文本的复杂失真(见图2中的可视化)。使用小的CNN来进一步编码校正后的特征图F_{c-r}^{t},以便为解码步骤提取更多的语义特征。

分级注意机制 

 如前所述,我们的分层注意力机制(HAM)由两个层组成,即递归RoIWrap层和字符级注意力层。递归RoIWrap层将字级编码器连接到字符级编码器,负责从字级编码器产生的整个特征图F中提取当前正在识别的字符相对应的小区域特征F_{c}^{t}。字符级注意力层将字符级编码器连接到基于LSTM的解码器。他负责关注由字符级编码器生成的特征图的最相关特征,并为基于LSTM的解码器计算上下文向量z_{c}^{t}。我们将在下一节描述这些层的详细信息。

基于LSTM的解码器

基于LSTM的解码器使用LSTM层递归性的预测ground truth y。设L表示标签集合,在解码步骤t,LSTM将L上的分布定义为:h^{t}=LSTM(h^{t-1},o^{t-1},z_{c}^{t}),p(y^{t}|h^{t-1},o^{t-1},z_{c}^{t})=Softmax(W_{y}h^{t}).其中h^{t}h^{t-1}分别表示先前和当前隐藏状态,W_{y}是参数矩阵,y_{t}是当前预测的字符的标签,o^{t-1}是先前预测字符的one-hot编码。注意LSTM的实施遵循2013年的Graves,并且o^{t-1}隐式的引入了学好的语言模型,以帮助预测每个字符。然后顺序标记的概率由每个标记的概率的乘积给出:p(y|I)=\prod p(y^{t}|h^{t-1},o^{t-1},z_{c}^{t}).

在训练过程中,我们在整个训练数据集上最小化上式的负对数似然和。在测试过程中,我们直接选择最高的标签。

p(y^{t}|h^{t-1},o^{t-1},z_{c}^{t})=Softmax(W_{y}h^{t})该概率作为每个解码步骤中的输出。

分级注意力机制

给定由单词级编码器产生的文本图像的特征图F,我们的HAM旨在产生上下文向量z_{c}^{t},用于预测在时间步骤t处考虑的字符的标签y_{t}。HAM由两部分组成:递归RoIWrap层和字符级注意力层,下面将详细介绍。

初步:传统注意力机制

在介绍HAM每一层之前,先介绍传统的注意力机制。在传统的注意力机制中,文本向量z_{c}^{t}被计算为特征图F中的所有特征点的加权和:z_{c}^{t}=\sum_{i=1}^{W_{f}}\sum_{j=1}^{H_{f}}\alpha _{ij}^{t}F_{ij},其中F_{ij}表示(i,j)处的C_{f}维特征向量,\alpha _{t}表示一组权重。给定先前以LSTM基础的解码器的的隐藏状态h^{t-1}和文本图像的特征图F,权重\alpha _{t}可以计算出来:s_{ij}^{t}=w^{t}tanh(Mh^{t-1}+VF_{ij}),\alpha ^{t}=SoftMax(s^{t}).其中M和V是参数矩阵,w是参数向量,s^{t}是所有特征点的得分图。

重复RoIWrap层

HAM的重复RoIWrap层旨在顺序的关注特征图的区域,该区域对应于在每个时间步骤中考虑的字符。在时间步骤t,该层基于第t个字符的预测位置自动提取小特征区域F_{c}^{t}F_{c}^{t}=RRoI(F,h^{t-1})

这大大缩小了计算上下文向量z_{c}^{t}的关注范围。如图3所示,RoIWrap层由三个组件组成,即递归定位网络、网格生成器和双线性采样器,这三个分类都是可微的,可以使用梯度下降算法进行优化。

图3:RoIWrap层的具体结构

 递归定位网络

递归定位网络(RLN)负责递归的定位每个感兴趣的字符区域。受传统注意力机制的启发,我们直接使用s_{ij}^{t}=w^{t}tanh(Mh^{t-1}+VF_{ij})计算的得分图s^{t}来预测每个感兴趣区域的空间信息。(q_{x}^{t},q_{y}^{t},q_{w}^{t},q_{h}^{t})=MLP_{l}(s^{t}),这四个数分别表示字符区域的中心坐标和宽高,MLP代表多层感知机。我们使用归一化坐标预测(q_{x}^{t},q_{y}^{t},q_{w}^{t},q_{h}^{t})所以这四个数都在-1到1之间。在MLP的最后一层,我们添加了一个额外的tanh激活层,确保每个预测的中心点都在卷积特征图内。

请注意,我们对每个感兴趣字符的位置和大小没有任何直接监督。在整个过程中,我们只使用识别目标函数来更新整个网络的所有参数。因此,从头开始优化递归定位网络是非常困难的,因此我们预先训练了传统注意力机制的变体以减轻训练递归定位网络的困难。在每个解码步骤,感兴趣的字符特征被限制在特征图F的一个小的连续区域内,\alpha ^{t}=SoftMax(s^{t})生成的权重集可以被解释为卷积特征图中所有特征点的注意力分布。我们将注意力分布建模为二维高斯分布,不是通过归一化相关性得分图s^{t}来生成“无约束”分布,而是使用(\mu _{x}^{t},\mu _{y}^{t},\sigma _{x}^{t},\sigma _{y}^t)=MLP_{p}(s^{t})计算其参数,表示分布的均值和标准差,MLP表示预测高斯分布的多层感知机。与传统的注意力机制类似,这种高斯注意力机制可以以端到端的方式轻松优化。然后,我们直接使用高斯注意机制的参数来初始化我们的递归定位网络。更多的实现细节可以在实验部分找到。

网格生成器和双线性采样器

网格生成器和双线性采样器的目标是在每个时间步骤裁剪出感兴趣的特征,并将其变形为固定的W_{c}*H_{c}*C_{f},给定每个时间步骤的每个感兴趣区域(q_{x}^{t},q_{y}^{t},q_{w}^{t},q_{h}^{t}),网格生成器计算出F_{c}^{t}中的每个点(u,v)在原始卷积网络中的采样位置(u^{'},v^{'}),计算公式如图4所示。

图4:网格生成器计算公式

 \delta _{x}=\frac{q_{w}^{t}-1}{w_{c}-1}\delta _{y}=\frac{q_{h}^{t}-1}{H_{c}-1},由于计算出的坐标大小可能是小数,因此进行双线性采样即可。

 字符级注意力层

字符级注意力层(CLA)负责从字符生成的校正字符特征图中选择最相关的特征以生成上下文向量z_{c}^{t}。它采用传统注意力机制的形式。CLA是必不可少的,因为递归RoIWrap层很难精确地裁剪出仅包含对应字符特征的小特征区域,即使我们的RoIWrap层可以完美的预测每个字符区域的边界框,场景文本中显示的失真也会导致扭曲的特征区域还包括来自相邻角色的特征。从实验中,我们发现,如果我们不使用CLA,来自相邻字符和杂乱背景的特征会在训练过程中误导参数的更新,这将阻止我们以端到端的方式训练Char-Net。

实验

测试数据集

我们使用以下公共基准评估我们的char-net:

  • ICDAR-2003 (IC-03):包含860个用于测试的裁剪文本图像,根据Wang等人的提议,我们识别仅包括至少三个字符的字母数字单词(0-9,A-Z)的图像。
  • ICDAR-2013 (IC-13):根据Shi,使用IC-03中的协议过滤掉857个没有任何预定义词典的裁剪单词测试图像
  • Street View Text (SVT):包含从Google街景收集的647个测试词图像。
  • IIIT5K:包含3000个用于测试的裁剪文本图像。这些图片都是从互联网上收集的。
  • Street View Text Perspective (SVT-P):包含639张裁剪的测试图像,这些图像是专门从谷歌街景中的侧视图角度拍摄的。他们中的大多数人都有很大的视角扭曲。
  • ICDAR Incidental Scene Text (IC-IST):包含2077个用于测试的文本图像。所有单词图像都是从任意姿势下拍摄的附带场景文本图像中剪切出来的。因此,IC-IST包含具有不同类型严重失真的场景文本。

实施详细信息

在字级编码器里有5个卷积模块,这五个卷积块的详细配置分别为[3,64,1,1]*3,[3,128,1,1]*2,[3,256,1,1]*2,[3,256,1,1]*4和[3,256,1,1]*4,激活函数是relu。一二个卷积块后面各有一个2*2的最大池化层,步长为2。为了生成字级编码器的最终特征图,使用局部响应归一化对最后三个块的特征图进行归一化,沿着信道维度进行级联,并用256个信道的1×1卷积层降维。对于字符级编码器,在局部空间变换器中有两个具有256个信道的卷积层,而在CNN中有三个具有512个信道的更多卷积层。空间变换器仅用于预测扭曲场景文本中每个角色的旋转角度。

在HAM中,递归RoIWarp层使用 F_{c-r}^{t}=STN(F_{c}^{t})来回归每个字符区域的边界框,由于解码器采用具有256个隐藏状态的LSTM层,并且递归RoIWarp层中的F_{ij}是256维特征向量,因此M、V和w的对应维数分别为256×256、256×256和1×256。此外,MLP_{l}MLP_{g}都采取具有4个隐藏状态的完全连接层的形式。F_{c}^{t}的宽度和高度都设置为5。字符级关注层再次使用F_{c-r}^{t}=STN(F_{c}^{t})来关注字符特征区域的最相关特征,其中每个特征点是字符级编码器之后的512维特征向量。因此,字符级编码器中的V的维度变为256×512,而其他维度保持与循环RoIWarp层中的相同。

 与先前方法的比较

为了与以前的方法进行公平的比较,我们首先按照他们的实验设置来训练我们的Char-Net。在本节中,我们使用Jaderberg等人生成的800万合成数据集(SynthR)对Char-Net进行了训练,以分类37个类(26个不区分大小写的字符+10个数字+eos)。batch_size为64。所有输入图像均为灰度级,并在训练和测试中调整为100×32。如在递归定位网络中所述,采用了预训练高斯注意机制来成功地优化我们的Char-Net。我们首先使用Adadelta(Zeiler 2012),用字级编码器和基于LSTM的解码器训练了这种高斯注意机制。然后,我们使用预训练模型的参数初始化了Char-Net,并由Adam进行了优化。学习率设置为0.0001.我们将在此实验设置下训练的Char-Net表示为Char-Net[P]。

结果

表1中报告了我们的Char-Net[P]的识别精度。我们主要关注没有任何预定义词典的“无约束”场景文本识别。由于Jaderberg中的结果被限制在90K字典中,我们还包括使用相同字典对我们的Char-Net[P]在IC-03、IC-13和SVT上的预测进行后处理的结果。与以前的方法相比,我们的Char-Net[P]可以在所有六个测试数据集上实现最先进的性能。特别是,我们将我们的Char-Net[P]与RARE和STAR-Net进行了比较,这两个网络都专注于使用全局空间变换器对整个扭曲文本进行校正。我们发现,我们的Char-Net在几乎每一个基准测试上都能胜过这两种方法。请注意,尽管STAR Net在SVT-P上的性能与我们的Char Net相似,但我们的Char Net不需要像STAR Net那样额外的无失真训练数据。此外,我们的Char Net比STAR Net简单得多,STAR Net采用了26个卷积层,并具有强大的残差学习。

表1:公共基准上Char-Net[P]的场景文本识别准确率(%)。注意,即使在没有预定义词典的情况下进行识别,(用*标记)中的所有输出也被限制在90K词典中。

 通用场景文本识别实验

在本节中,我们将进一步评估我们的Char-Net在更一般的场景文本识别上的应用。在与先前方法的比较中,我们观察到它们的实验设置有三个限制,这些限制阻止识别器在更一般的场景中处理文本。首先,当识别具有大失真的场景文本时,将图像大小调整为100×32的过程会损害字符的纵横比(参见图5中的前三幅图像)。第二,之前的所有工作都集中在37类场景文本识别上。然而,在一般情况下,场景文本通常包含区分大小写的字符和不同的标点符号。表2给出了公共基准是否包含区分大小写字符或标点符号的基本事实标签的详细信息。第三,训练数据集SynthR不包含大量扭曲的场景文本,这可以从Jaderberg等人发布的合成脚本(https://bitbucket.org/jaderberg/text-renderer)中观察到。

 

图5:我们的Char Net识别了一些严重失真的场景文本示例。第一列和第二列分别是用于训练的原始图像和正方形图像。第三列显示了关注和校正的字符特征区域的对应图像块以及字符级别关注。注意,为了获得第二和第三图像的正确预测,我们根据预测的字符的旋转角度反转其顺序。

 

表2:公共基准点的ground truth标签详情。注意,IIIT5K中的文本图像(标有*)包含不同的标点符号,这些标点符号在ground truth中没有标记。

 在本节中,我们对Char-Net进行了以下修改,以解决更一般的场景文本识别问题:

  •  我们将文本图像填充为正方形,然后将其大小调整为100×100。这确保了在处理严重失真的场景文本时,图像中字符的纵横比保持不变,尤其是在大旋转时。
  • 我们训练我们的Char-Net进行96类识别(26个大写字母+26个小写字母+10个数字+33个标点+eos)。为了弥补SynthR中具有不同标点的场景文本的不足,我们结合了最近提出的另一个用于场景文本检测的数据集(Gupta、Vedaldi和Zisserman 2016),并创建了一个用于训练的新数据集SynthM2。
  • 我们执行了数据增强,以生成具有不同类型旋转和透视失真的场景文本用于训练。

我们将在这个新的实验环境下训练的Char-Net表示为Char-Net[N]。我们使用先前的Char-Net[P]作为预训练模型来初始化我们的Char-Net[P]。使用0.0001学习率的Adam来优化Char-Net[N]的收敛性。为了证明所提出模型中每个组件的有效性,我们还训练了Char-Net的五种变体(参见表3)。

表3:Char-Net[N]及其变体在公共基准上的场景文本识别精度“Hyper-Connect”、“TAM”、“HAM”和“CLE”分别代表字级编码器、传统注意力机制、分层注意力机制和字符级编码器的超连接。

 结果

我们的Char-Net[N]及其变体的结果如表3所示。所提出的Char-Net由具有超连接的单词级编码器、分层注意力机制和字符级编码器组成,可以在其所有变体模型中实现高度竞争或最先进的性能,尤其是在由许多严重失真的场景文本组成的IC-IST数据集上。

超连接

比较表3中Char-Net[N]和V1的结果,我们发现所提出的Char-Net架构从字级编码器中的超连接中获益匪浅。这是因为这些超连接缓解了仅使用深度CNN的最后一层的语义强但空间粗糙的特征的问题。这个问题对于小物体来说尤其严重。虽然我们通过将文本图像填充为正方形来保持字符的纵横比,但将正方形图像调整为100×100的过程不可避免地会导致字符的比例发生变化。在六个测试数据集中,场景文本的最小和最大长度分别为1和22。图像中字符的大小范围从100×100到5×5。随着字级编码器越来越深,最终特征图中保留的每个字符的空间信息急剧减少,特别是对于那些小字符。超连接可以通过合并不同级别的卷积特征来提高最终特征图中字符的空间分辨率。这为字符级编码器中的后续循环RoIWarp层和STN尽可能保留空间信息。这允许他们更好地定位每个感兴趣的特征区域并预测其空间失真。

HAM

从表3中,我们观察到,仅使用提出的HAM(V4)识别的场景文本已经可以实现比先前工作中使用的传统注意机制(V5)稍好的性能。然而,所提出的HAM最重要的优点是其灵活的架构,这使我们的Char-Net能够进一步使用字符级编码器来处理每个字符的失真。通过在字符级编码器中使用局部空间变换器网络,我们的Char-Net可以在几乎所有的基准测试上大大超过V5。特别是,所提出的Char-Net能够处理IC-IST数据集中具有较大失真的场景文本,如图5所示。

每个组件的有效性

我们注意到,我们的Char Net、V2、V3和V4在IC-03、IC-13、SVT和IIIT5k上的性能非常相似,这是四个常用的基准。这主要是因为这些数据集中场景文本的边界是紧密的、水平的和正面的。当涉及到SVT-P和IC-IST时,大多数图像都有较大失真,我们的Char-Net始终优于其变体更多省略的部件。

缺点

我们的Char-Net可以在识别大量失真文本方面达到最先进的性能。然而,当处理非常模糊的文本图像时,它会失败。图6显示了IC-IST的一些故障案例.

图6:Char-Net的一些失败案例。蓝色和黑色单词分别表示识别结果和ground truth。

 

结论

在本文中,我们提出了一种用于失真场景文本识别的新型字符感知神经网络(Char-Net)。由于我们新提出的分级注意机制,我们的Char-Net可以通过简单的局部变压器网络来关注和纠正单个字符区域,从而有效地处理场景文本中呈现的复杂形式的失真。在六个公共基准数据集上的实验表明,我们的Char Net可以实现最先进的性能。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值