图片生成模型——gated pixelCNN

介绍了基于PixelRNN/CNN的Gated PixelCNN模型,该模型通过引入门控机制和改进卷积策略解决了原有模型生成效果不佳及盲点问题,有效提升了图像生成质量和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

google DeepMind团队在《pixel recurrent neural networks》中提出了pixelRNN/CNN之后又发表了一篇论文——《Conditional Image Generation with PixelCNN Decoders》——这篇论文中提出了一个基于pixelRNN/CNN上进行改进的一个模型——gated pixelCNN。 gated pixelCNN依旧还是一个图片生成模型。它基于对像素点的概率分布进行建模,训练好模型之后,只要给这个模型一组描述性的向量(这些向量可以是一组具有描述性的标签,也可以是基于其他网络生成的特征信息),gated pixelCNN就可以生成大量的有变化的图片。 ———-

图片生成模型

生成模型是一种训练模型进行无监督学习的模型,给模型一组数据,希望从数据中学习到信息后的模型能够生成一组和训练集尽可能相近的数据。 图片生成模型就是更具体的指向说给模型一组图片作为训练集让模型进行学习,希望模型生成一组和训练集图片尽可能相近的图片。 下图是从斯坦福的课程上截下来的图: ![generative models](https://img-blog.csdn.net/20180129103240312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlrZV9yZWQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 图中可以看到图片生成模型更直观的理解就是要让生成的图片的像素点的联合分布和训练集的图片像素点的联合分布相近。 具体来说,图像生成模型又可以根据模型对像素点分布的预测情况进一步细分。 ![generative models的分类](https://img-blog.csdn.net/20180129103934889?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlrZV9yZWQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 其中当下最流行的三种图片生成器模型当属:pixelRNN/CNN、VAE、GAN。 -**自回归模型**:auto regressive models,代表模型pixelRNN/CNN -**变化自编码器**:VAE(variational auto encoder),一种概率图形模型,建模过程就是要达到数据的对数似然最大化的下限。过程中包括encode过程(将图片信息压缩)和decode过程(将压缩后的信息作为输入,进行图片再生成) -**生成对抗网络**:GAN(generative adversarial network),生成两个网络,分别是生成器网络和判别式网络来联合进行建模 ———-

pixelRNN/CNN

怎么想

现在需要构建一个模型来实现生成一张图片,那么最简单的想法就是一个像素点一个像素点的进行生成,同时将前面生成的像素点作为参考。相当于将预测一张图上所有像素点的联合分布转换为对条件分布的预测。
p(x)=i=1n2p(xi|x1,...,xi1)p(x)=∏i=1n2p(xi|x1,...,xi−1)
这里的xixi就是指在ii处的像素点。

怎么做

既然是用已经预测得到的像素来预测当前点的像素,自然能够想到其实这就是对一组有顺序的序列的预测,那么就应该可以想到用RNN来建模。因此这个模型就叫pixelRNN。 在pixelRNN中用了12个两维LSTM层。 在《pixel recurrent neural networks》这篇论文中,作者提到了用两种方式来构建不同的pixelRNN,由于本文是对gated pixelCNN进行梳理,所以这里就不对pixelRNN进行展开说明。

怎么改

由于使用了RNN模型,所以pixel RNN的训练时间特别长,需要对模型进行改进。作者又考虑到这是对图像进行处理,那为什么不可以使用 CNN来进行建模呢?用CNN构建出来的模型叫pixelCNN。 但是标准的卷积层会把所有像素的信息一次性进行提取,所以在pixelCNN中就是基于传统的CNN技术,用到masked convolutions以及去掉池化层来进行建模。

masked convolutions

这是一个5*5的掩膜卷积核。它的作用就是只保留中心点处之前的像素信息。
可以看到当要提取中心点的像素信息的时候,这个点的左边和前面的像素信息都得到了提取,右边和后面的像素信息被“遮盖”住了,而关于这个点的信息的提取论文中又提出了两种方式进行获取(这两种方式对应了mask A和mask B这两种掩膜方式)。

可以看到两种mask的区别就是在信息传递上RGB这三个通道中像素点信息是否传递给自己这一点上有不同。可以看到,maskA这种掩膜的传递方式是不传递给自己,maskB这种方式是信息要传递给自己。
这里还需要进行说明,为什么三个通道之间的传递关系是这样的,因为每个点的像素信息是由RGB这三个通道的值构成的,所以像素的信息传递不仅仅是基于前后的context的像素点信息的传递,还有自己的三个通道上面的值的一个传递。而按照RGB的位置顺序来说,R算是前面的信息,G属于中间的信息,B是后面的信息,所以在记录当前像素点的R通道上面的信息时就不能把后面的GB信息当作已知条件,同样的,在记录当前像素点的B通道上的信息时可以将RG两个通道上的信息当作已知条件。所以可以看到有这样的传递关系。
论文中提到,在pixelCNN中,只有在第一个卷积层上使用了maskA,后面所有的层上都是使用的maskB这种掩膜。
可以看到两种mask的区别就是在信息传递上RGB这三个通道中像素点信息是否传递给自己这一点上有不同。可以看到,maskA这种掩膜的传递方式是不传递给自己,maskB这种方式是信息要传递给自己。
这里还需要进行说明,为什么三个通道之间的传递关系是这样的,因为每个点的像素信息是由RGB这三个通道的值构成的,所以像素的信息传递不仅仅是基于前后的context的信息传递,还有自己的三个通道上面的值的一个传递。而按照RGB的位置顺序来说,R算是前面的信息,G属于中间的信息,B是后面的信息,所以在记录当前像素点的R通道上面的信息时就不能把后面的GB信息当作已知条件,同样的,在记录当前像素点的B通道上的信息时可以将RG两个通道上的信息当作已知条件。所以可以看到有这样的传递关系。
论文中提到,在pixelCNN中,只有在第一个卷积层上使用了maskA,后面所有的层上都是使用的maskB这种掩膜。

最左边的那一列是作者给出的关于pixelCNN的一个结构示意图。 由于pixelRNN它还是一个RNN,所以不管是生成图片的过程还是训练的过程,它都是以序列的形式在进行,所以速度较慢,而pixelCNN在训练的时候得益于卷积可以并行运算,所以训练时间较pixelRNN有提高,但是最后生成图片的效果没有pixelRNN的效果好。 最后论文中还构建了一个multi-scale version 的pixelRNN模型,这里也不展开多说。 ———-

gated pixelCNN

为什么要从pixelCNN到gated pixelCNN

gated pixelCNN是在pixelCNN上进行了某些改进的到的,为什么要进行这些改进主要有以下两个原因: 第一,从表现效果上面看,pixelCNN的速度虽然比pixelRNN快,但是模型的效果并没有它好,所以希望能够在pixelCNN的速度基础上通过某些改进提高模型最后的表现效果。 第二,pixelCNN存在“盲点”问题。在生成图像的时候因为使用了mask的原因,所以存在“盲点”的问题。下图中灰色的区域就是提取当前像素点的信息的时候存在的“盲点”。

(所谓的“盲点”就是指当前的像素值信息提取的过程中无论如何都不会包括到灰色区域的像素信息。)

怎么改

作者分别针对两个需要改进的方面提出了相应的解决方案:

表现效果

为什么pixel RNN的效果不错,可以推测是因为pixelRNN模型中每一个LSTM层都能够获取到之前像素的所有信息。
而在CNN中,随着卷积层的层数的增加,获取到的信息也在不断增多。
所以如果能够合理增加pixelCNN中的卷积层,那么有可能提高其表现效果。
另外一个方面,pixelRNN表现效果不错,是因为RNN可以对更复杂的结构进行建模。因为RNN模型结构中存在大量的单元(输入门、遗忘门、输出门),这些单元可以帮助模型的神经元之间有更加复杂的联系。所以,在对pixel CNN的改进工作中,可以将masked convolutions之间的简单线性链接单元换成和RNN中门与门之间的激活方式一样的连接方式:

y=tanh(Wk,fx)σ(Wk,gx)

其中σσ是sigmoid激活函数,k是指这是第几层,⨀指元素之间的点乘运算,*指卷积运算
这样的单元相当于在pixelCNN中也引入了“门”的概念,这也是为什么改进之后的这个模型叫gated pixelRNN的原因。

“盲点”问题

要如何改进“blind spot”问题,论文中提到将两种卷积网络进行结合使用,论文中分别叫这两种卷积网络horizonal stack和vertical stack。
Horizonal stack是将当前像素所在的行(当然也是指当前像素之前的像素值)作为条件进行卷积,所以horizonal stack的卷积核的规格为1*n,在horizonal stack中仍然要使用掩膜技术来实现只提取前面的信息。
Vertical stack是将当前像素所在的行的前面所有行当作条件来进行卷积,由于vertical stack是对前面的信息进行提取,所以vertical stack中不进行掩膜操作。

将每一层的两种stacks的结果进行结合,就可以得到当前像素点的信息,这样就消除了“盲点”问题。

所以使用门的技术和更多的卷积层来提高pixelCNN的表现效果,使用horizonal stack和vertical stack结合的方式来解决“盲点”问题之后,就得到了论文最终想要的模型gated pixelCNN。

A single layer in the gated pixelCNN architecture

改后的gated pixelCNN的作用

论文中提到

这仍然是一个基于像素的概率分布进行预测的图像生成器(生成式模型)。

论文中还提到

只要给这个模型一组描述性的向量,就可以生成相应的图片。提供给模型的向量可以有两种:可以是一组描述性的标签;也可以是基于其他网络生成的向量。
这两种向量的生成效果具体来说的话,用ImageNet数据集中的分类标签(一组描述性的标签)进行生成图像,这个模型可以生成大量多变的真实场景,比如说动物、风景等等;如果是用由其它卷积网络中间生成的没见过的人脸照片(其他网络生成的向量)输入pixel CNN模型中,则可以生成这个人不同的表情、姿势等等的图片。

另外,论文中也提到

如果把门这种元件纳入条件pixelCNN中,则可以把这个条件pixelCNN当作图片自动编码器的解码器,可以使pixelCNN的性能达到和pixelRNN的性能一样好,但计算时间减小很多。

下面将对这三种情况进行具体的阐述:

unconditional gated pixelCNN

unconditional gated pixelCNN是指直接用gated pixelCNN生成图像。
gated pixelCNN本身还是一个基于像素的概率分布进行预测的图像生成器(生成式模型),所以gated pixelCNN仍然可以在训练好模型之后直接进行图片生成。在论文中作者在CIFAR-10这个数据集上训练了gated pixelCNN模型,并基于同一个数据集进行训练的生成模型进行了对比。

Table 1: Test set performance of different models on CIFAR-10 in bits/dim (lower is better), training performance in brackets.

这里的NLL值是指负对数似然的值,是用来衡量一个生成模型的总体效果的,这个值越小越好。
可以看到gated pixelCNN的效果已经在pixelCNN上得到了很大的提升,而且和pixel RNN的效果已经很接近了(虽然还是赶不上pixelRNN)。

Table 2: Performance of different models on ImageNet in bits/dim (lower is better), training performance in brackets.

可以看到,在ImageNet这个数据集上,可以看到gated pixel CNN的效果已经非常好了。

conditional gated pixelCNN

Gated pixel CNN作为一个条件图片生成器就是指,在预测像素点的概率的时候,添加一些先验信息来使生成的图片往我们想要的方向生成。上面提到的给模型一组向量来生成图片就是指作为conditional gated pixelCNN的作用。

p(X|h)=i=1n2p(xi|x1,...,xi1,h)p(X|h)=∏i=1n2p(xi|x1,...,xi−1,h)

y=tanh(Wk,fX+VTk,fh)σ(Wk,gx+VTk,gh)y=tanh(Wk,f∗X+Vk,fTh)⨀σ(Wk,g∗x+Vk,gTh)

这里的hh就是我们给的一个先验信息,就是前面提到的那组“向量”。h可以以两种方式提供给模型:一组描述性的标签;基于其他网络生成的向量。

hh是a one-hot encoding that specifies a class

h是a one-hot encoding that specifies a class,也就是指一组描述性的标签的时候,gated pixel CNN可以准确的生成这个种类,同时生成这个种类在不同的地方摆出不同造型的图片。
更通俗的说hh只告诉模型要生成的东西是什么,不告诉模型这个东西在哪里的时候,训练好的模型会生成大量基于不同地点的图片。
更NB的地方是,作者指出,h甚至可以直接是imagenet 这个数据集中1000类别里面的类别id,最后得到了大量的真实场景下的这些类别的图片。
在作者的实验中,作者训练pixelCNN生成了八种不同类型的动物图片,可以看到这些图片角度光线等等环境条件是不同的,但是场景相似。

Figure 3: Class-Conditional samples from the Conditional PixelCNN.

hh是基于其他网络生成的向量

h是一个用由其它卷积网络中间生成的没见过的人脸信息,模型将会生成这个人在不同的场景下摆出不同姿势的新图片。
作者在训练过程中用Flicker这个数据集中的人脸图片来对gated pixelCNN进行训练,然后给模型一张不在整个训练集中的完全陌生的人脸信息给模型,最后模型生成了大量这个人的新图片。

Figure 4: Left: source image. Right: new portraits generated from high-level latent representation.

gated pixelCNN auto-encoder

最后Gated pixelCNN还可以在一个auto-encoder中用作一个强有力的图片decoder。
就像前面介绍VAE中介绍到的那样,一个auto-encoder由两部分组成,一个encoder一个decoder。
在将gated pixelCNN 用作一个auto-encoder的时候,encoder部分就是将输入的图片降维变成一个低纬度表示的特征,这个特征就是在前面conditional pixelCNN中提到的那个hh,然后将这个h送入decoder中,将hh进行重构,还原为原来的图片。Gated pixelCNN用作一个decoder的实质其实还是主要实现了conditional pixelCNN的功能,它将encoder中生成的h作为条件输入,尽可能的还原为原始图片。
在作者的实验中,作者在ImageNet上训练了一个gated pixelCNN auto-encoder,和使用MSE进行模型选择的convolutional auto-encoder,最后生成的图片效果如下:

Figure 6: Left to right: original image, reconstruction by an auto-encoder trained with MSE,conditional samples from a PixelCNN auto-encoder. Both auto-encoders were trained end-to-end with a m = 10-dimensional bottleneck and a m = 100 dimensional bottleneck.

最左边的这个张图是原图,中间的是用卷积auto-encoder生成的图片,右边的是gated pixel CNN生成的图片。可以看到,卷积auto-encoder是尽力去重构真实的图像,而gated pixelCNN在尽力去生成不同的但是相似的图像。


总结

最后作者对整个模型进行了一个总结,并提出了展望,作者指出,从前面的各种案例中可以看到,gated pixel CNN可以生成在不同光照条件下的图片,所以gated pixel CNN可以客服生成模型中训练集光照条件不好的问题。

<think>我们正在讨论如何在PixelCNN自回归模型中引入条件信息以实现条件生成任务。根据引用资料,PixelCNN是一种自回归生成模型,它通过掩码卷积确保每个像素的生成仅依赖于之前的像素(通常按光栅扫描顺序:从左到右,从上到下)。条件生成意味着我们希望生成的图像不仅依赖于之前的像素,还依赖于某些外部条件(如类别标签、文本描述或其他模态的信息)。 引入条件信息的方法通常包括: 1. **条件输入作为额外通道**:将条件信息(例如类别标签的嵌入向量)作为额外的输入通道或特征图,与图像输入一起输入到网络中。这可以通过将条件信息复制到与图像相同空间分辨率的特征图,然后与图像输入拼接(concatenate)来实现。 2. **条件偏置(Conditional Biases)**:在网络的某些层(尤其是输出层之前)添加条件偏置,即使用条件信息来调整激活值。例如,使用一个条件网络(如一个小型神经网络)将条件信息映射为偏置向量,然后加到特征图上。 3. **门控机制**:利用门控机制(如Gated Activation Unit)来控制条件信息的影响。例如,在Gated PixelCNN中,条件信息可以用于调制门控单元的激活。 4. **条件归一化**:使用条件归一化层(如Conditional Batch Normalization或Conditional Layer Normalization),其中归一化的缩放(scale)和偏移(shift)参数由条件信息决定。 具体到PixelCNN,我们可以参考PixelCNN的变体,如Conditional PixelCNN(用于类别条件生成)或PixelCNN++(其中使用了条件信息)。下面将详细描述一种常见的方法:将条件信息作为额外输入。 步骤: 1. **条件信息的表示**:假设我们有一个条件变量c(例如类别标签),首先将其嵌入为一个向量(使用嵌入层,如果c是离散的)或者通过一个小的全连接网络(如果c是连续的)。假设我们得到一个向量h_c。 2. **空间复制**:将向量h_c复制到与当前特征图相同的空间尺寸(高度和宽度),形成一个形状为[H, W, D]的条件特征图(其中D是嵌入向量的维度)。 3. **特征拼接**:在网络的输入层或者中间层,将条件特征图与图像特征图在通道维度上拼接(concatenate)。这样,后续的卷积层就可以同时利用图像信息和条件信息。 注意:在自回归模型中,我们必须确保条件信息不会泄露未来的信息。由于条件信息是全局的(例如整个图像的类别标签),并且与像素生成顺序无关,因此可以安全地使用。 另一种方法是使用条件偏置,例如在卷积层之后加上一个由条件信息决定的偏置项: output = conv_layer(input) + W * h_c 其中W是一个将条件向量h_c映射到与卷积输出通道数相同的向量的权重矩阵(通常通过一个线性层实现),然后将其扩展为空间特征图并加到每个位置。 在PixelCNN的原始论文中,条件信息(如类别标签)是通过在第一个卷积层之前拼接一个条件特征图(通过嵌入和空间复制得到)来引入的。在后续的层中,条件信息也可以被重复利用。 下面是一个简单的伪代码示例(使用PyTorch风格)来说明如何在输入层引入条件信息: ```python import torch import torch.nn as nn class ConditionalPixelCNN(nn.Module): def __init__(self, num_classes, input_channels=1, embedding_dim=32, hidden_dim=64): super().__init__() self.embedding = nn.Embedding(num_classes, embedding_dim) # 输入通道:原始图像通道 + 条件嵌入的通道(1个通道,因为我们将嵌入向量视为1个通道?但通常我们会将嵌入向量复制到多个通道,所以这里我们使用embedding_dim个通道) self.conv1 = nn.Conv2d(input_channels + embedding_dim, hidden_dim, kernel_size=3, padding=1) # 注意:这里需要使用掩码卷积,但我们只关注条件引入,所以省略掩码细节 # 后续的卷积层... def forward(self, x, c): # x: 图像输入 [batch, channels, height, width] # c: 条件(类别标签)[batch] # 嵌入条件 c_emb = self.embedding(c) # [batch, embedding_dim] # 将条件嵌入向量扩展为空间特征图 [batch, embedding_dim, height, width] c_emb = c_emb.view(c_emb.size(0), c_emb.size(1), 1, 1).expand(-1, -1, x.size(2), x.size(3)) # 拼接条件和图像 x = torch.cat([x, c_emb], dim=1) # 在通道维度拼接 # 通过卷积层 x = self.conv1(x) # ... 后续网络 return x ``` 然而,请注意,在PixelCNN中,第一个卷积层应该是掩码卷积(A类型或B类型)以确保自回归属性。条件信息的引入不会破坏自回归性质,因为条件信息是全局的,不依赖于像素位置(除了空间复制外,每个位置的条件信息是相同的)。 在更深的层中,我们也可以再次引入条件信息(例如,在每个残差块中加入条件偏置),以增强条件信息的影响。 总结:在PixelCNN中引入条件信息的主要方法是将条件信息嵌入并复制到空间尺寸,然后与图像特征图拼接,或者通过加法操作(条件偏置)融合到特征图中。这样,模型在生成每个像素时,都会考虑到全局的条件信息。 相关问题: 1. 条件PixelCNN在训练时如何利用条件信息? 2. 除了类别标签,还有哪些类型的条件信息可以用于条件生成? 3. 条件PixelCNN在哪些实际应用中得到了使用? 4. 条件信息是否会影响PixelCNN的自回归生成速度?</think>### 如何在PixelCNN中引入条件信息实现条件生成 在PixelCNN自回归模型中引入条件信息(如类别标签、文本描述等)可实现**条件图像生成**(例如生成特定类别的图像)。核心思路是将条件信息**融入概率预测过程**,使每个像素的生成概率同时依赖先前像素和外部条件。以下是主流方法及实现步骤: --- ### 一、条件信息引入方法 1. **条件拼接(Conditional Concatenation)** - 将条件信息(如类别标签的嵌入向量)复制到与输入图像相同的空间尺寸,作为额外通道拼接到输入中。 - **数学表示**: 设条件向量为 $c$,输入图像为 $x$,则修改后的输入为: $$ \tilde{x} = [x, \ \text{repeat}_{H \times W}(c)] $$ 其中 $H, W$ 为图像高宽,$[\cdot]$ 表示通道拼接。 2. **条件偏置(Conditional Bias)** - 在网络输出层添加由条件信息生成的偏置项,直接调整像素概率分布: $$ p(x_i | x_{<i}, c) = \text{softmax}(f(x_{<i}) + g(c)) $$ 其中 $f$ 是PixelCNN的输出,$g$ 是将条件映射到偏置的神经网络。 3. **条件归一化(Conditional Normalization)** - 在残差块中使用**条件批归一化(Conditional BatchNorm)**: $$ y = \gamma_c \cdot \frac{x - \mu}{\sigma} + \beta_c $$ 其中 $\gamma_c, \beta_c$ 由条件向量 $c$ 通过全连接层生成[^3][^5]。 --- ### 二、实现步骤(以类别条件生成为例) #### 1. 条件信息编码 ```python import torch import torch.nn as nn class ConditionalPixelCNN(nn.Module): def __init__(self, num_classes, emb_dim=32): super().__init__() # 类别标签嵌入层 self.label_emb = nn.Embedding(num_classes, emb_dim) ``` #### 2. 条件信息融入网络 ```python def forward(self, x, labels): # 编码条件信息 [batch_size, emb_dim] c = self.label_emb(labels) # 方法1: 条件拼接 (扩展为空间尺寸) c_spatial = c.view(c.size(0), c.size(1), 1, 1).repeat(1, 1, x.size(2), x.size(3)) x = torch.cat([x, c_spatial], dim=1) # 通道维度拼接 # 通过掩码卷积层 (PixelCNN核心) x = self.masked_conv1(x) x = self.gated_activation(x) # 方法2: 条件偏置 (输出层调整) logits = self.output_conv(x) bias = self.bias_net(c) # 全连接网络生成偏置 logits = logits + bias.unsqueeze(2).unsqueeze(3) # 空间对齐 return logits ``` #### 3. 训练与生成过程 - **训练**:输入图像 $x$ 和对应条件 $c$,最大化条件对数似然: $$ \mathcal{L} = \sum_{i} \log p(x_i | x_{<i}, c) $$ - **生成**:从左上角像素开始,逐像素采样: ```python generated = torch.zeros_like(image) for i in range(height): for j in range(width): # 当前像素依赖先前像素 + 条件 logits = model(generated, labels) pixel_dist = torch.distributions.Categorical(logits=logits[:, :, i, j]) generated[:, :, i, j] = pixel_dist.sample() ``` --- ### 三、关键注意事项 1. **掩码卷积不变性**:条件信息需通过**无未来泄露**的方式引入(如全局向量),确保自回归性质不被破坏[^3][^4]。 2. **信息瓶颈**:若条件信息复杂(如文本),可先用CNN/RNN编码为紧凑向量。 3. **效率优化**:生成过程仍是顺序的,但条件计算可并行化[^5]。 > 示例应用:在MNIST上训练条件PixelCNN,输入类别标签生成指定数字(如仅生成"7")。 --- ### 相关问题 1. **条件PixelCNN与无条件模型在训练目标上有何区别?** 2. **如何将文本描述作为条件信息融入PixelCNN?** 3. **条件PixelCNN在图像修复任务中如何应用?** 4. **引入条件信息是否会显著增加PixelCNN的计算复杂度?** [^1]: 自回归模型通过顺序生成像素实现图像合成,条件信息需融入概率预测过程。 [^3]: PixelCNN使用掩码卷积保持自回归性,条件信息通过拼接或归一化注入。 [^4]: 条件生成需确保不泄露未来信息,全局条件向量是安全方案。 [^5]: 条件归一化层通过缩放和偏移调整特征分布,实现高效条件控制。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值