用深度学习来识别二维码,应该挺简单吧?

2020-09-29 13:52:53 +08:00
 sillydaddy
训练素材基本不是问题,对着一个二维码,从各个角度和光照下都录一段视频,每帧图像都可以作为训练数据。

另外,二维码的特性也非常适于深度学习来解决:边角的特征、图像单元的特征。并没有比识别猫、狗复杂。

我试过 zxing/zbar 这些程序,检测正确率没有微信、支付宝这些商业软件高。

不用 AI 是移动端运算效率的问题吗?

网上搜索发现了一个用云端 AI 检测的: "人工智能二维码识别" ( https://yq.aliyun.com/articles/710415 )
4486 次点击
所在节点    奇思妙想
13 条回复
Ricardoo
2020-09-29 14:05:44 +08:00
二维码这种标准格式的根本没必要上深度学习。深度学习是提取图像特征,但是二维码本身的格式规范就是一种有效的“特征”,绕远路放弃这种特征反而去搞深度学习不是本末倒置吗?至于你说的阿里云上的“人工智能二维码识别”可能仅仅是加上了一个图像变换
BrettD
2020-09-29 14:08:13 +08:00
二维码本来就有清晰定义的识别方法,用深度学习识别二维码不是舍近求远吗?
dingwen07
2020-09-29 14:08:44 +08:00
二维码机器学习可能只能帮着在图像中正确找到二维码的定位点
从二维码中读取信息不应该用机器学习,二维码本身就是设计为方便机器读取的,和猫狗有着本质上的区别,没必要用机器学习。
kop1989
2020-09-29 14:12:32 +08:00
lz 的表达可能有说的有点偏。我揣测 lz 是想说通过 ai 来进行二维码图片自纠,或者叫识别效率的提升。并不是做识别解析本身。

机器学习是用来找复杂事务的规律的。
换句话说,是通过迭代验证来建立人脑无法抽象建立的复杂规则模型。

二维码 QR 标准本身就是一个非常准确的量化模型,不需要学习。
lz 发出来的这个其实他的 ai 就是用在了图片的自纠上。

不过这个产品未必用的是机器学习这条路。因为 QR 码本身足够稳定,人工来优化应该就能得到很好的效果。“大数据”,“人工智能”没准只是销售词汇。
imn1
2020-09-29 14:47:23 +08:00
学习什么?用途?目的?

是分析照片中有没有二维码,还是分析二维码的类别?
sillydaddy
2020-09-29 14:50:57 +08:00
@Ricardoo
@BrettD
@dingwen07
@kop1989

二维码的定义是非常清晰,然后它的定位点也是非常适合算法识别:“只要扫描图形的一行像素,发现黑白像素的数目比例符合 1:1:3”就找到二维码角点了,图像旋转、稍微倾斜都不影响这一点。

但有个现实的问题就是:zxing/zbar 这些算法,利用上面的算法,还是不能达到很好的识别效果,不够智能。比如有光影的变化,黑白的失真,比如像我发的链接里面有大的倾斜,比如二维码占据的图像部分或大或小。

总之是 zxing/zbar 这些不够智能。这里的智能的标准就是:只要一张二维码图像,用人肉眼可以识别出来(一个个地数黑白格子),那么机器就应该识别出来。
charten
2020-09-29 15:45:07 +08:00
当初微信为了小程序,专门搞了一个二维码的变种“小程序码”,但是基本的图形特征还是有的。这说明了一些公司对于二维码个性化还是有追求的,而且对于目前二维码的特征样式有所不满。与其去识别目前的二维码,不如思考一下,设计一个弱特征点的二维码,最好是相对美观而且更容易契合宣传物料的,然后训练 AI 识别出来。人眼可以一下子识别出来,但是对于计算机视觉比较困难,这个不正式 AI 的一个优势之处么?
futou
2020-09-29 16:17:02 +08:00
二维码是一个完善的编解码系统,由信息到二维码再到信息的编码和解码是唯一的,同时考虑到拍摄条件的鲁棒性。深度学习可能也就在鲁棒性这个地方有一丢丢用武之地了。
前几年还有人研究美观问题,是怎样将目标图片和二维码混到一起而不影响信息读取的问题,比如 "2015_TMM_Efficient QR code beautification xxx"。这几年很多自定标准的二维码出来后研究的就少了。
superlc
2020-09-29 16:55:42 +08:00
非要做的话,应该是用 DL 的方法做降噪 /提取 /锐化 /超像素,然后再用传统方法识别,相当于预处理。实际上这部分已经存在在很多手机的摄像头驱动里了

DL 的本质是拟合高维函数,在原编解码方式已知的情况下去拟合,是我拟我自己,相当于放着开源代码不看去做逆向工程,没意义的

至于为什么不做专门的二维码降噪,我在生活中的体验是现在微信的二维码扫描已经基本无敌了,几乎很少有肉眼能看清但是扫不出来的情况存在。更何况糊到一定程度信息就丢失了,别说 ai 了怕是神仙也难救。花大价钱解决很少的几个 case,估计不怎么能回本
superlc
2021-02-01 00:31:17 +08:00
@superlc 来 update 了,腾讯刚刚开源了微信的二维码识别算法在 opencv-contrib 里
https://docs.opencv.org/master/d5/d04/classcv_1_1wechat__qrcode_1_1WeChatQRCode.html
https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L156

这里有一个简介 https://mp.weixin.qq.com/s/pphBiEX099ZkDV0hWwnbhw

我还是低估了腾讯的能(财)力,他们真的用了 CNN 在里面,而且不止一个模型。除了上面我提到的超分辨率和降噪,竟然还有一个 SSD-like 模型用 CNN 做检测,牛的
sillydaddy
2021-02-01 18:05:06 +08:00
@superlc
> “结合传统计算机视觉和深度学习技术,微信扫码引擎解决了一图多码、大图小码、鲁棒解码等业务痛点和技术难点”

看这个说明,不知道开放的源码能不能解决类似反光高光这种情形。实际微信扫码时,似乎能比较好的处理反光高光的情况。
pheyer
2021-02-02 13:57:38 +08:00
@sillydaddy 根据我的日常使用实践,我感觉微信识别二维码还是差于支付宝的
crazyweeds
2023-01-22 23:48:05 +08:00
@pheyer 同感,但开源出来的,识别能力最强的目前应该就是腾讯这个方案。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/711552

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX