ArtCoder——通过风格转换生成多元化艺术风格二维码

简介

ArtCoder能够从原始图像(内容)、目标图像(风格)以及想要嵌入的信息中,生成具有艺术风格的二维码。这一过程类似于通常的图像风格转换,但特别针对二维码的特点进行了优化和调整。

通过这种方法,不仅能够保持二维码的功能性和可读性,同时还能够使其具有独特的视觉效果和艺术表现力。这样的二维码不仅能够提供信息的快速识别和传递,还能够作为一种视觉元素,增强产品的吸引力和品牌的识别度。


论文地址:https://arxiv.org/abs/2011.07815

算法架构

模型


所提出的方法被建模为一个函数 P s i Psi Psi,它从风格图像 I s I_s Is、内容图像 I c I_c Ic和信息M中生成一个QR码 Q = P s i ( I s , I c , M ) Q = Psi(I_s, I_c, M) Q=Psi(Is,Ic,M)。在这个模型中,生成的QR码Q的目标函数(损失函数)Ltotal由以下方程定义,它结合了三个不同的损失函数:

L t o t a l = l a m b d a 1 L s t y l e ( I s , Q ) + l a m b d a 2 L c o m t e n t ( I c , Q ) + l a m b d a 3 L c o d e ( M , Q ) L_{t o t a l}=l a m b d a_{1}L_{s t y l e}(I_{s},Q)+l a m b d a_{2}L_{c o m t e n t}(I_{c},Q)+l a m b d a_{3}L_{c o d e}(M,Q) Ltotal=lambda1Lstyle(Is,Q)+lambda2Lcomtent(Ic,Q)+lambda3Lcode(M,Q)

这里的 l a m b d a 1 , λ 2 , λ 3 l a m b d a_{1},\lambda_{2},\lambda_{3} lambda1,λ2,λ3是权重参数,用于表示风格损失、内容损失和代码损失在总损失函数中的相对重要性。

  • 风格损失Lstyle用于确保生成的QR码Q保留了风格图像Is的视觉风格。这通常通过比较风格图像和生成的QR码之间的风格特征来实现,例如使用预训练的神经网络(如VGG网络)提取特征并计算它们之间的差异。

  • 内容损失Lcontent用于保证生成的QR码Q与内容图像Ic在视觉上保持一致。这通常涉及到计算两个图像之间的像素级差异,以确保内容图像的主要视觉元素被保留在最终的QR码中。

  • 代码损失Lcode则专注于确保生成的QR码Q正确地编码了信息M。这通常通过验证解码后的QR码是否能够准确还原出原始信息来实现。

通过优化这个目标函数,我们可以生成既具有艺术性又能够准确传递信息的QR码。这种方法不仅提升了二维码的艺术价值,还拓宽了其在不同领域的应用潜力,如品牌营销、个人表达、艺术创作等。通过调整 l a m b d a 1 , λ 2 , λ 3 l a m b d a_{1},\lambda_{2},\lambda_{3} lambda1,λ2,λ3的值,可以根据具体需求调整风格、内容和信息的相对重要性,从而生成满足特定要求的QR码。

风格损失Lstyle和内容损失Lcontent

样式损失Lstyle和内容损失Lcontent用于确保生成的QR码保留其样式和内容。具体来说,根据现有的关于风格转换的研究(1,2),它们由以下公式定义

L s t y l e ( I s , Q ) = 1 C s H s W s ∣ ∣ G [ f s ( I s ) ] − G [ f s ( Q ) ] ∣ ∣ 2 2 {\cal L}_{s t y l e}(I_{s},Q)=\frac{1}{C_{s}H_{s}W_{s}}||G[f_{s}(I_{s})]-G[f_{s}(Q)]||_{2}^{2} Lstyle(Is,Q)=CsHsWs1∣∣G[fs(Is)]G[fs(Q)]22

L c o n t e n t ( I c , Q ) = 1 C s H s W s ∣ ∣ f c ( I c ) ∣ − f c ( Q ) ∣ ∣ 2 2 {\cal L}_{c o n t e n t}(I_{c},Q)=\frac{1}{C_{s}H_{s}W_{s}}||f_{c}(I_{c})|-f_{c}(Q)||_{2}^{2} Lcontent(Ic,Q)=CsHsWs1∣∣fc(Ic)fc(Q)22

其中G是Gram matrix, f s ( , f c ) f_s(,f_c) fs(,fc)表示从预训练的VGG-19的s(,c)层提取的特征图。

代码损失Lcode

代码损失 L c o d e L_{code} Lcode用于控制生成的QR码的内容,使用SS层(采样-模拟层),一个虚拟的QR码阅读器,模拟QR码阅读器的采样过程。

模拟层

在用于解码二维码的Goole ZXing中,二维码阅读器对每个模块的中心像素(二维码中的黑色和白色方块)进行采样和解码。

当QR码被QR码阅读器实际读取时,居住在坐标(i,j)、原点在每个模块中心的像素被采样的概率gMk(i,j)被认为遵循以下公式

g M k ( i , j ) ≡   1 2 π σ 2 e − i 2 + j 2 2 σ 2 g_{M_{k}{(i,j)}}\equiv\,\frac{1}{2\pi\sigma^{2}}e^{-\frac{i^{2}+j^{2}}{2\sigma^{2}}} gMk(i,j)2πσ21e2σ2i2+j2

采样-模拟层使用上述方程来模拟生成的QR码被真正的QR码阅读器读取时的采样过程,从而提高QR码读取过程的稳健性。

具体来说,对于QR码中的每个模块 m − d i s − m m−dis−m mdism(每个模块有 a − d i s − a a−dis−a adisa像素),以核大小a、跨度a和填充0进行卷积运算,并输出 m − d i s − m m−dis−m mdism的特征图 F = l s S ( Q ) F=l_sS(Q) F=lsS(Q)

基于这个特征图 F = l s S ( Q ) F=l_sS(Q) F=lsS(Q) g M k ( i , j ) gM_{k(i,j)} gMk(i,j),对应于模块 M k M_k Mk的位 F M k F_{Mk} FMk由以下公式给出

F M k =   s u m ( i , j ) ∈ M k g M k ( i , j ) ⋅ Q M k ( i , j ) F_{M_{k}}=\,s u m_{(i,j)\in M_{k}}g_{M_{k}(i,j)}\cdot Q_{M_{k}(i,j)} FMk=sum(i,j)MkgMk(i,j)QMk(i,j)

考虑FMk来模拟当QR码被QR码阅读器实际读取时,每个模块是否会被解码为0或1。

代码损失

代码损失 L c o d e L_{code} Lcode被计算为对应于QR码Q的每个模块 M k / i n Q M_k/inQ Mk/inQ的子码损失 L c o d e M K L_{code}^{MK} LcodeMK之和。

L c o d e = s u m M k i n Q L c o d e M k L_{c o d e}=s u m_{M_{k}i n Q}L_{c o d e}^{M_{k}} Lcode=sumMkinQLcodeMk其中 L c o d e M k L^{Mk}_{code} LcodeMk由以下公式给出。

L c o l e M k = K M k ⋅ ∣ ∣ t e x t i t M M k − F M k ∣ ∣ {\cal L}_{c o l e}^{M_{k}}=K_{M_{k}}\cdot\left|\left|t e x t i t{\cal M}_{M_{k}}-F_{M_{k}}\right|\right| LcoleMk=KMktextitMMkFMk

其中textitM是一个m×m矩阵,代表目标QR码以及每个模块是否应该为0或1。而K是由下面描述的竞争机制计算的激活图。

竞争机制

通过控制激活图K,竞争机制决定是优先考虑生成的QR码的视觉质量( L s t y l e , L c o n t e n t L_{style},L_{content} Lstyle,Lcontent),还是优先考虑QR码是否能被QR码阅读器准确读取( L c o d e L_{code} Lcode)进行优化。

这种竞争机制的管道如下图所示。

具体来说,当虚拟二维码阅读器RQR读取二维码Q时,如果模块Mk是正确的,激活图K为0,如果它是错误的,则为1。

通过采用这样的竞争机制,通过优先优化错误模块的Lcode和正确模块的Lstyle,Lcontent,适当地保留了图像的质量和QR码阅读的稳健性。读取QR码时的稳健性。

虚拟QR码阅读器 R Q R R_{QR} RQR

当一个普通的二维码阅读器读取一个二维码Q时,它被转换成灰度,并根据每个模块的值进行二进制化,如下所示:

这里,T是判断一个模块是黑是白的阈值。

另一方面,当用虚拟二维码阅读器读取二维码Q时,对每个模块 M k M_k Mk进行以下二值化。

其中 T b , T w T_b,T_w Tb,Tw分别是判断模块是黑色还是白色的阈值(如果模块 M k M_k Mk是黑色的( t e x t i t M M k = 0 textitM_{Mk}=0 textitMMk=0),阈值为 T b T_b Tb,如果相反则为 T w T_w Tw)。

换句话说,根据每个模块的理想值( M M k M_{Mk} MMk)使用不同的阈值,每个模块的值比实际的二维码阅读更严格地被分辨出来。

在这种情况下,引入了一个参数 e t a = ∣ T − T b ∣ T = ∣ T w − T ∣ ( 255 − T ) e t a={\frac{\vert T-T_{b}\vert}{T}}={\frac{\vert T_{w}-T\vert}{(255-T)}} eta=TTTb=(255T)TwT来表示QR码读取的稳健性。通过设置这个参数eta,可以在图像的质量和QR码读取的稳健性之间进行权衡。

基于上述,损失函数根据上述管道进行优化,并对生成的QR码进行迭代更新。

实验结果

实验设置

关于实验中使用的数据集,内容图像数据集包括100张512x512的图像(肖像、卡通、风景、动物、标志等),风格图像数据集包括30张代表不同风格的图像。

实验在NVIDIA Tesla V100 GPU上进行,超参数设置为 λ 1 = 1 0 1 5 , λ 2 = 1 0 7 , λ 3 = 1 0 2 0 λ_1=10_15,λ_2=10^7,λ_3=10^20 λ1=1015,λ2=107,λ3=1020,学习率为0.001,鲁棒参数 η = 0.6 η=0.6 η=0.6

生成的QR码的质量

与现有方法的比较,首先,与现有的NST(神经风格转移)技术或二维码生成方法的比较结果如下

将Ours与其他方法相比较,生成结果的质量比现有的NST实例退化得更少,而且与现有的艺术风格的QR码生成方法相比,不会产生大量的点状噪声。

对于重量参数λ在重量参数中,改变lambda2的含量损失的结果显示如下。

从图中可以看出,通过改变权重参数,可以控制生成的图像。

二维码阅读的稳健性

在下面的实验中,我们将验证所生成的QR码的鲁棒性,以便被真正的应用所读取。

对稳健性的定性分析

在下面的图片中,显示了实际生成的QR码的一部分的放大图。

如果在对任何生成的图像进行二进制化处理后观察每个模块的中心(二进制结果中的蓝色和红色圆圈),你\会发现每个模块的黑白区域都被很好地分开,采样后的结果与理想结果相同。

因此,生成的二维码可以被普通的二维码阅读器稳健地读取。

对于表示稳健性的参数eta来说

改变稳健性参数eta的结果如下。

其中,(a)显示了生成的图像,(b)部分图像的放大,(c)误差模块和(d)每个损失的大小。

一般来说,增加/eta会增加编码损失,提高鲁棒性,但会降低图像质量。另一方面,较小的eta会在早期收敛为零,提高了图像质量,但降低了鲁棒性。

成功阅读的概率

生成的图像以三种尺寸(3厘米×3厘米、5厘米×5厘米和7厘米×7厘米)显示在屏幕上,扫描距离为20厘米,其结果显示如下。

该表显示了使用每个移动设备对30个QR码进行50次扫描的平均成功次数(在3秒内成功解码被视为成功扫描)。

总的来说,它显示了至少96%的成功率,这表明所提出的方法足够强大,可以在实际应用中发挥作用。(即使在扫描失败的情况下,读取似乎也是成功的,尽管它需要3秒钟以上的时间来完成)。)

距离和角度对阅读的影响

下图显示了改变eta时的结果,并与改变距离和角度时的现有方法进行了比较。

作为比较的结果,对于0.6,所提出的方法的稳健性等于或略逊于现有的方法,这意味着它的稳健性足以在实践中得到应用。

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

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

相关文章

芯片设计围炉札记

文章目录 语言Verilog 和 VHDL 区别 芯片验证 语言 System Verilog的概念以及与verilog的对比 IC 设计软件分析 Verilog 和 VHDL 区别 Verilog HDL 和 VHDL 的区别如下: 语法结构:Verilog的语法结构类似于C语言,而VHDL的语法结构则更接近…

【网络安全 | 信息收集 | 渗透工具】FofaViewer工具的安装使用详细教程+程序闪退问题解决

前言 安装教程 下载地址: Releases wgpsec/fofa_viewer GitHub 通过java --version查看JDK版本: (1)若使用的是高版本的JDK,则直接下载FofaViewer下载页面中 FofaViewer_1.1.13.zip的安装包。 (2)若使用的是JDK8,则下载FofaV…

Web3.0与AI的交融:开启智能互联网新时代

目前有140 多个 Web3 AI 概念项目,覆盖了基础设施、数据、预测市场、计算与算力、教育、DeFi & 跨链、安全、NFT & 游戏 & 元宇宙、搜索引擎、社交 & 创作者经济、AI 聊天机器人、DID & 消息传递、治理、医疗、交易机器人等诸多方向。持续关注…

在成都开通证券交易账户有那些渠道?有没有佣金图可以参考一下的?

在成都股票开户的方式主要有以下三种: 1. 券商营业部开户:成都本地有多家券商营业部,如国金证券、华西证券等,投资者可以选择到这些券商营业部进行开户。券商营业部开户需要投资者本人前往券商营业部,填写相关申请表格…

Qt 实战(2)搭建开发环境 | 2.1、Windows下安装QT

一、Windows下安装QT 1、QT官网 QT官网:https://download.qt.io/,打开官网地址,如下: 目录结构介绍 目录说明snapshots预览版,最新的开发测试中的 Qt 库和开发工具onlineQt 在线安装源official_releases正式发布版&am…

在Linux中安装Android Studio(ubuntu22.04)

在Linux中安装Android Studio 准备工作 系统:ubuntu 22.04 位数:64bit 安装要求: 安装流程 1.下载安装包 打开Android Studio官网 把Android Studio的安装包下载下来 2.安装 为了防止丢失,把解压好的文件夹移到 /usr/local…

Loran-C(罗兰C)信号捕获算法及MATLAB仿真代码

目录 引言信号体制相位编码格式信号捕获原理代码及仿真结果 引言 本文首先介绍了Loran-C信号的时域波形及编码方式,然后描述了信号的捕获及相位匹配原理,包括相关运算和并行码相位搜索,最后给出信号及捕获算法仿真及结果。 信号体制 Loran…

Python爬虫入门教程!

什么是爬虫? 爬虫就是自动获取网页内容的程序,例如搜索引擎,Google,Baidu 等,每天都运行着庞大的爬虫系统,从全世界的网站中爬虫数据,供用户检索时使用。 爬虫流程 其实把网络爬虫抽象开来看,它…

1.5MHz,1.2A COT 架构同步降压变换器只要0.16元,型号:LN3435

推荐原因 1.5MHZ的开关频率,可以使用小电感,1.2A满足多数应用,价格感人,只要0.16元 产品概述 LN3435是一款电流模COT架构同步降压开关稳压器。 输入范围为 2.7V-6.0V,可提供 1.2A 的连续输出电流。 内部集成了低内阻…

LeetCode: 209 长度最小的子数组

209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1…

怎么转行做产品经理?

小白转产品经理第一点要先学基础理论知识,学了理论再去实践,转行,跳槽! 学理论比较好的就是去报NPDP的系统班,考后也会有面试指导课、职场晋升课程,对小白来说非常合适了~(B站:不爱…

【笔记】ASP.NET Core Web API之Token验证

在实际开发中经常需要对外提供接口以便客户获取数据,由于数据属于私密信息,并不能随意供其他人访问,所以就需要验证客户身份。那么如何才能验证客户的身份呢?一个简单的小例子,简述ASP.NET Core Web API开发过程中&…

16 - Debian如何配置vsftpd(1)实现匿名上传下载

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置vsftpd(1)实现匿名上传下载 《傅老师Debian小知识库系列之16》——原创 前言 傅老师Debian小知识库特点&#xff1a…

openfoam与blastfoam的版本兼容解决方法(从而解决正确运行blastFoam里面的案例,避免报错)

问题:最近运行blastFoam里面自带的案例时,全都报错,使用的openfoam2212加上blastfoam6.2.0。也尝试使用了openfoam7加上blastfoam2.0都报错 比如报错如下: --> FOAM FATAL IO ERROR: error in IOstream "OSHA1stream.s…

刷穿力扣006-剑指offer一数组——02寻找目标值-二维数组

刷穿力扣006-剑指offer<一>数组——02寻找目标值-二维数组 基本面试题都是我带大家刷的力扣热题100和剑指offer的75道题&#xff0c;建议刷两遍&#xff01;&#xff08;ps:想找工作实习的同学&#xff0c;文末有面试八股和简历模板&#xff09; 题目&#xff1a; 语言…

探索分布式系统监控zabbix------------自动发现与自动注册

目录 一、部署 zabbix 服务端 二、部署 zabbix 客户端 2.1环境准备 2.2服务端和客户端都配置时间同步 &#xff08;ntp&#xff09; 2.2.1服务端zbx-server 2.2.2服务端zabbix-agent01客户端 2.3客户端配置时区&#xff0c;与服务器保持一致 2.4设置 zabbix 的下载源&…

【Yapi】Idea配置easy-yapi

Idea配置easy-yapi 第一步&#xff1a;安装EasyApi 下载好EasyYapi的Plugins&#xff0c;在Settings—Plugins—Install Plugin from Disk…导入并安装&#xff0c;勾选为enabled。第二步&#xff1a;配置EasyApi 打开Settings—EasyApi&#xff0c;server设置为你的yapi地址&…

现代化个人博客系统 ModStartBlog v9.3.0 支持Laravel 9

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

新兴存内计算芯片架构、大型语言模型、多位存内计算架构——存内计算架构的性能仿真与对比分析探讨

一.大型语言模型&#xff08;LLM&#xff09; 近年来&#xff0c;基于注意力机制的大型语言模型&#xff08;LLM&#xff09;已经取得了令人瞩目的成功。这些模型的尺寸在不断增长&#xff0c;每两年增长240倍&#xff0c;而相应的计算需求则增长了近750倍。然而&#xff0c;硬…

本地搭建属于你自己的AI搜索引擎 支持多家AI模型

FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;并使用 MULTI LLM 生成答案&#xff0c;无需 GPU。用户可以提出问题&#xff0c;系统将进行多引擎搜索&#xff0c;并将搜索结果合并到LLM中&#xff0c;并根据搜索结果生成答案。全部免费使用。 项目…