当前位置: 首页 > 编程日记 > 正文

UC伯克利开源照片“隐写术”StegaStamp,打印照片能当二维码用!| 技术头条

640?wx_fmt=jpeg

参加「CTA 核心技术及应用峰会」,请扫码报名 ↑↑↑

作者 |CV君

来源 | 我爱计算机视觉(id:aicvml)

要说目前最火的用到手机摄像头的应用是什么,毫无疑问非二维码识别莫属了。微信带起来的二维码热,几乎已经改变了整个世界的支付方式、社交方式。


但二维码的设计毕竟是为了对算法友好,人眼看起来就丑了些。


一种天然的想法是,能否把信息嵌入到照片里去?想象一下如果给一张个人大头照,就可以自动提取里面的名片信息,或者扫个风景照就支付,那看起来就自然多了。


实际上用图像检索的方式可以在一定程度上实现上述功能,提取特征然后到服务器上匹配图像,把对应信息下载下来。


传统的AR(增强现实)就是这么做的。但这需要联网,而且对于纹理不丰富的图片,检索效果很差,也没有很好的信息校正机制。以前有一家国内电商用类似图像检索的方式做过拍书籍封面搜商品的应用,但用的人并不是很多。


深度学习时代,能否实现照片“隐写术“?


几天前看到一篇论文,感觉距离实现这个目标不远了。


论文题目“StegaStamp: Invisible Hyperlinks in Physical Photographs”,翻译一下就是《隐写邮票:自然照片中嵌入不可见超链接》,Stega有隐写术的意思。


640?wx_fmt=jpeg


这篇论文作者来自美国加州大学伯克利分校。


作者的想法就是把信息写入图像中,使打印出来的图片感知度不被破坏,同时拍摄打印的图片还能把信息解码出来!


下图把这个一目了然表达了出来。需要说明的是,作者论文中说不只是打印照片支持拍照再解码,显示在屏幕上也能拍照后解码。


640?wx_fmt=jpeg


作者的视频介绍:



细节的流程是这样的,如下图:


640?wx_fmt=jpeg


图像与要嵌入的信息经过神经网络编码成新的照片,经过打印或者屏幕显示后再拍摄,把得到的图像经过检测算法得到校正后的图像区域,该图像经过解码算法得到嵌入图像里的信息。


这个过程中,我们不免有疑问,信息嵌入会不会影响照片的视觉感知?另外,信息嵌入是可以,但经过打印或者再次成像后拍照,外界的环境变化可能很大,如何保证提取信息的鲁棒性?


在目前该文的算法中,嵌入信息过多的确会影响视觉感知,但作者实验嵌入100bits信息还是OK的。


下图展示了,嵌入信息后(第二列)与原始图像(第一列)的差异(第三列)。视觉上几乎难以分辨不同。


640?wx_fmt=jpeg


至于解决鲁棒性的问题,做法是在训练解码器的时候,模拟真实的图像质量退化模型对嵌入信息的图像做变换。如下图:


640?wx_fmt=jpeg


包括图像透视变换、模糊化、颜色操作、加噪声、JPEG压缩。


最终该文得到的效果还是很不错的!


640?wx_fmt=jpeg


在大多数情况下都能100%正确解码!


下图为更多图像的识别结果:


640?wx_fmt=jpeg


同时该算法对各种真实世界的环境影响均有鲁棒性。


这是对抗光照变化:


640?wx_fmt=gif


这是对抗视角变化:


640?wx_fmt=gif


这是对抗局部遮挡:


640?wx_fmt=gif


这是对抗光线反射:


640?wx_fmt=gif


更多结果请看:



是不是很神奇?!


这个算法感觉很有用,不知道作者申请了专利没有。


作者已经开源了代码:

https://github.com/tancik/StegaStamp

该项目主页:

http://www.matthewtancik.com/stegastamp

论文地址:

https://arxiv.org/abs/1904.05343


有了这个技术,很多有趣的东西可以做出来,它不仅可以作为超链接,还可以在用户不知情的情况下对照片和屏幕嵌入信息。。。


(本文为AI科技大本营转载文章,转载请联系原作者。


精彩推荐

5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开。首届CTA核心技术及应用峰会将围绕人工智能,邀请技术领航者与开发者共同探讨机器学习知识图谱的前沿研究及应用。


同时,我们推出会议双日开发者盲定票,仅售299元(原票价1099元),限量30张。扫描下方二维码,或添加小助手微信1731967109,备注【CTA】,了解大会详情以及票务问题


640?wx_fmt=png


推荐阅读:

  • 开什么玩笑?股票价格如何经得起AI的推敲?| 技术头条

  • 深入卷积神经网络背后的数学原理 | 技术头条

  • 用Python实现OpenCV特征提取与图像检索demo

  • Python基础入门——简介和环境配置,超实用!

  • 云计算之基,一文带你速懂虚拟化KVM和XEN

  • Erlang 之父去世,他留给程序员两点忠告

  • 程序员逆袭为美国最佳 CEO,他说因为爱情

  • 用一枚比特币环游世界? 他是不是疯了...

  • 程序员如何向女友解释:为啥软件都要装C盘?

640?wx_fmt=png

点击“阅读原文”,直接参与大会报名

相关文章:

你为世界杯而战,我为生活而战!

这什么23时直播揭幕战俄罗斯vs沙特 开始时间!很庆幸见到了本世界坏中第1个球!(四年一次比赛,四年一博!)接下来看看我在奋斗什么?(人生随时进行比赛,错了、对了、再错了、再对了、只要不放弃学习就有未来!)********************************************…

【C++】重载、重写、隐藏

1、重载:在同一个作用域中两个及以上的函数名相同但是参数个数或类型不同时构成重载,重载的本质是,编译后的函数会有不同的签名; 2、重写:这是类继承中的概念,基类中virtual标记的函数,在派生类…

有了它,AI甚至可以让你知道对方是否真的爱你?

“你到底爱不爱我?”这或许是恋爱双方出现频率最高的问题,想要知道对方大脑在想什么,并不是什么天方夜谭,通过科学技术还真的有望实现。不过,让如此大胆的想法变为现实,我们需要借助什么技术呢?…

基于jwt的用户登录认证

最近在app的开发过程中,做了一个基于token的用户登录认证,使用vuenodemongoDB进行的开发,前来总结一下。 token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信息到服务器端。 2&…

跨平台网络游戏趋势和优势

跨平台网络游戏趋势和优势 前几年还是网页游戏蓬勃发展的状态,就有分析指出从明年开始网页游戏市场已经饱和,想想几年前客户端游戏也是同样的窘境,如果将桌面、移动设备、网页统称一个词汇的话,那就是终端,现在各种的终…

IAR生产HEX文件

刚刚接触IAR,编译默认生成的是.a90文件,但直接用avr studio下载时提示非正规HEX文件,不给我下载,郁闷了。 其实也简单,如下图所示配置文件后面加几行字就OK了。 //Output File -Ointel-extended,(XDATA).eep -Ointel-e…

【Qt】重新认识QObject

1、QObject父子对象的是设计模式中组合模式的实现。父对象和基对象不是一个概念,前者是在运行时管理子对象,是动态的,后者是在编译时判定派生关系,是静态的。 2、每个QObject至多有一个父对象,父对象中将子对象的指针放…

抛弃VS Code,我还能用啥编辑器?| 技术头条

作者 | Abhishek Prakash译者 | 苏本如责编 | 屠敏转载自 CSDN(ID:CSDNnews)微软的VS Code无论对Web开发人员或其他程序员来说,都是一款优秀的代码编辑器。凭借其出色的功能,VS Code被认为是最好的开源代码编辑器之一。…

WebClient UI和Tomcat的启动器

WebClient UI 我们在WebClient UI的开发工具里点了Test按钮, 会在浏览器以测试模式打开选中的view。这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是什么东西?Jerry倾向于把它当作是CRM WebClient UI component在测试模…

通过网络安装VMware ESX Server 5

VMware ESX Server的宿主系统是基于Linux定制开发的,所以,它也和所有的Linux系统一样,除了支持光盘引导安装外,还支持基于PXE的网络引导与安装。在VMware ESX Server 4及其以前的版本中,在通过网络远程安装的时候&…

实战:CNN+BLSTM+CTC的验证码识别从训练到部署 | 技术头条

作者|_Coriander转载自Jerry的算法和NLP(ID: gh_36eba310d433)1.前言本项目适用于Python3.6,GPU>NVIDIA GTX1050Ti,原master分支已经正式切换为CNNLSTMCTC的版本了,是时候写一篇新的文章了。长话短说,开…

MySql练习题参考答案

表结构: /*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version …

【Qt】Qt源码中涉及到的设计模式

1、单例模式 qApp宏返回指向QApplication的单例 #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))2、MVC模型视图控制器框架 模型是应用程序对象、视图是它的屏幕显示、控制器定义了用户界面对用户输入的反应。 Qt的模型视图框架是经典的MV…

从当前日期算起,获取几天前的日期和几个月前的日期

/*** 从当前日期算起&#xff0c;获取N天前的日期&#xff08;当前日不算在内&#xff09;&#xff0c;日期格式为yyyy-MM-dd* * param daily 天数* return */public static String getDateByDay(Integer daily) {Date date new Date();int year Integer.parseInt(new Simple…

清华大学人工智能研究院成立听觉智能研究中心,将专注基础研究和成果产业化

4月22日&#xff0c;清华大学人工智能研究院听觉智能研究中心&#xff08;以下简称听觉中心&#xff09;成立仪式暨学术前沿报告会在清华大学FIT楼举行。 清华大学副校长、人工智能研究院管委会主任尤政院士在致辞中表示&#xff0c;成立听觉中心是清华大学加速推进人工智能发…

两道面试题,带你解析Java类加载机制

2019独角兽企业重金招聘Python工程师标准>>> 在许多Java面试中&#xff0c;我们经常会看到关于Java类加载机制的考察&#xff0c;例如下面这道题&#xff1a; class Grandpa {static{System.out.println("爷爷在静态代码块");} } class Father extend…

【Qt】监视文件和目录的修改:QFileSystemWatcher

一、说明 QFileSystemWatcher用于监视指定文件或目录列表的更改。 注意:监视文件或目录时需要打开相应的文件描述符,因此被监视的文件或目录数据是有限的,受系统允许的文件描述符数据等限制。 二、常用成员函数 1、public 构造、析构函数: QFileSystemWatcher(const QS…

asp.net 2.0中新增的AppendDataBoundItems .dropdownlist 添加第一项

在asp.net 2.0中&#xff0c;新增了一个AppendDataBoundItems属性&#xff0c;十分方便&#xff0c;使可以在执行数据绑定之前将项添加到 listcontrol 对象中。执行数据绑定之后&#xff0c;项集合中包含数据源中的项以及以前添加的项。如果不在绑定数据之前清除列表项&#xf…

用Python实现OpenCV特征提取与图像检索 | Demo

参加「CTA 核心技术及应用峰会」&#xff0c;请扫码报名 ↑↑↑作者&#xff5c;Andrey Nikishaev翻译 | 张蔚敏审校 | reason_W来源 | Python大本营&#xff08;id&#xff1a;pythonnews)“拍立淘”“一键识花”“街景匹配”……不知道大家在使用这些神奇的功能的时候&#x…

【ffmpeg】编译时报错:error: undefined reference to `av...

1、问题描述 昨天使用ffmpeg库编译demo一切正常,今天再次链接ffmpeg库时报了一堆错误: error: undefined reference to `av_frame_alloc() error: undefined reference to `avio_close(AVIOContext*) error: undefined reference to `avcodec_find_encoder(AVCodecID) erro…

Spring Initializr 构建Spring Boot/Cloud工程

2019独角兽企业重金招聘Python工程师标准>>> 在之前的所有Spring Boot和Spring Cloud相关博文中&#xff0c;都会涉及Spring Boot工程的创建。而创建的方式多种多样&#xff0c;我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建&#xff0c;也可以通过《Sp…

linux下用phpize给PHP动态添加扩展

使用php的常见问题是&#xff1a;编译php时忘记添加某扩展&#xff0c;后来想添加扩展&#xff0c;但是因为安装php后又装了一些东西如PEAR等&#xff0c;不想删除目录重装&#xff0c;别说&#xff0c;php还真有这样的功能。 我没有在手册中看到。 如我想增加bcmath支持&…

“996 是福利,007 才是常态”?!千万程序员怒怼每日优鲜!

呔&#xff01;热度不是你想蹭&#xff0c;想蹭就能蹭……作者 | 仲培艺封图 | CSDN 付费下载自东方IC出品 | 程序人生&#xff08;ID&#xff1a;coder_life&#xff09;App Store 评分一日之间从 4.5 断崖直降至 1.5&#xff0c;每日优鲜这是怎么了&#xff1f;究其原因——大…

亚太信息安全领袖成就表彰计划:阿里成中国互联网公司唯一代表

近日&#xff0c;全球最大的信息安全非营利会员组织(ISC)公布了第十二届年度亚太区信息安全领袖成就&#xff08;亚太区ISLA&#xff09;表彰计划的获奖者&#xff0c;共有17名人员获得此项殊荣。据悉&#xff0c;(ISC)将于2018年7月9日在香港举行的庆典活动中表彰这17名获奖者…

【C++】clipp 一个命令行参数解析器

1、简介 clipp是一个使用方便、功能强大的命令行解析器&#xff0c;源码只有一个头文件《clipp.h》 github地址&#xff1a;https://github.com/muellan/clipp 2、使用 只演示最简单的例子&#xff0c;更复杂的参见源码中《README.md》。 例如需要如下命令行参数 用法&…

Oracle 聚合函数(Aggregate Functions)说明

Oracle Aggregate Functions用过很多&#xff0c;官网的说明如下&#xff1a;Aggregate Functionshttp://docs.oracle.com/cd/E11882_01/server.112/e26088/functions003.htm#SQLRF20035Aggregatefunctions return a single result row based on groups of rows, rather than o…

【OpenCV】正确创建用于保存YUV420P格式的cv::Mat

1、问题描述 cv::Mat保存RGB24或BRG24格式时&#xff0c;传入宽、高和格式类型CV_8UC3就行了&#xff1b;今天在创建cv::Mat用来保存YUV420P时&#xff0c;有点懵圈了&#xff0c;因为类型是CV_8UC1&#xff0c;直接传宽和高&#xff0c;只能保存Y分量。因此需要宽或者高乘以一…

特斯拉全新自动驾驶芯片最强?英伟达回怼,投资者用脚投票

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;马斯克前脚刚说完自家发布的自动驾驶计算机是全球最强&#xff0c;后脚就被英伟达怼了。在刚刚结束的自动驾驶投资者日上&#xff0c;特斯拉发布了全自动驾驶&#xff08;FSD&#xff09;计算机&#xff08…

2012年我的十大工程9——形象工程

形象对于每一个人来说都很重要&#xff0c;人以群分&#xff0c;物以类聚&#xff01;说的就是这个道理&#xff0c;不同的人接触不同的社会&#xff0c;不同的级别接触不同的层面。还记得我【千日计划】项目中怎么说的吗&#xff1f;第七项&#xff1a;改良自己的外貌形象。老…

【MySQL】ubuntu16.04安装mysql,然后源码编译Qt5.12.4版本的libqsqlmysql.so

一、Ubuntu16.04.5 安装 MySQL 1、使用apt命令安装 sudo apt install mysql-server安装过程会提示,推荐设置MySQL的root用户密码(注意:这里root不是指ubuntu系统的root) While not mandatory, it is highly recommended that you set a password for the MySQL administr…