目的

全网的身份证识别大部分都是通过识别整张图片,然后再对数据进行格式化解析,这会照成很大的局限性,比如非摆正图片,图片上有其他干扰信息,这就会导致通过此方式来识别大大降低了准确率和不确定性。这篇文章将会通过专业性角度来讲解如何更好的进行相关卡证的识别。

准备工作

在进行讲解之前,需要先做好以下准备:

1、安装PyCharm进行开发,Download PyCharm: Python IDE for Professional Developers by JetBrains

2、下载relese/2.6版本的PaddleOCR,git clone -b release/2.6 https://github.com/PaddlePaddle/PaddleOCR.git

3、学习此篇文章【基于PaddleOCR的DBnet多分类文本检测网络】,这里就用到了多分类文本检测网络来达到我们的需求。

实现识别

1、数据集格式

分类文本:前六个分类是身份证正面,后两个分类是身份证背面

2、修改配置

数据集分两部分,一部分是真实数据,另一部分是合成数据。

注:Eval.transforms.DetResizeForTest设置resize_long: 960

Global:...label_list: "train_data/sfz/label_list.txt" #新增一个分类文件num_classes: 9    # 新增一个分类数量...Train:dataset:name: SimpleDataSetdata_dir: train_data/sfz/label_file_list:- "train_data/sfz/real/real_det_train.txt"- "train_data/sfz/shenfenzheng/det_train.txt"ratio_list: [ 1.0 , 0.2 ]...transforms:...- KeepKeys:keep_keys: [ 'image', 'threshold_map', 'threshold_mask', 'shrink_map', 'shrink_mask', 'class_mask' ] # 新增一个class_mask...Eval:dataset:name: SimpleDataSetdata_dir: train_data/sfz/label_file_list:- "train_data/sfz/real/real_det_test.txt"- "train_data/sfz/shenfenzheng/det_test.txt"ratio_list: [ 1.0 , 0.2 ]transforms:- DecodeImage: # load imageimg_mode: BGRchannel_first: False- DetLabelEncode: # Class handling label- DetResizeForTest:resize_long: 960...

3、执行命令进行GPU训练

python -m paddle.distributed.launch --gpus 0 tools/train.py -o Global.use_visualdl=True -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_sfz.yml

4、显示运行图

从图上可以看到多出一个多分类loss_classes 运行图,根据本数据集测试,hmean的值可达到99%以上。

5、验证模型

调整infer_det.py绘制代码,添加文本显示。

def draw_det_res_and_label(dt_boxes, classes, config, img, img_name, save_path):label_list = config["Global"]["label_list"]labels = []if label_list is not None:if isinstance(label_list, str):with open(label_list, "r+", encoding="utf-8") as f:for line in f.readlines():labels.append(line.replace("\n", ""))else:labels = label_listif len(dt_boxes) > 0:import cv2index = 0src_im = imgfor box in dt_boxes:box = box.astype(np.int32).reshape((-1, 1, 2))cv2.polylines(src_im, [box], True, color=(255, 255, 0), thickness=2)font = cv2.FONT_HERSHEY_SIMPLEXsrc_im = cv2.putText(src_im, labels[classes[index]], (box[0][0][0], box[0][0][1]), font, 0.5, (255, 0, 0), 1)index += 1if not os.path.exists(save_path):os.makedirs(save_path)save_path = os.path.join(save_path, os.path.basename(img_name))cv2.imwrite(save_path, src_im)logger.info("The detected Image saved in {}".format(save_path))
python tools/infer_det.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_sfz.yml -o Global.pretrained_model=./output/ch_db_mv3_sfz/best_accuracy Global.infer_img=E:\dataset\shenfenzheng\images\det\001.png

6、导出模型

python tools/export_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0_sfz.yml -o Global.pretrained_model="./output/ch_db_mv3_sfz/best_accuracy" Global.save
_inference_dir="./inference/ch_db_mv3_sfz/"

模型非常小,仅仅比没有分类文本检测模型大一点点。

小结

到这一步,身份证多分类检测模型就完成了,测试效果非常好,再配合PaddleOCR本身的文字检测和识别功能,可达到非常好的效果,支持各种格式身份证识别,例如藏族、朝鲜族和维吾尔族等,完全可达到商业级别,加QQ【2952855968】可以获取身份证识别模型和python、c++、端侧等部署代码。

模型下载地址:身份证多分类检测模型

基于PaddleOCR的DBNet多分类文本检测网络之身份证识别相关推荐

  1. 基于PaddleOCR的多视角集装箱箱号检测识别,实现模型串联推理

    ★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 一.项目介绍 集装箱号是指装运出口货物集装箱的箱号,填写托运单时必填此项.标准箱号构成基本概念:采 ...

  2. CTPN文本检测网络

    CTPN文本检测网络 简介 网络模型 anchor机制 损失函数 训练 代码实现 简介 CTPN,全称Connectionist Text Proposal Network,连接文本建议网络. 它是用 ...

  3. PSENet PANNet DBNet 三个文本检测算法异同

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行seg ...

  4. 分割文本_PSENet、PANNet、DBNet三个文本检测算法异同

    点击蓝字关注我们 这三个文本检测算法都是segment base算法,通过由下而上的方式,先对text进行segment,然后再根据segment text,计算出text的instance PSEN ...

  5. AI实战:基于AdvancedEAST的自然场景图像文本检测算法

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx EAST文本检测与Keras实现 https://blog.csdn.net/linchuha ...

  6. 丢弃Transformer!旷视和西安交大提出基于FCN的端到端目标检测网络

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:王剑锋  | 编辑:Amusi https://zhuanlan.zhihu.com ...

  7. Lidar-RCNN:基于稀疏点云的3D目标检测网络(CVPR2021)

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/390322842 编辑丨3D视觉工坊 论文标题:LiDAR R-CNN: An Efficient and Univ ...

  8. IDA-3D:基于立体视觉的深度感知3D目标检测网络(CVPR2020)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:IDA-3D: Instance-Depth-Aware 3D Object Detection ...

  9. 深度解析文本检测网络CTPN

    不同于网上千篇一律讲解CTPN的文章,本文将使用大量可视化过程来帮助大家理解CTPN,完整重现CTPN所有细节. 先用一张动图过一遍CTPN全过程,接下来开始我们的讲解. 目录 文本检测概念初识 CT ...

最新文章

  1. UVA 536 TreeRocvery 树重建 (递归)
  2. SQL SERVER数据页checksum校验算法
  3. CVPR 2017论文集锦
  4. 常见ETL工具一览,你知多少?
  5. JAVA计算机存储单元概述及数据类型
  6. [洛谷P4174][NOI2006]最大获利
  7. 《你不知道的JavaScript》中卷 KYLE SIMPSON 著 单业 姜南 译
  8. 一个间歇性进程hang问题的处理
  9. sql 截取字符串:
  10. 线上事故复盘报告模板
  11. itext7实现参数和图片替换
  12. vbs查看系统开关机时间
  13. 朋友圈大数据:你的朋友圈出卖了你,大数据就是这么给力!!!
  14. 爬虫-豆瓣书籍排行榜及用户信息-2021.7.23-使用Scrapy框架-用MongoDB存储数据
  15. 387:字符串中的第一个唯一字符
  16. 例举计算机网络连接的主要对象,《计算机网络技术基础教程》课后习题答案_刘四清版...
  17. 张博涵清华大学_清华大学人文学院
  18. 几行代码实现用Python输出表情包
  19. js室内地图开发_室内地图 JavaScript API
  20. COOX培训材料 — SCADA(6.Silo)

热门文章

  1. 6s全网通显示无服务器,新版iPhone 6s入网工信部,全网通惨遭阉割 _手机资讯
  2. 微信分享 JS 失效
  3. python 用*绘制菱形
  4. Electron-读写本地文件
  5. 数计学院小苹果---2015年迎元旦晚会
  6. 谷歌浏览器运行缓慢_为什么新的Google地图在我的计算机上运行缓慢得难以忍受?
  7. Android源码中添加一个PTT的按键
  8. 为自动化测试装上精准测试的“翅膀
  9. 云下阴影:云计算中的影子IT会产生怎样的影响?
  10. 从解读微表情、法律条文到合约金融壹账通惊艳世界人工智能大会