Skip to content

LuffysMan/image_text_recog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0228900 · May 19, 2019

History

32 Commits
Mar 22, 2019
Mar 6, 2019
Mar 6, 2019
Mar 22, 2019
May 19, 2019
Apr 3, 2019
Apr 12, 2019
Apr 1, 2019
Apr 1, 2019
Apr 1, 2019

Repository files navigation

image_text_recog

MTWI 2018 挑战赛一 网络图像文本识别 任务初步划分:

  1. 数据预处理: 包括处理图像尺寸不一致的问题, 扩充图像训练集, 噪声处理等;
  2. 模型定义: 定义学习模型的各种超参数, 比如神经网络的层数, 各层的节点数, 激活函数, 前向传播过程的定义, 损失函数的定义等;
  3. 模型可视化: 包括模型训练loss, acc, 模型验证loss, acc的曲线绘制; 也可以考虑模型各层的可视化, 卷积核的可视化等, 可帮助加深对模型理解和调试;
  4. 算法调试和优化: 对定义好的算法进行各部分进行允许调试, 查找不合理或者有误的部分, 提出优化的意见;

数据集预处理部分(CY)

dataset.py dataset| |image_train #训练集图片 |txt_train #训练集图片对应文本 |image_test #测试集图片 训练样例总数:142434

关于dataset.py

提供的接口:

  1. train_valid_split() #功能: 按比例随机划分训练集和验证集, 输入: 图片所在路径和划分比例; 输出: 训练集和测试集文件名列表
  2. read_data_sets()
    功能: 返回一个DataSets对象, 启动图片处理线程 输入: 训练集或者验证集文件名列表 输出: DataSets对象
  3. DataSets.next_batch() 功能: 返回BATCH_SIZE大小的数据集 输入: 无 输出: 两个list: images, labels

使用方法: 具体使用方法参考dsatasetEx.py中的demo函数 注意事项: 在window下跑, 需要 在parameters.py中修改 路径字符串中的'/'为'\',

关于输入图像尺寸不同的处理办法

  1. 读取原始图片和对应txt文件
  2. 根据文本对应坐标裁剪图片
  3. 统一裁剪后的图片尺寸(默认290x32)

如何计算loss

  • 图像对应的文本如何进行编码? 训练模型如何计算loss 文本中的每个字符按照字典序编码(字典需自行构造), loss计算使用”编辑距离“

参考文献:

  1. 图像预处理 python扩大训练集样本数量-图片转换、改变尺寸 https://blog.csdn.net/weixin_42052460/article/details/80861056 在Python and OpenCV中做图象处理:改变大小,旋转和裁剪(翻译) https://blog.csdn.net/fxt570762000/article/details/80241446 图像处理之PIL.Image与numpy.array之间的相互转换 https://blog.csdn.net/qq_30159015/article/details/80070514 第一篇 Python图片处理模块PIL(pillow) http://www.cnblogs.com/chimeiwangliang/p/7130434.html Python用Pillow(PIL)进行简单的图像操作 https://www.cnblogs.com/sun-haiyu/p/7127582.html
  2. 压缩文件处理 【python】详解zipfile模块读取处理压缩文件实例: https://blog.csdn.net/brucewong0516/article/details/79064384
  3. 多线程处理图片:
    Python 类中的"静态"成员变量: https://www.cnblogs.com/turtle-fly/p/3280610.html
    Python的访问修饰符: http://blog.sina.com.cn/s/blog_bb48e6be0102wbgd.html
    使用@property: 廖雪峰博客
    python 全局变量引用与修改: https://www.cnblogs.com/yanfengt/p/6305542.html
  4. 构建字典, 处理图像对应的字符标签 超酷算法(1):BK树(http://blog.jobbole.com/78811/) 文字识别(OCR)CRNN(基于pytorch、python3) 实现不定长中文字符识别(https://blog.csdn.net/Sierkinhane/article/details/82857572)

遇到的问题

问题1: 在使用pandas.to_csv()函数将图像数据存储到txt中的时候, 出现了部分图像数据变为省略号的情况 原因: 图像原始数据是numpy数组, numpy数组在使用print函数输出的时候, 如果超过1000个元素, 会用省略号'...'来代替部分元素; 并且实际情况 是numpy数组作为列表元素或者转为str的时候, 也用'...'代替的部分元素, 导致写入txt时也是省略号. 比如: a = np.arange(1000) b = str(a) c = [a] print(b, c) #都是缩写的情况 解决: 方案1 使用 np.tostring()或者np.tolist(), 比如 b=a.tolist() 方案2 在代码开头设置 np.set_printoptions(threshold=100010001000) #这样一百万个元素以下的数组都可以正常显示或写入

模型定义(XY&&TLF):

这是CRNN的model后续训练需要调用的模块

模型可视化(LF):

#预计采用TensorBoard进行可视化 #参考书籍 《TensorFlow深度学习算法原理与编程实战》蒋子阳著——第13章

算法调试和优化(LHB):

About

MTWI 2018 挑战赛一 网络图像文本识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages