• Stars
    star
    241
  • Rank 167,643 (Top 4 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

crnn实现水平和垂直方向中文文字识别, 提供在3w多个中文字符训练的水平识别和垂直识别的预训练模型; 欢迎关注,试用和反馈问题... ...

crnn.pytorch

​ 本工程使用随机生成的水平和垂直图像训练crnn模型做文字识别;一共使用10多种不同字体;共包括数字、字符、简体和繁体中文字30656个,详见all_words.txt

  1. 预测
    1.1 直接预测
    1.2 使用restful服务预测
  2. 模型效果
    2.1 水平方向
    2.2 垂直方向
  3. 评估
  4. 训练

预测

直接预测

预训练模型下载地址:水平模型 crnn.horizontal.061.pth 提取码: fguu; 垂直模型 crnn.vertical.090.pth 提取码: ygx7。

a) 执行如下命令预测单个图像

# 水平方向
python demo.py --weight-path /path/to/chk.pth --image-path /path/to/image --direction horizontal
# 垂直方向
python demo.py --weight-path /path/to/chk.pth --image-path /path/to/image --direction vertical

b) 执行如下命令预测图像目录

# 水平方向
python demo.py --weight-path /path/to/chk.pth --image-dir /path/to/image/dir --direction horizontal
# 垂直方向
python demo.py --weight-path /path/to/chk.pth --image-dir /path/to/image/dir --direction vertical

使用restful服务预测

a) 启动restful服务

python rest.py -l /path/to/crnn.horizontal.061.pth -v /path/to/crnn.vertical.090.pth -d cuda

b) 使用如下代码预测,参考rest_test.py

import base64
import requests

img_path = './images/horizontal-002.jpg'

with open(img_path, 'rb') as fp:
    img_bytes = fp.read()

img = base64.b64encode(img_bytes).decode()
data = {'img': img}

r = requests.post("http://localhost:5000/crnn", json=data)

print(r.json()['text'])

结果如下:

 厘鳃 銎 萛闿 檭車 垰銰 陀 婬2 蠶

模型效果

​ 以下图像均来为生成器随机生成的,也可以试用自己的图像测试

水平方向

图像 识别结果
鎏贬冱剽粥碍辆置钷固闻塔ど船
厘鳃銎萛闿檭車垰銰陀婬2蠶
磨丢河窜蹬奶鼋
添肃琉恪范粼兢俺斋┟傺怃梗纱脉陷荼荡荫驿
荼反霎吕娟斑恃畀貅引铥哳断替碱嘏
汨鑅譜軥嶰細挓
讵居世鄄钷橄鸠乩嗓犷魄芈丝
憎豼蕖蚷願巇廾尖瞚寣眗媝页锧荰瞿睔
休衷餐郄俐徂煅黢让咣
桃顸噢伯臣

垂直方向

Image1 Image2 Image3 Image4 Image5 Image6 Image7 Image8 Image9 Image10

从左到右识别结果

蟒销咔侉糌圻
醵姹探里坌葺神赵漓
紊趼掰膊縉氺月
皱坊凋庳剜蓍赚拾赣缮
ⅲ樱妖遐灌纽枰孽笸逼⊙斟喧湄汇
铳颢汜橇忝稿┗淌㎞琉炭盛㈨事
ゆ囚具憎鉴蔟馍络ら裕翱偬
绸唿綜袼殊潸名廪收鈁跃唤蛴腕
斥嗡门彳鹪Ⅴ戝物据趱欹
覃追煮茫舔酾桎藏瘪挚檎笏嵊疙鹦

评估

a) 水平方向

python eval.py --weight-path /path/to/crnn.horizontal.061.pth \
--direction horizontal --device cuda

输出结果:acc:0.893

b) 垂直方向

python eval.py --weight-path /path/to/crnn.vertical.090.pth \
--direction vertical --device cuda

输出结果:acc:0.523

训练

a) 单机多卡

export CUDA_DEVICE_ORDER="PCI_BUS_ID"
export CUDA_VISIBLE_DEVICES=1,2,3,4
python -m torch.distributed.launch --nproc_per_node 4 train.py --device cuda --direction vertical

b) 多机多卡

# 第一台主机
export NCCL_SOCKET_IFNAME=eth0
export NCCL_IB_DISABLE=1
export CUDA_DEVICE_ORDER="PCI_BUS_ID"
export CUDA_VISIBLE_DEVICES=1,2,3
python -m torch.distributed.launch --nproc_per_node 3 --nnodes=2 --node_rank=0 \
--master_port=6066 --master_addr="192.168.0.1" \
train.py --device cuda --direction vertical 

# 第二台主机
export NCCL_SOCKET_IFNAME=eth0
export NCCL_IB_DISABLE=1
export CUDA_DEVICE_ORDER="PCI_BUS_ID"
export CUDA_VISIBLE_DEVICES=1,2,3
python -m torch.distributed.launch --nproc_per_node 3 --nnodes=2 --node_rank=1 \
--master_port=6066 --master_addr="192.168.0.1" \
train.py --device cuda --direction vertical 

存在问题:多机训练比单机要慢很多,目前尚未解决.

More Repositories

1

cv-papers

计算机视觉相关论文整理、记录、分享; 包括图像分类、目标检测、视觉跟踪/目标跟踪、人脸识别/人脸验证、OCR/场景文本检测及识别等领域。欢迎加星,欢迎指正错误,同时也期待能够共同参与!!! 持续更新中... ...
978
star
2

Grad-CAM.pytorch

pytorch实现Grad-CAM和Grad-CAM++,可以可视化任意分类网络的Class Activation Map (CAM)图,包括自定义的网络;同时也实现了目标检测faster r-cnn和retinanet两个网络的CAM图;欢迎试用、关注并反馈问题...
Python
726
star
3

numpy_neural_network

仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程; numpy构建全连接层、卷积层、池化层、Flatten层;以及图像分类案例及精调网络案例等,持续更新中... ...
Jupyter Notebook
528
star
4

keras-ctpn

keras复现场景文本检测网络CPTN: 《Detecting Text in Natural Image with Connectionist Text Proposal Network》;欢迎试用,关注,并反馈问题...
Python
107
star
5

keras-faster-rcnn

keras实现faster rcnn,end2end训练、预测; 持续更新中,见todo... ;欢迎试用、关注并反馈问题
Python
86
star
6

aiia_elec_miner

“AIIA”杯-国家电网-电力专业领域词汇挖掘
Scala
54
star
7

keras-lbl-IvS

keras实现人证比对论文《Large-scale Bisample Learning on ID vs. Spot Face Recognition》的核心思想; 当类别数非常大时(超过百万),GPU显存可能无法装载权重参数;可以使用支配原型概念,每个step将相关的类别一块训练,step开始时将当前mini-batch的类别原型权重加载到GPU中,而不用加载所有的类别权重参数; step结束时更新并保存当前训练类别的原型权重
Jupyter Notebook
22
star
8

keras-imprinting

论文Low-Shot Learning with Imprinted Weights 的keras 版简要实现;
Jupyter Notebook
15
star
9

abcnet_custom_dataset

ABCNet标注格式数据集制作,将ICDAR15转为ABCNet标注格式
Python
10
star
10

notebook

整理记录工作学习笔记,以前都用evernote记录,现在都迁移到github上,方便共享
Jupyter Notebook
9
star
11

spark-mllib-pmml

Scala
6
star
12

shell_parser

一个通用的命令行脚本管理工具,包括参数管理、shell脚本解析、通用脚本执行和日志记录;欢迎试用和反馈问题...
Python
4
star
13

ace.pytorch

非官方的Aggregation Cross-Entropy for Sequence Recognition实现
Python
3
star
14

easyml-examples

Scala
2
star
15

cars-analyze

Scala
1
star
16

cv_repositories_test

计算机视觉开源工程测试记录
1
star
17

es-cars

Java
1
star
18

sqlCfg

sqlCfg
Java
1
star
19

keras-east

Python
1
star
20

keras-ssd

Jupyter Notebook
1
star
21

docs

1
star