3行代码让你拥有微信扫码能力:微信二维码引擎OpenCV开源

2021 年 2 月 3 日 微信AI


导语


“PC互联网的入口是搜索框,移动互联网的入口是二维码”。2011年12月,微信3.5版本正式上线“扫一扫”二维码,从此微信开始连接缤纷的物理世界。


微信扫码引擎开始从0到1,从开源到自研,从传统方法到深度学习的一步步迭代。9年的蜕变,“扫一扫”从二维码名片到扫码支付,从小程序码到健康码,二维码成为一种生活方式,连接着数字与现实。


现在,微信扫码引擎正式加入OpenCV,你也可以拥有微信一样的扫码能力。



微信扫码引擎


微信扫码引擎是一款基于开源引擎ZXing,并高度优化和深度改造的二维码识别器。微信中每天超10亿次的扫码调用,推动微信扫码引擎一次又一次的升级。精细的打磨和广泛的检验,让“扫一扫”成为业界强大的标杆性扫码工具。


如今,微信扫码引擎已服务于微信、企业微信、手机QQ、QQ浏览器等腾讯内外上百款产品。“高精度、跨平台、高性能”满足多样化场景的需求,显著地改善扫码体验,为用户习惯的培养保驾护航。


如今,微信二维码引擎正式加入OpenCV,3行代码让你拥有微信一样的扫码能力:


import cv2


detector = cv2.wechat_qrcode_WeChatQRCode("detect.prototxt", "detect.caffemodel", "sr.prototxt", "sr.caffemodel")

img = cv2.imread("img.jpg")

res, points = detector.detectAndDecode(img)

print(res, points)


开发文档:

https://docs.opencv.org/master/d5/d04/classcv_1_1wechat__qrcode_1_1WeChatQRCode.html



微信扫码引擎收录于opencv_contrib/modules/wechat_qrcode 模块中,由WeChatCV团队贡献(PR#2821)。


相比于原始的开源引擎ZXing,微信扫码引擎进行了大刀阔斧的深度改造。结合传统计算机视觉和深度学习技术,解决了一图多码、大图小码、鲁棒解码等业务痛点和技术难点。


一图多码


“一图多码”是扫码支付经常遇到的线下场景,二维码检测是其核心技术。早在2016年,微信扫码引擎在业内率先支持远距离二维码检测、自动调焦定位、多码检测识别。


然而,传统方法需要牺牲40%以上的性能来支持多码的检测与识别。伴随着深度学习技术的成熟和移动端计算能力的提升,微信扫码引擎引入基于CNN的二维码检测器解决上述问题。


我们以SSD框架为基础,构造了短小精干的二维码检测器(见图1),采用残差连接(Residual Concat)、深度卷积(Depthwise Convolution)、空洞卷积(Dilated Convolution)、卷积投影(Convolution Projection)等技术进行了针对性的优化。


整个模型大小仅943KB,iPhone7(A10)单CPU的推理时间仅需20ms,很好地满足“低延时、小体积、高召回”的业务需求。


检测代码:

https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L156


模型文件:

https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/detect.prototxt


参数文件:

https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/detect.caffemodel



图1:二维码检测器


大图小码


“大图小码”是远距扫码和长按识码经常面临的难点,二维码增强技术可以让小码更加清晰。


2014年,微信率先在对话中上线“识别图中二维码”能力,离不开增强技术的加持。在长按识别的场景中,二维码图像经过用户的裁剪、压缩、转发,图像质量严重受损,分辨率急剧下降,边缘变得模糊不清,这给扫码引擎的识别带来了极大的挑战。


然而传统图像增强算法很难完美地解决以上问题,因此微信扫码引擎率先在识别流程中引入了基于深度学习的超分辨率技术(见图2)。


在网络结构上,密集连接(Dense Concat)、深度卷积(Depthwise Convolution)、反向卷积(Deconvolution)、残差学习(Residual Learning)等技术改善模型的性能;在目标函数上,针对二维码强边缘和二值化的特点,结合L2/L1损失、边界加权、二值约束设计了针对二维码的目标函数。


经过精心的调优,超分辨率模型大小仅23KB,在iPhone7(A10)单CPU的推理时间仅需6ms(100x100超分200x200),完全满足移动端的应用需求。


超分代码:

https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L68


模型文件:

https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/sr.prototxt


参数文件:

https://github.com/WeChatCV/opencv_3rdparty/blob/wechat_qrcode/sr.caffemodel


图2:二维码超分辨率


鲁棒解码


除了深度学习的加持,微信扫码引擎不仅仅把AI武装到牙齿,对解码器也进行了深入的优化。


在定位点检测上,我们提出面积法的定位点检测方法,相比于传统扫描线方法更为鲁棒和高效,有效地避免了误召回和漏召回;在定位点匹配上,特征聚类方法使得扫码引擎可以高效和准确地匹配多个定位点;在图像二值化上,引入多种更为鲁棒的二值化方法,有效地提高解码的成功率。


核心代码:

https://github.com/opencv/opencv_contrib/blob/master/modules/wechat_qrcode/src/wechat_qrcode.cpp#L117


如今,微信扫码引擎在OpenCV上正式开源,期待广大开发者与我们一同打造业内领先的扫码引擎。与此同时,为了方便开发者更加便捷地应用和部署,我们也推出了移动端加速优化的商业版SDK和云端二维码检测识别服务的API。让二维码在移动互联网的浪潮中乘风破浪!


移动端SDK:

https://cloud.tencent.com/product/is


云端API:

https://developers.weixin.qq.com/doc/offiaccount/Intelligent_Interface/Img_Proc.html


 微信AI 

不描摹技术的酷炫,不依赖拟人的形态,微信AI是什么?是悄无声息却无处不在,是用技术创造更高效率,是更懂你。


微信AI关注语音识别与合成、自然语言处理、计算机视觉、工业级推荐系统等领域,成果对内应用于微信翻译、微信视频号、微信看一看等业务,对外服务王者荣耀、QQ音乐等产品。


登录查看更多
0

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
腾讯等发布《2022产业互联网安全十大趋势》报告,34页pdf
【AAAI2022】锚点DETR:基于transformer检测器的查询设计
专知会员服务
12+阅读 · 2021年12月31日
2021年中国云原生AI开发平台白皮书
专知会员服务
54+阅读 · 2021年12月4日
专知会员服务
21+阅读 · 2021年8月23日
专知会员服务
16+阅读 · 2020年10月18日
【CVPR 2020-商汤】8比特数值也能训练卷积神经网络模型
专知会员服务
25+阅读 · 2020年5月7日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
实践教程|使用 OpenCV 进行虚拟缩放
极市平台
0+阅读 · 2022年2月28日
微信扫一扫识物技术的从0到1
微信AI
0+阅读 · 2020年7月30日
微信攻AI,有软有硬
微信AI
0+阅读 · 2019年9月2日
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
tensorflow项目学习路径
北京思腾合力科技有限公司
10+阅读 · 2017年11月23日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
3+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Arxiv
0+阅读 · 2022年4月18日
Arxiv
0+阅读 · 2022年4月17日
Arxiv
11+阅读 · 2019年4月15日
VIP会员
相关VIP内容
腾讯等发布《2022产业互联网安全十大趋势》报告,34页pdf
【AAAI2022】锚点DETR:基于transformer检测器的查询设计
专知会员服务
12+阅读 · 2021年12月31日
2021年中国云原生AI开发平台白皮书
专知会员服务
54+阅读 · 2021年12月4日
专知会员服务
21+阅读 · 2021年8月23日
专知会员服务
16+阅读 · 2020年10月18日
【CVPR 2020-商汤】8比特数值也能训练卷积神经网络模型
专知会员服务
25+阅读 · 2020年5月7日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
相关资讯
实践教程|使用 OpenCV 进行虚拟缩放
极市平台
0+阅读 · 2022年2月28日
微信扫一扫识物技术的从0到1
微信AI
0+阅读 · 2020年7月30日
微信攻AI,有软有硬
微信AI
0+阅读 · 2019年9月2日
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
tensorflow项目学习路径
北京思腾合力科技有限公司
10+阅读 · 2017年11月23日
相关基金
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
3+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
Top
微信扫码咨询专知VIP会员