光照对抗攻击

引言

该论文的创新点很奇特是关于光学对抗攻击类的文章,即通过人为刻意制造的光照分布从而对目标分类器进行攻击,而无需实际接触对象。作者在论文中提出的方法 O P A D \mathrm{OPAD} OPAD其原理是使用结构化照明来改变目标对象的外观。该系统由一台低成本投影仪、一台摄像机和一台计算机组成。该问题的挑战是投影仪辐射响应的非线性和场景的空间变化光谱响应。在传统方法中生成的攻击在此设置中不起作用,除非对其进行校准以补偿此类投影仪相机型号。所提出的解决方案将投影仪-摄像机模型纳入对抗性攻击优化中,由此导出了新的攻击公式。实验结果也证明了该方法的有效性,OPAD可以在白盒、黑盒、目标和无目标攻击的背景照明下对真实3D对象进行光学攻击。作者也从理论上分析了用于量化系统的基本性能极限。

投影仪-照相机模型

 令 x ∈ R 2 x \in \mathbb{R}^2 xR2表示的是一个二维图像,发送到投影仪的源照明图案的第 x x x个像素表示为 f ( x ) = [ f R ( x ) , f G ( x ) , f B ( x ) ] ⊤ ∈ R 3 , f(x)=[f_R(x),f_G(x),f_B(x)]^{\top}\in \mathbb{R}^3, f(x)=[fR(x),fG(x),fB(x)]R3,整个源图像表示为 f = [ f ( x 1 ) , f ( x 2 ) , ⋯   , f ( x N ) ] ⊤ ∈ R 3 N , {\bf{f}}=[\boldsymbol{f}(x_1),\boldsymbol{f}(x_2),\cdots,\boldsymbol{f}(x_N)]^{\top}\in \mathbb{R}^{3N}, f=[f(x1),f(x2),,f(xN)]R3N,其中 N N N表示的是图像像素得个数。源图像通过投影仪投影出来的图像表示为 g = T ( f ) , {\bf{g}}=\mathcal{T}({\bf{f}}), g=T(f),其中 g ∈ R 3 N {\bf{g}}\in \mathbb{R}^{3N} gR3N表示被观察到的图像,映射函数为 T : R 3 N → R 3 N \mathcal{T}:\mathbb{R}^{3N} \rightarrow \mathbb{R}^{3N} T:R3NR3N。在特定的像素 x x x的映射被定义为 T ( x ) : R 3 → R 3 \mathcal{T}^{(x)}: \mathbb{R}^3 \rightarrow \mathbb{R}^3 T(x):R3R3,并且有 g ( x ) = T ( x ) ( f ( x ) ) , \boldsymbol{g}(x)=\mathcal{T}^{(x)}(f(x)), g(x)=T(x)(f(x)),进一步简化可以写成 g ( x ) = T ( f ( x ) ) g(x)=\mathcal{T}(f(x)) g(x)=T(f(x))
 第一个组件是投影仪的辐射响应组件,具体示意图如下所示。源图片的像素点 f ( x ) ∈ R 3 f(x)\in \mathbb{R}^3 f(x)R3经投影仪非线性变换会改变每个通道的密度,函数 M = [ M R , M G , M B ] \mathcal{M}=[\mathcal{M}_R,\mathcal{M}_G,\mathcal{M}_B] M=[MR,MG,MB]将源图像信号转化为光学信号 z ( x ) ∈ R 3 z(x)\in \mathbb{R}^3 z(x)R3,具体公式为 z ( x ) = d e f [ z R ( x ) z G ( x ) z B ( x ) ] = [ M R ( f R ) M G ( f G ) M B ( f B ) ] = M ( f ( x ) ) z(x)\stackrel{\mathrm{def}}{=}\left[\begin{array}{l}z_R(x)\\z_G(x)\\z_B(x)\end{array}\right]=\left[\begin{array}{l}\mathcal{M}_R(f_R)\\ \mathcal{M}_G(f_G)\\\mathcal{M}_B(f_B)\end{array}\right]=\mathcal{M}(f(x)) z(x)=defzR(x)zG(x)zB(x)=MR(fR)MG(fG)MB(fB)=M(f(x))
在这里插入图片描述
 第二个组件是投影仪的光谱响应组件,具体示意图如下所示。投影仪使用颜色转换将 z ( x ) z(x) z(x)转换为 g ( x ) \boldsymbol{g}(x) g(x),具体的公式如下所示: g ( x ) = V ( x ) z ( x ) + b ( x ) , \boldsymbol{g}(x)=\boldsymbol{V}^{(x)}z(x)+\boldsymbol{b}^{(x)}, g(x)=V(x)z(x)+b(x),其中 V ( x ) \boldsymbol{V}^{(x)} V(x)是一个 3 × 3 3\times 3 3×3的混合矩阵,具体定义为 V ( x ) = [ V R R ( x ) V R G ( x ) V R B ( x ) V G R ( x ) V G G ( x ) V G B ( x ) V B R ( x ) V B G ( x ) V B B ( x ) ] \boldsymbol{V}^{(x)}=\left[\begin{array}{lll}\boldsymbol{V}^{(x)}_{RR} & \boldsymbol{V}^{(x)}_{RG} & \boldsymbol{V}^{(x)}_{RB}\\ \boldsymbol{V}^{(x)}_{GR} & \boldsymbol{V}^{(x)}_{GG} & \boldsymbol{V}^{(x)}_{GB}\\ \boldsymbol{V}^{(x)}_{BR} & \boldsymbol{V}^{(x)}_{BG} & \boldsymbol{V}^{(x)}_{BB} \end{array}\right] V(x)=VRR(x)VGR(x)VBR(x)VRG(x)VGG(x)VBG(x)VRB(x)VGB(x)VBB(x)向量 b ( x ) \boldsymbol{b}^{(x)} b(x)表示的是光照的偏置项,它被定义为 b ( x ) = [ b R ( x ) , b G ( x ) , b B ( x ) ] ∈ R 3 \boldsymbol{b}^{(x)}=[\boldsymbol{b}^{(x)}_R,\boldsymbol{b}^{(x)}_G,\boldsymbol{b}^{(x)}_B]\in \mathbb{R}^3 b(x)=[bR(x),bG(x),bB(x)]R3.
在这里插入图片描述
 假定输入的图像为 f {\bf{f}} f,则最终观察到的输出为 g = V M ( f ) + b ⏟ T ( f ) \mathbf{g}=\underbrace{\mathbf{V} \mathcal{M}(\mathbf{f})+\mathbf{b}}_{\mathcal{T}(\mathbf{f})} g=T(f) VM(f)+b其中 V \mathbf{V} V是一个对角矩阵 V = diag ⁡ { V ( x 1 ) , V ( x 2 ) , … , V ( x N ) } ∈ R 3 N × 3 N \mathbf{V}=\operatorname{diag}\left\{\boldsymbol{V}^{\left(x_{1}\right)}, \boldsymbol{V}^{\left(x_{2}\right)}, \ldots, \boldsymbol{V}^{\left(x_{N}\right)}\right\} \in \mathbb{R}^{3 N \times 3 N} V=diag{V(x1),V(x2),,V(xN)}R3N×3N b \mathbf{b} b是整体的偏置项 b = [ b ( x 1 ) , … , b ( x N ) ] T ∈ R 3 N \mathbf{b}=\left[\boldsymbol{b}^{\left(x_{1}\right)}, \ldots, \boldsymbol{b}^{\left(x_{N}\right)}\right]^{T} \in \mathbb{R}^{3 N} b=[b(x1),,b(xN)]TR3N

O P A D \mathrm{OPAD} OPAD算法

O P A D \mathrm{OPAD} OPAD算法是一种元程序,它可以嵌入到任何一个现有的最大化类型的对抗损失中。如下图所示, O P A D \mathrm{OPAD} OPAD中的损失最大化不同于传统图像数字对抗攻击。传统的对抗攻击是将对抗扰动直接加在输入图像中。在 O P A D \mathrm{OPAD} OPAD中,输入的 f 0 {\bf{f}}_0 f0是均匀的光照,而且对抗扰动是直接加在光照空间中。在这里插入图片描述

O P A D \mathrm{OPAD} OPAD损失最大化

 介绍算法时,主要以有目标白盒攻击为例,其它形式的攻击可以相似形式进行扩展。考虑一个均匀光照图像 f 0 {\bf{f}}_0 f0,干净的样本则为 g 0 = V M ( f 0 ) + b {\bf{g}}_0={\bf{V}}\mathcal{M}({\bf{f}}_0)+{\bf{b}} g0=VM(f0)+b。主要目标是使得分类器将标签分类出错为指定的标签 ℓ t a r g e t \ell_{target} target,具体公式如下所示:
δ = arg max ⁡ δ L ( T ( f + δ ) , ℓ t a r g e t ) = arg max ⁡ δ L ( V M ( f + δ ) + b , ℓ t a r g e t ) \begin{aligned}\delta&=\argmax\limits_{\delta} \mathcal{L}(\mathcal{T}({\bf{f}+\delta}),\ell_{target})\\&=\argmax\limits_{\delta}\mathcal{L}({\bf{V}\mathcal{M}}({\bf{f}+\delta})+{\bf{b}},\ell_{target})\end{aligned} δ=δargmaxL(T(f+δ),target)=δargmaxL(VM(f+δ)+b,target)在大多数传统的对抗攻击方法中,对抗扰动 δ \delta δ在输入空间中被约束 ∥ δ ∥ < ϵ \|\delta\|< \epsilon δ<ϵ,以确保扰动不会过大。在该论文中,对抗扰动的约束分为两部分:

  • 扰动照明必须是物理上可以实现的,这意味着需要满足如下约束, 0 ≤ b 0 + δ ≤ 1 0 \leq {\bf{b}}_0 + \delta \le 1 0b0+δ1

  • 对抗扰动的约束在投影仪的输出空间中进行约束,使得看到对抗样本图像与真实样本差距不大,具体的公式如下所示: ∥ ( V M ( f 0 ) + b ) ⏟ =  def  g 0 − ( V M ( f 0 + δ ) + b ) ⏟ = g  def  ∥ < α \|\underbrace{\left(\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}\right)+\mathbf{b}\right)}_{\stackrel{\text { def }}{=} \mathbf{g}_{0}}-\underbrace{\left(\mathbf{V M}\left(\mathbf{f}_{0}+\boldsymbol{\delta}\right)+\mathbf{b}\right)}_{\stackrel{\text { def }} \mathbf{=g}}\|<\alpha = def g0 (VM(f0)+b)=g def  (VM(f0+δ)+b)<α
     将这些约束条件加入到公式中,通过求解优化得到对抗扰动 δ ∗ = argmax ⁡ δ L ( V M ( f 0 + δ ) + b , ℓ target  )  subject to  ∥ ( V M ( f 0 ) + b ) − ( V M ( f 0 + δ ) + b ) ∥ < α 0 ≤ f 0 + δ ≤ 1. \begin{aligned} \boldsymbol{\delta}^{*}=& \operatorname{argmax}_{\delta} \mathcal{L}\left(\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}+\boldsymbol{\delta}\right)+\mathbf{b}, \ell_{\text {target }}\right) \\ & \text { subject to } \\ &\left\|\left(\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}\right)+\mathbf{b}\right)-\left(\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}+\boldsymbol{\delta}\right)+\mathbf{b}\right)\right\|<\alpha \\ & 0 \leq \mathbf{f}_{0}+\boldsymbol{\delta} \leq 1 . \end{aligned} δ=argmaxδL(VM(f0+δ)+b,target ) subject to (VM(f0)+b)(VM(f0+δ)+b)<α0f0+δ1.

优化问题简化

 求解如上优化问题是比较困难的,但是可以对上问题进行简化,简化过后的公式为
η ∗ = argmax ⁡ η L ( g 0 + η , ℓ target  )  subject to  ∥ η ∥ < α , 0 ≤ f 0 + δ ≤ 1. \begin{gathered} \boldsymbol{\eta}^{*}=\underset{\eta}{\operatorname{argmax}} \quad \mathcal{L}\left(\mathbf{g}_{0}+\boldsymbol{\eta}, \ell_{\text {target }}\right) \\ \text { subject to } \quad\|\boldsymbol{\eta}\|<\alpha, \\ 0 \leq \mathbf{f}_{0}+\boldsymbol{\delta} \leq 1 . \end{gathered} η=ηargmaxL(g0+η,target ) subject to η<α,0f0+δ1.其中对抗扰动 η ∗ \boldsymbol{\eta^{*}} η满足如下约束条件 Ω = { η ∣ η = V M ( f 0 + δ ) − V M ( f 0 ) , c ℓ ≤ δ ≤ c u } \Omega=\left\{\boldsymbol{\eta} \mid \boldsymbol{\eta}=\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}+\boldsymbol{\delta}\right)-\mathbf{V} \mathcal{M}\left(\mathbf{f}_{0}\right), \quad \boldsymbol{c}_{\ell} \leq \boldsymbol{\delta} \leq \boldsymbol{c}_{u}\right\} Ω={ηη=VM(f0+δ)VM(f0),cδcu}进而可以得到最终的优化目标和约束条件,如下所示 η ∗ = argmax ⁡ η ∈ Ω L ( g 0 + η , ℓ target  )  subject to  ∥ η ∥ < α \begin{aligned} \boldsymbol{\eta}^{*}=& \underset{\boldsymbol{\eta} \in \Omega}{\operatorname{argmax}} \mathcal{L}\left(\mathbf{g}_{0}+\boldsymbol{\eta}, \ell_{\text {target }}\right) \\ & \text { subject to } \quad\|\boldsymbol{\eta}\|<\alpha \end{aligned} η=ηΩargmaxL(g0+η,target ) subject to η<α

O P A D \mathrm{OPAD} OPAD程序

 如果忽略约束集 Ω \Omega Ω,则本论文提出的方法就是一个标准的基于梯度的对抗攻击,其迭代更新公式可以写为: η t + 1 = m y attack ⁡ ( f 0 , η t , ℓ ) \boldsymbol{\eta}^{t+1}=\mathrm{my} \operatorname{attack}\left(\mathbf{f}_{\mathbf{0}}, \boldsymbol{\eta}^{t}, \ell\right) ηt+1=myattack(f0,ηt,)其中  my attack  ( ⋅ ) \text { my attack }(\cdot)  my attack ()表示基于梯度攻击方式的一种。如果使用的是带有 ℓ ∞ \ell_{\infty} P G D \mathrm{PGD} PGD攻击,则有 η t + 1 = α ⋅ sign ⁡ { ∇ L ( g 0 + η t , ℓ target  ) } \boldsymbol{\eta}^{t+1}=\alpha \cdot \operatorname{sign}\left\{\nabla \mathcal{L}\left(\boldsymbol{g}_{0}+\boldsymbol{\eta}^{t}, \ell_{\text {target }}\right)\right\} ηt+1=αsign{L(g0+ηt,target )}
 在约束集 Ω \Omega Ω存在的情况下, 每次迭代更新将涉及一个投影: η t + 1 = Project ⁡ Ω { my ⁡ attack ⁡ ( f 0 , η t , ℓ target  ) ⏟ = η t + 1 2 } \boldsymbol{\eta}^{t+1}=\operatorname{Project}_{\Omega}\{\underbrace{\operatorname{my} \operatorname{attack}\left(\mathbf{f}_{\mathbf{0}}, \boldsymbol{\eta}^{t}, \ell_{\text {target }}\right)}_{=\boldsymbol{\eta}^{t+\frac{1}{2}}}\} ηt+1=ProjectΩ{=ηt+21 myattack(f0,ηt,target )}投影操作将当前估计从输出空间反转到输入空间,并在输入空间中进行剪裁。然后,将信号重新映射回输出空间。在数学上,投影定义为 Project ⁡ Ω ( η t + 1 2 ) = T ( [ T − 1 ( g 0 + η t + 1 2 ) ] [ 0 , 1 ] ) − g 0 \operatorname{Project}_{\Omega}\left(\boldsymbol{\eta}^{t+\frac{1}{2}}\right)=\mathcal{T}\left(\left[\mathcal{\mathcal { T }}^{-1}\left(\mathbf{g}_{0}+\boldsymbol{\eta}^{t+\frac{1}{2}}\right)\right]_{[0,1]}\right)-\mathbf{g}_{0} ProjectΩ(ηt+21)=T([T1(g0+ηt+21)][0,1])g0其中 T \mathcal{T} T表示前向映射, [ ⋅ ] 0 , 1 [\cdot]_{0,1} []0,1表示截取操作。

理解 O P A D \mathrm{OPAD} OPAD的几何原理

 作者通过考虑线性分类器来分析 O P A D \mathrm{OPAD} OPAD的基本极限。考虑一个具有真实标签 ℓ t r u e \ell_{true} true的二元分类问题。 作者假设 h : R 3 N → { + 1 , − 1 } h:\mathbb{R}^{3N}\rightarrow\{+1,-1\} h:R3N{+1,1}是线性的,因此可以给出预测标签 ℓ ^ predict  = h ( g 0 ) = sign ⁡ ( θ T g 0 ) \widehat{\ell}_{\text {predict }}=h\left(\mathbf{g}_{0}\right)=\operatorname{sign}\left(\boldsymbol{\theta}^{T} \mathbf{g}_{0}\right) predict =h(g0)=sign(θTg0)其中 θ \boldsymbol{\theta} θ表示分类器的参数。 g 0 {\bf{g}}_0 g0表示的是干净的图像,其损失函数可以表示为 L θ ( g 0 , ℓ true  ) = − ℓ true  ⋅ θ T g 0 \mathcal{L}_{\boldsymbol{\theta}}\left(\mathbf{g}_{0}, \ell_{\text {true }}\right)=-\ell_{\text {true }} \cdot \boldsymbol{\theta}^{T} \mathbf{g}_{0} Lθ(g0,true )=true θTg0假定对抗样本为 g = g 0 + η \boldsymbol{g}=\boldsymbol{g}_0+\boldsymbol{\eta} g=g0+η,则损失损失函数可以为 L θ ( g , ℓ target  ) = − ℓ target  ⋅ θ T ( g 0 + η ) \mathcal{L}_{\boldsymbol{\theta}}\left(\mathbf{g}, \ell_{\text {target }}\right)=-\ell_{\text {target }} \cdot \boldsymbol{\theta}^{T}\left(\mathbf{g}_{0}+\boldsymbol{\eta}\right) Lθ(g,target )=target θT(g0+η)进一步可以得到优化目标为 η ∗ = argmax ⁡ η − ℓ t a r g e t ⋅ θ T η ,  subject to  η ∈ Ω , ∥ η ∥ ≤ α ⏟ Ψ = def { η ∣ ∥ η ∥ < α } \begin{gathered} \boldsymbol{\eta}^{*}=\underset{\boldsymbol{\eta}}{\operatorname{argmax}}-\ell_{\mathrm{target}} \cdot \boldsymbol{\theta}^{T} \boldsymbol{\eta}, \\ \text { subject to } \boldsymbol{\eta} \in \Omega, \underbrace{\|\boldsymbol{\eta}\| \leq \alpha}_{\Psi^{\text {def}}_{=}\{\boldsymbol{\eta} \mid\|\boldsymbol{\eta}\|<\alpha\}} \end{gathered} η=ηargmaxtargetθTη, subject to ηΩ,Ψ=def{ηη<α} ηα因此分析算法 O P A D \mathrm{OPAD} OPAD,只需要去分析 Ω \Omega Ω Ψ \Psi Ψ,和神经网络的参数 θ \boldsymbol{\theta} θ

条件约束的几何结构

O P A D \mathrm{OPAD} OPAD有两个约束条件,第一约束条件 η \boldsymbol{\eta} η表示的是在 α − b a l l \alpha-\mathrm{ball} αball里面。另一个约束条件是 η ∈ Ω \boldsymbol{\eta}\in \Omega ηΩ。考虑一个某物体处的一个像素点 x 1 x_1 x1,则该像素的三个通道分别是 f ( x 1 ) = [ f R ( x 1 ) , f G ( x 1 ) , f B ( x 1 ) ] ⊤ \boldsymbol{f}(x_1)=[f_R(x_1),f_G(x_1),f_B(x_1)]^{\top} f(x1)=[fR(x1),fG(x1),fB(x1)]。在经过投影仪-照相机模型后,观察到的像素点变为 g ( x 1 ) \boldsymbol{g}(x_1) g(x1)。由下图所示,给出了两个像素点之间的相关映射,将原始空间中的正方体映射为另一个空间的长方体。
在这里插入图片描述

O P A D \mathrm{OPAD} OPAD什么时候会失败

O P A D \mathrm{OPAD} OPAD的可行区域由以下两个因素决定:一个是 Ω ∩ Ψ \Omega \cap \Psi ΩΨ和另一个是 θ \theta θ的边界。如下图所示,给定一个干净的分类器 θ \theta θ,将空间划分为两个半空间。正确的类别是类别1。为了将分类从类1移动到类0,必须沿着可行方向进行搜索,其中蓝色区域即可优化的可行区域,如果可行区域面积很小的时候,则攻击就极有可能失败如下图的左半图所示。
在这里插入图片描述

O P A D \mathrm{OPAD} OPAD不能做到不可察觉

 作者坦言,由于光照攻击的特殊性,不能做到对抗扰动的不可察觉性。与数字攻击不同,数字攻击距离由决策边界决定, O P A D \mathrm{OPAD} OPAD中的最小扰动量由决策边界和光学系统决定。扰动必须通过投影仪的辐射响应和场景的光谱响应,更不用说衍射和失焦等其他光学限制。对于粗糙的表面,如果可行集 Ω \Omega Ω,当目标很小时,别无选择,只能增加扰动强度。

实验结果

定量评估

  作者首先对四个真实的3D对象分别是泰迪、羊毛衫、篮球和马克杯进行定量实验,如下图所示,对于每个对象,作者生成 16 16 16种不同的目标攻击: 4 4 4种不同的目标类分别是斗篷、牛仔、威士忌壶和羊毛, 2 2 2种不同的约束分别是 ℓ 2 \ell_2 2 ℓ ∞ \ell_{\infty} ,和 2 2 2个不同的分类器分别是 V G G \mathrm{VGG} VGG- 16 16 16 R e s N e t \mathrm{ResNet} ResNet- 50 50 50 P G D \mathrm{PGD} PGD用于所有的攻击中,其中参数 α \alpha α设置为0.050。下图还展示了真实3D对象的光照对抗样本的示意图。
在这里插入图片描述

O P A D \mathrm{OPAD} OPAD应该有多强

 作者做了一个实验来了解 O P A D \mathrm{OPAD} OPAD是如何不易察觉的。目标是想把“书”变成“漫画书”或“椒盐卷饼”。对于这两个目标,作者进行了 4 4 4次攻击 α ∈ { 0.1 , 0.5 , 1.0 , 1.5 } \alpha \in \{0.1,0.5,1.0,1.5\} α{0.1,0.5,1.0,1.5}。可以看到一个较小的 α \alpha α对于“漫画书”来说就可以攻击成功,而一个较大的 α \alpha α对于“椒盐卷饼”来说才可以攻击成功。在这两种情况下,虽然对抗扰动不是太强,但是仍然肉眼可见。
在这里插入图片描述

限制 Ω \Omega Ω的意义

 作者将注意力转移到约束空间 Ω \Omega Ω上,因为正是这个约束 Ω \Omega Ω使光照对抗攻击这个问题变得特别。如下图所示为真实3D衬衫攻击情况,作者在 V G G \mathrm{VGG} VGG-16上发起了一次白盒 F G S M \mathrm{FGSM} FGSM攻击。结果表明,如果忽略该约束, F G S M \mathrm{FGSM} FGSM将生成包含无法实现的颜色的图案。相反,当包括该约束 Ω \Omega Ω条件,则可以更好的生成符合真实场景的对抗扰动。
在这里插入图片描述

鲁棒性分析

 作者使用不同的相机位置和缩放来捕捉场景。首先对停车标志生成成功的攻击,该标志被归类为“限速60”。然后将相机对于停车标志的位置转换为 3 0 ∘ 30^{\circ} 30。还通过放大和缩小来捕捉场景。结果表明,直到对象被长距离缩的很小,否则 O P A D \mathrm{OPAD} OPAD攻击仍然有效。
在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值