敞开成长之旅!这是我参加「日新方案 · 12 月更文挑战」的第3天,点击查看活动详情。

  • 一,EasyOCR

    • 1.1,库房介绍
    • 1.2,运用记载
  • 二,HyperLPR

    • 2.1,HyperLPR 概述
    • 2.3,运用记载
    • 2.3,运用主张
  • 三,simple-car-plate-recognition-2

    • 3.1,库房介绍
    • 3.2,运用记载
    • 3.3,运用主张
  • 四,车牌检测-License-Plate-Detector

    • 4.1,库房介绍
    • 4.2,主张
  • 五,MMOCR

    • 5.1,库房介绍
    • 5.2,运用记载
    • 5.3,运用主张
  • 六,推荐 YOLOv5-LPRNet-Licence-Recognition

    • 6.1,库房介绍
    • 6.2,运用记载

一,EasyOCR

1.1,库房介绍

EasyOCR 是一个用于从图像中提取文本的 python 库, 它是一种通用的 OCR,既能够读取天然场景文本,也能够读取文档中的密布文本。现在支撑 80 多种语言和所有流行的书写脚本,包含:拉丁文、中文、阿拉伯文、梵文、西里尔文等。

EasyOCR 库房 截止到 2022-11-8日,star 数为 16.2k,其文件目录和作者给出的一些示例作用如下。

├── custom_model.md
├── Dockerfile
├── easyocr
├── easyocr.egg-info
├── examples
├── LICENSE
├── MANIFEST.in
├── README.md
├── releasenotes.md
├── requirements.txt
├── scripts
├── setup.cfg
├── setup.py
├── trainer
└── unit_test

image

1.2,运用记载

1,装置较为费事

在自行装置了 cuda 库和 pytorch 的基础上,可经过 pip install easyocr 指令装置 easyocr 库,可是注意卸载掉之前装置的 opencv-python 库(如果有)。

2,代码主动下载模型速度很慢

下载的库房里边默认是不供给任何模型的,因而第一次运转快速推理脚本会主动下载对应的 ocr 模型,可是!如果网络不稳定,其下载速度十分慢,试了 n 次,根本不可能下载成功。

所以一般必须经过 Model hub 页面凭借浏览器手动点击下载对应中英文 ocr 辨认模型,然后手动把模型文件移动到 ~/.EasyOCR/model 文件夹下。

EasyOCR 库房主要是经过 download_and_unzip 接口下载对应模型文件的,其也是经过调用 urllib 模块供给的 urlretrieve() 函数来完成文件的下载,其定义如下:

def download_and_unzip(url, filename, model_storage_directory, verbose=True):
    zip_path = os.path.join(model_storage_directory, 'temp.zip')
    reporthook = printProgressBar(prefix='Progress:', suffix='Complete', length=50) if verbose else None
    # url 下载链接,zip_path 文件保存的本地路径, reporthook 运用这个回调函数来显现当前的下载进展
    urlretrieve(url, zip_path, reporthook=reporthook)
    with ZipFile(zip_path, 'r') as zipObj:
        zipObj.extract(filename, model_storage_directory) # 解压到指定目录
    os.remove(zip_path) # 移除下载的压缩包文件

3,车牌场景辨认准确率十分低

经过我的大量测验,其在我国车牌场景下辨认率简直为 0,我猜想是因为作者供给的练习模型所用的练习数据没有车牌场景的,而 ocr 作用又十分依靠场景数据,所以导致轿车车牌辨认率简直为 0 ,具体实践作用如下。

image

二,HyperLPR

2.1,HyperLPR 概述

HyperLPR 结构是 github 作者 szad670401 开源的根据深度学习高性能中文车牌辨认结构,支撑多渠道,供给了 Window、Linux、Android、IOS、ROS 渠道的支撑。 Python 依靠于 Keras (>2.0.0) 和 Theano(>0.9) or Tensorflow(>1.1.x) 机器学习库。项目的 C++ 完成和 Python 完成无任何关联,均为单独完成

作者供给的测验用例作用如下:

image

2.3,运用记载

库房 README 文件描讲述 HyperLPR 结构对 python 包支撑一键装置: pip install hyperlpr 。可是经过我实践测验发现,pip install hyperlpr 指令只能成功装置 hyperlpr 库.

1,快速上手的 py 代码运转会犯错:

image

2,我把 demo 代码移动到 hyperlpr_py3 目录下运转,不再报上图的错误,可是又报了 opencv 函数版别的问题。

hyperlpr) root@crowd-max:/framework/HyperLPR/hyperlpr_py3# python test.py 
(1, 3, 150, 400)
40 22 335 123
Traceback (most recent call last):
  File "test.py", line 7, in <module>
    print(HyperLPR_plate_recognition(image))
  File "/opt/miniconda3/envs/hyperlpr/lib/python3.8/site-packages/hyperlpr/__init__.py", line 8, in HyperLPR_plate_recognition
    return PR.plate_recognition(Input_BGR,minSize,charSelectionDeskew)
  File "/opt/miniconda3/envs/hyperlpr/lib/python3.8/site-packages/hyperlpr/hyperlpr.py", line 311, in plate_recognition
    cropped_finetuned = self.finetune(cropped)
  File "/opt/miniconda3/envs/hyperlpr/lib/python3.8/site-packages/hyperlpr/hyperlpr.py", line 263, in finetune
    g = self.to_refine(image_, pts)
  File "/opt/miniconda3/envs/hyperlpr/lib/python3.8/site-packages/hyperlpr/hyperlpr.py", line 231, in to_refine
    mat_ = cv2.estimateRigidTransform(org_pts, target_pts, True)
AttributeError: module 'cv2' has no attribute 'estimateRigidTransform'

3,ubuntu16.04+python3.8+cuda11.0 环境下,pip install -r requirements.txt 指令装置依靠包仍然会犯错。

image

2.3,运用主张

个人主张直接运用 C++ 版别,截止到 2022-11-8 日停止,纯 Python 版别仍是有各种问题。

三,simple-car-plate-recognition-2

3.1,库房介绍

simple-car-plate-recognition-2库房 简称:简易车牌字符辨认 2-Inception/CTC

作者运用的字符辨认模型是参阅 HyperLPR 里边的一个叫 SegmenationFree-Inception 的模型结构,并改用 pytorch 结构完成,然后练习模型,最后测验用整张车牌图片进行字符辨认。

作者所用的车牌练习集,是运用 generateCarPlate 这个车牌生成工具生成的。

3.2,运用记载

直接用车牌做辨认,实践测验下来,不管用作者给的模型,仍是自己练习的模型,作用都很差

image

3.3,运用主张

尽管代码简单,模型结构容易看懂,可是不主张运用,作用不稳定和太差。

四,车牌检测-License-Plate-Detector

4.1,库房介绍

License-Plate-Detector 库房 作者运用 Yolov5 模型进行了车牌检测,练习集运用 CCPD 数据集,测验作用如下:

image

4.2,主张

不主张运用,代码写的不行整齐,运用不行便利,运用 yolov5** 用作车牌检测的模型**的办法仍是能够参阅下。

五,MMOCR

5.1,库房介绍

mmocr 是商汤 + openmmlab 实验室开发的 OCR 结构MMOCR 是根据 PyTorchmmdetection 的开源工具箱,专心于文本检测,文本辨认以及相应的下游使命,如要害信息提取。 它是 OpenMMLab 项目的一部分。

主分支现在支撑 PyTorch 1.6 以上的版别。mmocr 库的装置,可参阅我之前的文章-ubuntu16.04装置mmdetection库。

5.2,运用记载

1,官方供给中文字符辨认模型只要一个,其运用过程如下:

  1. 创立 mmocr/data/chineseocr/labels 目录;
  2. 为了模型推理成功,下载中文字典,并放置到 labels 目录;
wget -c https://download.openmmlab.com/mmocr/textrecog/sar/dict_printed_chinese_english_digits.txt
mv dict_printed_chinese_english_digits.txt mmocr/data/chineseocr/labels 
  1. 运转推理脚本。
python mmocr/utils/ocr.py --det DB_r18 --recog SAR_CN demo/car1.jpeg --output='./'

车牌辨认作用欠好,测验成果如下:

image

image

image

2,官方供给的测验用例的推理作用如下:

image

5.3,运用主张

官方供给的不管是中文仍是英文文本辨认模型,在车牌场景下辨认作用都欠好,不推荐在车牌辨认场景下运用,更适合通用场景。

六,推荐 YOLOv5-LPRNet-Licence-Recognition

6.1,库房介绍

YOLOv5-LPRNet-Licence-Recognition 项目是运用 YOLOv5s 和 LPRNet 对我国车牌进行检测和辨认,车牌数据集是运用 CCPD。

车牌字符辨认的准确率如下:

model 数据集 epochs acc size
LPRNet val 100 94.33% 1.7M
LPRNet test 100 94.30% 1.7M

总体模型速度:(YOLOv5 + LPRNet)速度:47.6 FPS(970 GPU)。

6.2,运用记载

作者供给的模型实践测验下来作用还不错,部分示例如下:

image

image

image