基于视觉注意的张量流光学字符识别模型。

aocr的Python项目详细描述


#基于注意的ocr

用于图像识别的基于视觉注意的ocr模型,以及用于创建tfrecords数据集和将训练后的模型导出为[保存的模型](https://www.tensorflow.org/api-docs/python/tf/saved-model)或冻结图的附加工具。

##致谢

本项目基于[qi guo]和[yuntian deng]的模型(https://github.com/da03)。您可以在[DA03/Attention OCR]存储库(https://github.com/da03/attention-ocr)中找到原始模型。

\高度32,同时保持纵横比)。然后一个LSTM被堆在CNN的上面。最后,注意模型被用作产生最终输出的解码器。

![ocr示例](http://cs.cmu.edu/~yuntiand/ocr-2.jpg)

附加的依赖项是"pil `/'should`"、"distance"和"six"。


您需要一组图像和一个带有各自标签的注释文件。

```
aocr数据集./datasets/annotations-training.txt./datasets/training.tfrecords
aocr数据集./datasets/annotations-testing.txt./datasets/testing.tfrecords
```

包含图像路径(绝对或相对于工作目录)及其相应标签的简单文本文件:

```
datasets/images/hello.jpg hello
datasets/images/world.jpg world
````

./datasets/training.tfrecords
```

注意,要达到一致需要相当长的时间,因为我们同时训练CNN和注意力模型。

`--steps per checkpoint`参数确定保存模型检查点的频率(默认输出目录是'checkpoints/`)。

**重要:**有很多可用的训练选项。请参阅cli帮助或本自述文件的"参数"部分。


\您可以可视化测试期间的注意力结果(默认保存为"out/"):

````
aocr测试--可视化./datasets/testing.tfrecords
````


示例输出"results/correct"中的图像:

image 0(j/j):

![示例图像0](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_370.png/image_0.jpg)


image 1(u/u):

![示例图像1](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_370.png/image_1.jpg)


图像2(n/n):

![示例图像2](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_370.png/image_2.jpg)


图像3(g/g):

![示例图像3](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_370.png/image_3.jpg)


图像4(l/l):

![示例图像4](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_370.png/image_4.jpg)


图像5(e/e):

![示例图像5](http://cs.cmu.edu/~yuntiand/2evaluation_data_icdar13_images_word_370.png/image_5.jpg)


它可以导出为冻结图或保存模型。

``bash

aocr导出。/导出模型

将模型放入`./exported model`目录中。


使用[tensorflow service]的tp rest api(https://github.com/tensorflow/service)。可以通过运行以下命令启动服务器:

```
tensorflow_model_server--port=9000--rest_api_port=9001--model_name=yourmodelname--model_base_path=。/导出的model
````

**注意**:tensorflow_model_server需要一个子目录,其版本号为显示上一步中导出的文件并将其放在其中。因此,您需要手动将"导出模型"的内容移动到"导出模型/1"。

例如:

```
curl-x post\
http://localhost:9001/v1/models/aocr:predict\
-h'缓存控制:无缓存'\
-h'内容类型:application/json'\
-d'{
"签名名称":"服务于默认值",
"输入":{
"输入":{"b64":"<;编码为base64>;"}
}
}
}
```







将训练数据集放入google云存储桶中,并使用"gcloud"工具开始一项训练工作。

1。设置环境变量:

```
gs_bucket="gs://aocr bucket"

上传训练数据集:

```
gsutil cp./datasets/training.tfrecords$gs_bucket/$dataset_upload_path
```

>3。启动ml引擎作业:

```
立即导出=$(日期+%y%m%d%h%m%s)
导出作业=$job前缀$now"
导出作业目录=$gs_bucket/$job名称"

gcloud ml引擎作业提交培训$job名称\
--作业目录=$job_目录\
--模块名称=aocr \
--包路径=aocr \
--region=$region \
--scale tier=basic\u gpu \
--运行时版本=1.2 \
--br/>train$gs\u bucket/$dataset\u upload\u path \
--每个检查点的步数=500 \
--批处理大小=512 \
--num epoch=20
`````

##参数




*`日志路径`:日志文件的路径。














*`格式`:导出的格式格式(savedmodel或frofrozenggraph`).

` ``可视化` `:输出原始图像上的注意地图。






###training

*`steps per checkpoint`:checkpoint(打印困惑,保存模型)每多少步
*`num epoch`:整个数据通过的次数。
*`batch size`:batch size。
*`initial learning rate`:initial learning rate,注意我们使用的是adadelta,所以初始值无关紧要。
*`target embedding size`:每个目标的嵌入维度。
*`attn num hidden`:注意解码器单元中的隐藏单元数。
*`attn num layers`:注意解码器单元中的层数。(隐藏单元的编码器编号将为"attn num hidden"*"attn num layers")。
*"no resume":即使存在检查点,也创建新权重。
*"max gradient norm":将渐变剪裁到此norm。
*"no gradient clipping":不执行渐变剪裁。
*"gpu id":gpu to使用。
*`use gru`:使用gru单元格而不是lstm。
*`max width`:输入图像的最大宽度。警告:宽度大于最大值的图像将被丢弃。
*`max height`:输入图像的最大高度。
*`max prediction`:最大长度预测单词/短语的第个。

ocr)(https://github.com/da03/torch attention ocr)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
文件系统是否可以用java覆盖文件,使其无法恢复?   java在一个应用程序中集成Spring Boot和Node js   java如何使用MySQL后端设置Hibernate save()调用的超时?   java为什么我的Gremlin迁移查询只从每个顶点添加一条边?   java是否有方法提取单击的JPanel?   macos在MacOSX上为JDK7u4在Eclipse中设置什么JRE主页?   java JaxWsPortProxyFactoryBean查询超时   java SimpleDataFormat转换   java递归地打印序列:2,5,3,11,14,…   java在JPA查询中包含枚举   在Java8中创建内存泄漏   使用java 11的windows JFXPanel设置   hibernate Java NoClassDefFound错误