【论文笔记】Text2QR

论文: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.mzph.cn/news/786174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6款Mac垃圾清理软件横评 Mac电脑清理软件哪个好 cleanmymac评测

鉴于苹果笔记本昂贵的硬盘价格&#xff0c;导致我们不得不定期清理自己的硬盘空间&#xff0c;释放给真正有用的各种程序等。 即便我们把程序安装到外置硬盘&#xff0c;但是程序运行时的缓存&#xff0c;仍然是在内置的硬盘中。 今天就让我们对比看看&#xff0c;目前市面上…

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

引言 近日&#xff0c;Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证&#xff08;RSALv2&#xff09;和服务器端公共许可证&#xff08;SSPLv1&#xff09;。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变&#xff0c;同时也引发…

物流管理系统|基于Springboot的物流管理系统设计与实现(源码+数据库+文档)

物流管理系统目录 目录 基于Springboot的物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员和管理员功能实现 &#xff08;1&#xff09;用户管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;物流信息管理 &#xff08;…

智慧安防监控EasyCVR视频调阅和设备录像回看无法自动播放的原因排查与解决

智慧安防监控EasyCVR视频管理平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…

【面试八股总结】超文本传输协议HTTP(一)

一、 什么是HTTP协议&#xff1f; HTTP是超文本传输协议 HyperText Transfer Protocol 特性&#xff1a; 简单、灵活、易于扩展无状态&#xff1a;服务器不会记忆HTTP状态不安全&#xff1a;通信使用明文&#xff0c;不验证通信方身份&#xff0c;无法的证明报文的完整性&…

Kubernetes kafka系列 | Strimzi 部署kafka-bridge

Strimzi kafka集群部署直通车 一、kafka bridge 介绍 Kafka Bridge 是 Apache Kafka 生态系统中的一个工具或组件&#xff0c;用于实现 Kafka 与其他系统或协议之间的通信或集成。Kafka 本身是一个分布式事件流平台&#xff0c;广泛用于构建实时数据流水线和流式应用程序。然而…

四川易点慧电子商务抖音小店:安全靠谱,购物新体验

随着互联网的飞速发展&#xff0c;电子商务已经成为人们日常生活中不可或缺的一部分。四川易点慧电子商务有限公司&#xff0c;作为一家专注于抖音小店的电商平台&#xff0c;以其安全靠谱的特性&#xff0c;赢得了广大消费者的信赖和喜爱。 一、平台背景与实力 四川易点慧电子…

iPhone设备中如何导出和分享应用程序崩溃日志的实用方法

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么&#xff1f; 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志&#xff0c;以便调查崩溃的原因。我们将展示三种不同的…

MVC与三层架构理解

1. JSP的发展 早期只有Servlet&#xff0c;只能使用response输出标签数据&#xff0c;非常麻烦后来。JSP的出现&#xff0c;简化了 Servlet的开发。但是过度的使用JSP&#xff0c;在JSP中写大量的java代码&#xff0c;又前端的页面&#xff0c;造成难以维护&#xff0c;难于分…

Excel制作甘特图

使用Excel表格制作甘特图&#xff0c;可根据任务开始时间和结束时间自动计算工时&#xff0c;并自动用指定颜色填充横道图。 1.新建Excel文档&#xff0c;先设置项目基本信息&#xff0c;包括表格名称&#xff0c;这里设置为“**项目甘特图”&#xff1b;然后添加任务序号列&a…

【软件工程导论】——面向对象与UML(学习笔记)

&#x1f4d6; 前言&#xff1a;面向对象是以问题空间中出现的物体为中心进行模型化的一种技术。建立模型是软件工程中最常使用的技术之一。无论软件分析或软件设计&#xff0c;都需要建立模型。UML 就是OO 软件工程使用的统一建模语言。它是一种图形化的语言&#xff0c;主要用…

3D DRAM在2025年来袭

4月1日消息&#xff0c;据半导体工程报道&#xff0c;在行业大会Memcon 2024上&#xff0c;三星电子宣布其计划成为首家在2025年后步入3D DRAM内存时代的行业领军者。随着DRAM内存行业在本十年后期将线宽压缩至低于10纳米&#xff0c;现有的设计解决方案在如此精细的尺度上难以…

HarmonyOS 应用开发之Actor并发模型对比内存共享并发模型

内存共享并发模型指多线程同时执行复数任务&#xff0c;这些线程依赖同一内存并且都有权限访问&#xff0c;线程访问内存前需要抢占并锁定内存的使用权&#xff0c;没有抢占到内存的线程需要等待其他线程释放使用权再执行。 Actor并发模型每一个线程都是一个独立Actor&#xf…

Cisco交换机安全配置

Cisco交换机安全配置 前提 我们以下命令一般都要先进入Config模式 S1> enable S1# conf t S1(config)#端口安全保护 禁用未使用的端口 以关闭fa0/1到fa0/24的端口为例 S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击 防止CAM…

sql注入---Union注入

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 学习目标 了解union注入过程中用到的关键数据库&#xff0c;数据表&#xff0c;数据列sql查询中group_concat的作用使用union注入拿到靶机中数据库里的所有用户名和密码 一. 获得数据库表名和列…

酷开系统 | 酷开科技打造全流程全自动化运营链路

近日&#xff0c;QuestMobile发布的《2023年全景生态流量半年报告》数据显示&#xff0c;随着营销场景边界的拓展&#xff0c;越来越多的品牌方开始将阵地由移动端转移到大屏端。OTT及智能硬件营销占中国互联网营销市场规模比例已经从2020年的3.8%升至2022年的7.6%。随着人口红…

【JavaWeb】Day30.SpringBootWeb请求响应——响应

响应 HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09;那么Controller程序&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 1.ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了响应数据。 controller方…

【C语言进阶】- 内存函数

内存函数 1.1 内存函数的使用1.2 memcpy函数的使用1.3 memcpy函数的模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现2.3 memcmp函数的使用2.4 memset函数的使用 1.1 内存函数的使用 内存函数就是对内存中的数据进行操作的函数 1.2 memcpy函数的使用 void* memcpy ( …

Docker容器与Serverless的融合:探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例

Docker容器与Serverless的融合&#xff1a;探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例 文章目录 Docker容器与Serverless的融合&#xff1a;探索《2023腾讯云容器和函数计算技术实践精选集》中的云原生创新案例一、引言二、《2023腾讯云容器和函数计算…

交通标志识别项目 | 基于Tensorflow+SSD实现道路交通标志识别

项目应用场景 面向智能驾驶或自动驾驶场景道路道路交通标志的识别&#xff0c;在交通标志识别的基础上为下一步的智能决策提供前提 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md (1) 安装依赖 Python3.5、TensorFlow v0.12.0、Pickle、OpenCV-Python、Matplotl…