CNN+GRU+CTC实现不定长字符串识别(一)

2023-12-26 13:59

本文主要是介绍CNN+GRU+CTC实现不定长字符串识别(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CNN+GRU+CTC进行人民币编码识别

    • 背景
    • 使用方法
      • 源码
      • 训练和预测
    • inf:loss错误

背景

来自于TinyMind的一个比赛,名为人民币面值及编码识别
地址:https://www.tinymind.cn/competitions/47
本篇文章的前提是已经将编码定位并切割下来,图片中只有相应的编码,样子如下:
在这里插入图片描述
当然不是这样也可以,随便什么训练集,如果没有的话可以参考我之前的文章进行生成,或者直接下载我上传的文件。
地址:链接:https://pan.baidu.com/s/1KQuAdHe4nc53yeDz3jk_1A 提取码:1ttg
在这里我还要感谢分享自己代码的大佬们,不然我可能一点都做不出来,
地址:https://github.com/mind/RMB
我也是在网上找了很多的源码,但是出了很多的问题,有的甚至不支持windows,而且研究了很长时间也没有用keras复现出来,所以这里给学到这里的人一个方向,我只用了一个py脚本实现了模型的训练和验证,并且很通俗易懂,我把脚本放到了码云上,想要了解的可以看一看
地址:https://gitee.com/dong_rui/rmb_code

使用方法

源码

犹豫代码比较长,讲起来也比较麻烦,所以长话短说,讲一讲使用方法,我先把源码粘贴出来,比较长,可以直接点上边的锚跳过这段:

import cv2
import random
import os
import pandas as pd
import numpy as np
from imgaug import augmenters as iaa
from tqdm import tqdm
import shutil
from sklearn.model_selection import KFold
from keras.applications.resnet50 import *
from keras.applications.densenet import *
from keras.applications.nasnet import *
from keras.applications.inception_resnet_v2 import *
from keras.applications.inception_v3 import *
from keras.applications.xception import *
from keras.applications.vgg16 import *
from keras.utils import to_categorical
from keras.activations import *
from keras.models import *
from keras.layers import *
from keras.models import *
from keras.optimizers import *
from keras.regularizers import l2
from keras.utils import *
import keras.backend as K
from keras.callbacks import *
import tensorflow as tf
import matplotlib.pyplot as plt
config = tf.ConfigProto(gpu_options=tf.GPUOptions(allow_growth=True))
sess = tf.Session(config=config)pat = 'Train' #Train or Recognition 两种模式
characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' #可能出现的字母或数字
train_val_images_path = 'H:\data\RMB\cut_images' #训练集和验证集图片地址
train_val_labels_path = 'F:\DeepLearn\RMB_CNN_GRU_CTC\\train_id_label.csv'
test_images_path = 'F:\DeepLearn\RMB_CNN_GRU_CTC\\test'#测试集地址l2_rate = 1e-5
rnn_size = 256BASE_MODEL_NAME="DenseNet169"
batch_size = 16width, height, n_len, n_class = 246, 65, 10, len(characters)+1print(width, height, n_len, n_class)kf_id = 2config = tf.ConfigProto()
config.gpu_

这篇关于CNN+GRU+CTC实现不定长字符串识别(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539678

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

2390.从字符串中移除星号

给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号左侧最近的那个非星号字符,并移除该星号自身。 返回移除 所有 星号之后的字符串。 注意: 生成的输入保证总是可以执行题面中描述的操作。 可以证明结果字符串是唯一的。 示例 1: 输入:s = “leet**cod*e” 输出:“lecoe” 解释:从左到右执行移除操作: 距离第 1 个

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

python实现最简单循环神经网络(RNNs)

Recurrent Neural Networks(RNNs) 的模型: 上图中红色部分是输入向量。文本、单词、数据都是输入,在网络里都以向量的形式进行表示。 绿色部分是隐藏向量。是加工处理过程。 蓝色部分是输出向量。 python代码表示如下: rnn = RNN()y = rnn.step(x) # x为输入向量,y为输出向量 RNNs神经网络由神经元组成, python