【论文笔记】Text2QR

news/2024/5/14 8:32:57

论文:Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation

Abstract

二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。
为了保证美观二维码的稳定生成,引入了QR美观蓝图(QR Aesthetic Blueprint, QAB)模块,生成蓝图图像,对整个生成过程进行控制。随后,可扫描性增强潜在细化(the Scannability Enhancing Latent Refinement, SELR)过程在潜在空间内细化输出,从而强化了可扫描的鲁棒性。
这个方法利用了stable diffusion的强大生成能力,在图像美观性和二维码可扫描行之间进行权衡。

Github仓库

1 Introduction

现在有很多工作致力于改善二维码的美观性,但是大多导致了扫描的不稳定。

本文提出了Text2QR,提供无缝生成二维码的解决方案,平衡用户定义的美观性和强大的可扫描性。
框架通过三个关键步骤展开:

  • 用户通过使用stable diffusion生成他们喜欢的图案来启动该流程。
  • 协同作用开始于QAB模块中图像的混合。这个模块生成一张蓝图,合并预先生成的图像(引导图像)中的内容,并准确反映QR码中的编码信息。然后将这张蓝图图像输入ControlNet,指导Stable Diffusion保留用户定义的美观性,并维持QR码明暗块之间的所需关系。虽然生成的结果会带来解码挑战,但是其表现出明显的明暗块分布,同时保持与用户偏好一致。
  • 构建了能量方程,量化生成结果中的内容和消息的一致性。通过对潜在代码进行梯度上升迭代来优化该能量方程,逐渐增强扫描鲁棒性,同时保持内容一致性。

本文的贡献:

  • Text2QR,在二维码生成中协调用户定义的美观性和强大的可扫描性。
  • 引入QAB模块和SELR流程,用于保持美观的同时优化扫描稳健性。
  • 更优越的效果

3 Preliminary

先阐明QR码扫描仪从美观的QR码图像中解码二进制信息的过程。
给定带有QR码的彩色图像,首先通过提取亮度通道(YCbCr颜色空间中的Y通道),将其转化为灰度表示,表示为 I ∈ R H × W I\in \mathbb{R}^{H\times W} IRH×W,包含 L L L个灰度级(通常为256)。
设QR码包含 n × n n\times n n×n个模块,每个模块的大小为 a × a a\times a a×a个像素,有 n ⋅ a ≤ min ⁡ ( H , W ) n\cdot a\leq \min(H, W) namin(H,W)。这样就构建出了一个包含 n 2 n^2 n2个模块的网格,记作 M k M_k Mk,其中 k ∈ [ 1 , 2 , ⋯ , n 2 ] k\in [1,2,\cdots,n^2] k[1,2,,n2]。这个网格将图像 I I I划分为 n 2 n^2 n2个块,表示为 I M k ∈ R a × a I_{M_k}\in\mathbb{R}^{a\times a} IMkRa×a

k k k个模块被解码为1位信息 I ~ k \tilde{I}_k I~k,代表0或1,其中 I ~ ∈ R n × n \tilde{I}\in \mathbb{R}^{n\times n} I~Rn×n表示整张二进制图的结果。
通常扫描仪对于每个模块的中心子区域内的像素进行采样。
θ \theta θ为以模块 M k M_k Mk为中心、大小为 x × x x\times x x×x的正方形区域, p ∈ { 1 , 2 , ⋯ , H } × { 1 , 2 , ⋯ , W } \mathbf{p}\in\{1,2,\cdots,H\}\times \{1,2,\cdots,W\} p{1,2,,H}×{1,2,,W}表示 I I I的像素坐标。解码后的二进制值 I ~ k \tilde{I}_k I~k可以记作:
v k = 1 x 2 ∑ p ∈ θ I M k ( p ) ; I ~ k = { 0 if  v k ≤ T b , 1 if  v k ≥ T w , − 1 otherwise . v_k=\frac{1}{x^2}\sum_{\mathbf{p}\in\theta}I_{M_k}(\mathbf{p});\tilde{I}_k= \begin{cases} 0 \qquad & \text{if} \ v_k\leq\mathcal{T}_b, \\ 1 \qquad & \text{if} \ v_k\geq\mathcal{T}_w, \\ -1 \qquad & \text{otherwise}. \end{cases} vk=x21pθIMk(p);I~k= 011if vkTb,if vkTw,otherwise.
其中 T b \mathcal{T}_b Tb T w \mathcal{T}_w Tw是二值化的阈值。考虑到对称性,令 T b = L ⋅ ( 1 − η ) / 2 \mathcal{T}_b=L\cdot (1-\eta)/2 Tb=L(1η)/2 T w = L ⋅ ( 1 + η ) / 2 \mathcal{T}_w=L\cdot(1+\eta)/2 Tw=L(1+η)/2,其中 η ∈ ( 0 , 1 ) \eta\in(0,1) η(0,1)。超参数 η \eta η可以控制二值化过程的严格性。
在这里插入图片描述

4 Method

![[Pasted image 20240330222807.png]]

4.1 Overall

第一阶段,用户准备 I g I^g Ig M \mathcal{M} M(依赖关联参数 c c c z 0 z_0 z0)。
第二阶段,关键一步是通过创新的QAB模块将 I g I^g Ig M \mathcal{M} M中封装的信息无缝集成,以制定全面的蓝图,记为 I b I^b Ib
随后, I b I^b Ib在ControlNet C \mathcal{C} C中进行处理,以对stable diffusion model施加影响。这个影响涉及通过受控过程调整中间特征,定义为:
I s = G ( c , z 0 ∣ C ( I b , c , z 0 ) ) I^s=\mathcal{G}(c,z_0|\mathcal{C}(I^b,c,z_0)) Is=G(c,z0C(Ib,c,z0))
这种整合确保了协同输出 I s I^s Is和谐地平衡了源自 I g I_g Ig的审美偏好和 M \mathcal{M} M的结构约束。
最后阶段, I s I^s Is通过SELR模块进行迭代微调,改进了扫描鲁棒性,同时保留了美术品质。

最后输出是一个美观的二维码 Q Q Q

4.2 QR Aesthetic Blueprint

该模块旨在通过集成二维码信息和引导图像细节来创建可扫描的蓝图。

最初,从引导图像 I g I^g Ig中提取亮度通道,表示为 I y g I^g_y Iyg。为了确保可以比较的分布,分别使用直方图偏振(Histogram polarization)进行亮度调整和模块重组的方法进行像素重新排列来预处理 I y g I^g_y Iyg M \mathcal{M} M。最后,应用自适应半色调方法(Adaptive-Halftone)将二者混合,产生蓝图图像 I b I^b Ib

4.2.1 Histogram polarization

该模块的主要目的是协调 I y g I^g_y Iyg的直方图分布和QR码的直方图分布。该过程增强了 I y g I^g_y Iyg的对比度,产生高对比度的图像 I h c I^{hc} Ihc
直方图偏振操作由查找表 H \mathcal{H} H表示,其将像素值从一个灰度级映射到另一个灰度级。

对于每一个像素 p \mathbf{p} p,令 τ = I y g ( p ) \tau=I^g_y(\mathbf{p}) τ=Iyg(p) τ ′ = I h c ( p ) \tau'=I^{hc}(\mathbf{p}) τ=Ihc(p),将过程表示为:
τ ′ = H ( τ ) \tau'=\mathcal{H}(\tau) τ=H(τ)
n τ n_\tau nτ表示灰度级 τ ∈ [ 0 , L ) \tau\in[0,L) τ[0,L)的出现次数,为每一个灰度级 τ \tau τ引入累积分布函数(Cumulative Distribution Function, CDF):
cdf ( τ ) = ∑ i = 0 τ n i H × W \text{cdf}(\tau)=\sum_{i=0}^\tau \frac{n_i}{H\times W} cdf(τ)=i=0τH×Wni
目标是令生成的 I h c I^{hc} Ihc [ 0 , T b ) ∪ [ T w , L ) [0,\mathcal{T}_b)\cup[\mathcal{T}_w,L) [0,Tb)[Tw,L)范围内具有平坦的直方图。同时排除在 [ T b , T w ) [\mathcal{T}_b,\mathcal{T}_w) [Tb,Tw)中出现的情况。为了实现这一点,首先创建一个新图像 I h e I^{he} Ihe,其线性化CDF的值的范围为 [ 0 , L − T w + T b ) [0,L-\mathcal{T}_w+\mathcal{T}_b) [0,LTw+Tb)。令 τ ~ = I h e ( p ) \tilde{\tau}=I^{he}(\mathbf{p}) τ~=Ihe(p),于是有:
τ ~ = ( L − T w + T b ) ⋅ cdf ( τ ) \tilde{\tau}=(L-\mathcal{T}_w+\mathcal{T}_b)\cdot \text{cdf}(\tau) τ~=(LTw+Tb)cdf(τ)
随后,通过添加 T w − T b \mathcal{T}_w-\mathcal{T}_b TwTb来移动值的范围 [ T b , L ) [\mathcal{T}_b,L) [Tb,L)从而获得 I h c I^{hc} Ihc
τ ′ = H ( τ ) = { τ ~ if  τ ~ < T b , τ ~ + T w − T b if  τ ~ ≥ T b . \tau'=\mathcal{H}(\tau)=\begin{cases} \tilde{\tau} \qquad & \text{if} \ \tilde{\tau}<\mathcal{T}_b, \\ \tilde{\tau}+\mathcal{T}_w-\mathcal{T}_b \qquad & \text{if} \ \tilde{\tau}\geq\mathcal{T}_b. \\ \end{cases} τ=H(τ)={τ~τ~+TwTbif τ~<Tb,if τ~Tb.
![[Pasted image 20240331123739.png]]

4.2.2 Module reorganization

为了将QR码 M \mathcal{M} M I h c I^{hc} Ihc混合,首先将 I h c I^{hc} Ihc二值化为二值图像 I b i n I^{bin} Ibin。该二值图像指导module reorganization方法,记为 E r \mathcal{E}_r Er,该方法在保留编码信息的同时重新排列 M \mathcal{M} M的模块。该过程可以表述为:
I b i n ( p ) = { 0 if  I h c ( p ) < T b , 1 if  I h c ( p ) > T w , I^{bin}(\mathbf{p})=\begin{cases} 0 \qquad & \text{if} \ I^{hc}(\mathbf{p})<\mathcal{T}_b, \\ 1 \qquad & \text{if} \ I^{hc}(\mathbf{p})>\mathcal{T}_w, \\ \end{cases} Ibin(p)={01if Ihc(p)<Tb,if Ihc(p)>Tw,
M r = E r ( M , I b i n ) \mathcal{M}^r=\mathcal{E}_r(\mathcal{M},I^{bin}) Mr=Er(M,Ibin)

4.2.3 Adaptive-Halftone blending

考虑第 k k k个模块区域 M k M_k Mk,我们输入经过histogram polarization后的图像块 I M k h c I_{M_k}^{hc} IMkhc和一个目标值 M k r = 0 or  1 M_k^r=0\ \text{or} \ 1 Mkr=0 or 1。目标是获得蓝图 I b I^b Ib,其中 I M k b I_{M_k}^b IMkb可以被解码为正确的信息,同时保留尽可能多的图像内容。

为了达成这个目标,引入了全新的blending method:Adaptive-Halftone blending(自适应半色调混合)。
具体地,对于每个模块 M k M_k Mk,令 θ k \theta_k θk是一个大小为 u × u u\times u u×u的方形区域,以图像块 I M k h c ( u ≤ a ) I^{hc}_{M_k}(u\leq a) IMkhc(ua)为中心。用 M k r \mathcal{M}_k^r Mkr来填充 I θ k h c I_{\theta_k}^{hc} Iθkhc以生成 I M k b I_{M_k}^b IMkb。通过最小化该模块内的编码距离来优化放行区域大小 u u u u u u对应的该模块的模拟解码值定义为 E k ( I M k b ∣ u ) E_k(I_{M_k}^b|u) Ek(IMkbu)
E k ( I M k b ∣ u ) = 1 a 2 [ ∑ p ∈ θ k L ⋅ M k r + ∑ p ∉ θ k I M k b ( p ) ] = 1 a 2 [ u 2 ⋅ L ⋅ M k r + ∑ p ∉ θ k I M k b ( p ) ] \begin{align} E_k(I_{M_k}^b|u)&=\frac{1}{a^2}[\sum_{\mathbf{p}\in\theta_k} L\cdot \mathcal{M}_k^r+\sum_{\mathbf{p}\notin\theta_k} I_{M_k}^b(\mathbf{p})] \\ &=\frac{1}{a^2}[u^2\cdot L\cdot\mathcal{M}_k^r+\sum_{\mathbf{p}\notin\theta_k} I_{M_k}^b(\mathbf{p})] \end{align} Ek(IMkbu)=a21[pθkLMkr+p/θkIMkb(p)]=a21[u2LMkr+p/θkIMkb(p)]
特别地,当 u = a u=a u=a时,有 E k ( I M k b ∣ u ) = L ⋅ M k r E_k(I_{M_k}^b|u)=L\cdot\mathcal{M}_k^r Ek(IMkbu)=LMkr。目标是最小化编码距离:
u k = argmin ⁡ v ∣ ∣ E k ( I M k b ∣ u ) − L ⋅ ( η ⋅ M k r + 1 − η 2 ) ∣ ∣ u_k={\underset{v}{\operatorname{arg min}}}||E_k(I_{M_k}^b|u)-L\cdot(\eta\cdot\mathcal{M}_k^r+\frac{1-\eta}{2})|| uk=vargmin∣∣Ek(IMkbu)L(ηMkr+21η)∣∣
根据 T b \mathcal{T}_b Tb T w \mathcal{T}_w Tw的定义,可以简写上式:
s k = { argmin ⁡ s ∣ ∣ E k ( I M k b ∣ u ) − T b ∣ ∣ if  M k r = 0 , argmin ⁡ s ∣ ∣ E k ( I M k b ∣ u ) − T w ∣ ∣ if  M k r = 1 , s_k=\begin{cases} {\underset{s}{\operatorname{arg min}}}||E_k(I_{M_k}^b|u)-\mathcal{T}_b|| \qquad & \text{if} \ \mathcal{M}_k^r=0, \\ {\underset{s}{\operatorname{arg min}}}||E_k(I_{M_k}^b|u)-\mathcal{T}_w|| \qquad & \text{if} \ \mathcal{M}_k^r=1, \\ \end{cases} sk= sargmin∣∣Ek(IMkbu)Tb∣∣sargmin∣∣Ek(IMkbu)Tw∣∣if Mkr=0,if Mkr=1,
为每个模块都填充了合适尺寸的同心方形块后,继续将标记(包括查找器和对齐标记)粘贴到最终的蓝图 I b I^b Ib上。

下图展示了从不同的蓝图生成不同的 I s I^s Is
在这里插入图片描述

此调整涉及当 I h c I^{hc} Ihc有效封装模块信息以保留更多图像内容时缩小块的大小。
相反,当需要更明显的控制信号来确保模块在 I s I^s Is中的可扫描性时,它会扩大块的大小。

4.3 Scannability Enhancing Latent Refinement

生成的 I s I^s Is遵循施加的 M r \mathcal{M}^r Mr的结构约束,但因为仍有大量错误的模块,因此不可扫描。为了解决此问题,可扫描性增强潜在细化(Scannability Enhancing Latent Refinement, SELR)提供了很细致的强化过程来增强扫描鲁棒性。

包括取景器和对其图案的标记对于确定QR码的位置和角度至关重要,从而影响其扫描性。因此,在细化之前将它们的外观整合到 I s I^s Is上,记作 I s ^ \hat{I^s} Is^
在这里插入图片描述

使用VAE将增强图像 I s ^ \hat{I^s} Is^编码为潜在代码 z s z_s zs,将VAE的模型记作 E V \mathcal{E}_V EV。总体目标函数 L L L可以被分为三项之和:标记损失 L m \mathcal{L}_m Lm,编码损失 L c \mathcal{L}_c Lc,协调损失 L h \mathcal{L}_h Lh
L ( z ) = λ 1 L m ( D V ( z ) , I b ) + λ 2 L c ( D V ) ( z ) , I b ) + λ 3 L h ( D V ) ( z ) , I s ) \begin{aligned} \mathcal{L}(z)&=\lambda_1\mathcal{L}_m(\mathcal{D}_V(z),I^b) \\ &+\lambda_2\mathcal{L}_c(\mathcal{D}_V)(z),I^b) \\ &+\lambda_3\mathcal{L}_h(\mathcal{D}_V)(z),I^s) \end{aligned} L(z)=λ1Lm(DV(z),Ib)+λ2Lc(DV)(z),Ib)+λ3Lh(DV)(z),Is)
其中, λ 1 \lambda_1 λ1 λ 3 \lambda_3 λ3用于平衡各项之间的权重。 D V \mathcal{D}_V DV代表VAE编码器的解码器。 z z z是由 z s z_s zs初始化并在不断迭代中通过最小化目标函数来微调的潜变量,控制生成的QR码 Q = D V ( z ) Q=\mathcal{D}_V(z) Q=DV(z)的可扫描性和美观质量。代码损失 L c \mathcal{L}_c Lc是通过Artcoder: an end-to-end method for generating scanning-robust stylized qr codes这篇文章提出的方法计算的,该方法采用SSLayer提取模块值,通过竞争机制计算基于模块的代码损失。

4.3.1 Marker loss

扫描仪根据标记区域中的特定像素比来识别QR码。
引入一个二元掩码 K c c \mathcal{K}_{cc} Kcc,专门用于过滤标记的交叉中心区域,目的是保护基本标记功能免受因美学定制而造成的潜在损害。形式上,标记损失函数 L m \mathcal{L}_m Lm定义如下:
L m ( Q , I b ) = K c c ⋅ ∣ ∣ Q y − I b ∣ ∣ 2 \mathcal{L}_m(Q,I^b)=\mathcal{K}_{cc}\cdot||Q_y-I^b||^2 Lm(Q,Ib)=Kcc∣∣QyIb2
其中 Q y Q_y Qy表示二维码 Q Q Q的亮度通道。
这个公式确保了标记的完整性,同时允许对QR码的非标记区域进行美观修改。重点是优化视觉质量,同时保持原始扫描能力。

这个损失函数计算了 L 2 L^2 L2-Wasserstein距离,记为 W 2 W_2 W2,计算 Q Q Q的特征图和 I s I^s Is的距离。
特别地,

4.3.2 Harmonizing Loss

解决了与标记和代码相关的可扫描性问题后,要进一步确保通过协调损失来保留美学品质。特征图 f i f_i fi通过预训练的VGG-19网络的 i ∈ [ 1 , 6 , 11 , 18 , 25 ] i\in[1,6,11,18,25] i[1,6,11,18,25]层提取而出,损失可以被计算为:
L h = ∑ i W 2 ( f i ( Q ) , f i ( I s ) ) \mathcal{L}_h=\sum_i W_2(f_i(Q),f_i(I^s)) Lh=iW2(fi(Q),fi(Is))
P 1 , P 2 P_1,P_2 P1,P2分别为 R n \mathbb{R}^n Rn上具有 μ 1 , μ 2 ∈ R n \mu_1,\mu_2\in\mathbb{R}^n μ1,μ2Rn的平均值、非奇异协方差矩阵 C 1 , C 2 ∈ R n × n C_1,C_2\in\mathbb{R}^{n\times n} C1,C2Rn×n L 2 L^2 L2-Wasserstein距离 W 2 ( P 1 , P 2 ) W_2(P_1,P_2) W2(P1,P2)可以被定义为:
A = trace ( C 1 + C 2 − 2 ( C 1 C 2 C 1 ) 1 2 ) A=\text{trace}(C_1+C_2-2(\sqrt{C_1}C_2\sqrt{C_1})^{\frac{1}{2}}) A=trace(C1+C22(C1 C2C1 )21)
W 2 ( P 1 , P 2 ) = ∣ ∣ μ 1 − μ 2 ∣ ∣ 2 + A W_2(P_1,P_2)=\sqrt{||\mu_1-\mu_2||^2+A} W2(P1,P2)=∣∣μ1μ22+A
协调损失的集成确保优化的输出不仅满足功能要求,而且保留美学品质。本质上,SELR模块利用标记、编码、协调损失来优化生成的QR码的可扫描性和美观性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.tangninghui.cn.cn/item-12672.htm

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

考研数学|《1800》+《660》精华搭配混合用(经验分享)

肯定不行&#xff0c;考研数学哪有这么容易的&#xff01; 先说说这两本习题册&#xff0c;李永乐老师推出的新版660题&#xff0c;相较于18年前的版本&#xff0c;难度略有降低&#xff0c;更加适合初学者。因此&#xff0c;对于处于基础阶段的学习者来说&#xff0c;新版660…

Spring Boot 使用 Redis

1&#xff0c;Spring 是如何集成Redis的&#xff1f; 首先我们要使用jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><gro…

unity 使用Base64编码工具对xml json 或者其他文本进行加密 解密

Base64编码加密解密工具 这是一个加密解密的网页工具&#xff0c;别人可以把他加密后的字符串给你&#xff0c;然后你可以用代码解密出来&#xff0c; 或者自己对内容进行加密&#xff0c;解密处理。 /// <summary>/// Base64 解码/// </summary>string DecodeBase…

【HTML】制作一个简单的动态SVG图形

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段HTML和CSS代码&#xff0c;该代码用于创建一个动态的SVG图形&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建两个文本文档&#xff0c;其中HTML的文…

4.2.k8s的pod-标签管理、镜像拉取策略、容器重启策略、资源限制、优雅终止

一、标签管理 1.标签在k8s中极其重要&#xff0c;大多数资源的相互关联就需要使用标签&#xff1b;也就是说&#xff0c;资源的相互关联大多数时候&#xff0c;是使用标签进行关联的&#xff1b; 2.其他作用&#xff0c;在k8s集群中&#xff0c;node节点的一些操作比如污点及污…

Mybatis——一对多关联映射

一对多关联映射 一对多关联映射有两种方式&#xff0c;都用到了collection元素 以购物网站中用户和订单之间的一对多关系为例 collection集合的嵌套结果映射 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import java.util.List;Data public cla…