用深度学习来识别二维码,应该挺简单吧? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
sillydaddy
0.65D
0.15D
V2EX    奇思妙想

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

  •  
  •   sillydaddy 2020-09-29 13:52:53 +08:00 5227 次点击
    这是一个创建于 1906 天前的主题,其中的信息可能已经有所发展或是发生改变。
    训练素材基本不是问题,对着一个二维码,从各个角度和光照下都录一段视频,每帧图像都可以作为训练数据。

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

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

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

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

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

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

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

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

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

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

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

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

    至于为什么不做专门的二维码降噪,我在生活中的体验是现在微信的二维码扫描已经基本无敌了,几乎很少有肉眼能看清但是扫不出来的情况存在。更何况糊到一定程度信息就丢失了,别说 ai 了怕是神仙也难救。花大价钱解决很少的几个 case,估计不怎么能回本
    superlc
        10
    superlc  
       2021-02-01 00:31:17 +08:00   1
    @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
        11
    sillydaddy  
    OP
       2021-02-01 18:05:06 +08:00
    @superlc
    > “结合传统计算机视觉和深度学习技术,微信扫码引擎解决了一图多码、大图小码、鲁棒解码等业务痛点和技术难点”

    看这个说明,不知道开放的源码能不能解决类似反光高光这种情形。实际微信扫码时,似乎能比较好的处理反光高光的情况。
    pheyer
        12
    pheyer  
       2021-02-02 13:57:38 +08:00
    @sillydaddy 根据我的日常使用实践,我感觉微信识别二维码还是差于支付宝的
    crazyweeds
        13
    crazyweeds  
       2023-01-22 23:48:05 +08:00
    @pheyer 同感,但开源出来的,识别能力最强的目前应该就是腾讯这个方案。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4935 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:37 PVG 17:37 LAX 01:37 JFK 04:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86