paddle ocr电子仪表数字识别(自制数据+训练和预测,含代码)

提出问题

目前对于电子仪表的数字识别,调api接口可能效果存在不足。因此,通过自己收集一些电子仪表数据,构建自己的电子仪表数据集,并实现了检测与识别。在自建数据集基础上,分两步走:第一步,数字目标区域定位;第二步,数字识别。

整体流程如下:
在这里插入图片描述

实验环境

可参考该链接进行配置:PaddleOCR文字检测、标注与识别详细记录

实验代码

链接:https://pan.baidu.com/s/1MegF8751BH3OuPAUXUgJ9Q 
提取码:私信我
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
PaddlePaddle可以用来训练数字识别模型。一个常用的数字识别数据集是MNIST,包了大量手写数字的图片。你可以使用PaddlePaddle的API来加载MNIST数据集,构建卷积神经网络模型,并进行训练和测试。 以下是一个简单的例子,使用PaddlePaddle训练一个数字识别模型: ```python import paddle import paddle.fluid as fluid import numpy as np # 定义网络结构 def convolutional_neural_network(input_layer): conv1 = fluid.layers.conv2d(input_layer, num_filters=32, filter_size=5, stride=1, padding=2, act='relu') pool1 = fluid.layers.pool2d(conv1, pool_size=2, pool_type='max', pool_stride=2) conv2 = fluid.layers.conv2d(pool1, num_filters=64, filter_size=5, stride=1, padding=2, act='relu') pool2 = fluid.layers.pool2d(conv2, pool_size=2, pool_type='max', pool_stride=2) fc1 = fluid.layers.fc(pool2, size=512, act='relu') drop1 = fluid.layers.dropout(fc1, dropout_prob=0.5) fc2 = fluid.layers.fc(drop1, size=10, act='softmax') return fc2 # 定义输入数据形状 image = fluid.layers.data(name='image', shape=[1, 28, 28], dtype='float32') label = fluid.layers.data(name='label', shape=[1], dtype='int64') # 定义前向计算图 predict = convolutional_neural_network(image) # 定义损失函数和优化器 cost = fluid.layers.cross_entropy(input=predict, label=label) avg_cost = fluid.layers.mean(cost) optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001) opts = optimizer.minimize(avg_cost) # 定义训练和测试程序 place = fluid.CUDAPlace(0) exe = fluid.Executor(place) exe.run(fluid.default_startup_program()) # 加载数据集 train_reader = paddle.batch(paddle.reader.shuffle(paddle.dataset.mnist.train(), buf_size=500), batch_size=128) test_reader = paddle.batch(paddle.dataset.mnist.test(), batch_size=128) # 定义训练过程 for epoch in range(10): for batch_id, data in enumerate(train_reader()): train_cost, train_acc = exe.run(program=fluid.default_main_program(), feed={'image': np.array([x[0].reshape(1, 28, 28) for x in data], dtype='float32'), 'label': np.array([x[1] for x in data], dtype='int64')}, fetch_list=[avg_cost, predict.accuracy]) if batch_id % 100 == 0: print('Epoch {}, Batch {}, Cost {}, Accuracy {}'.format(epoch, batch_id, train_cost[0], train_acc[0])) # 测试模型 test_accs = [] test_costs = [] for batch_id, data in enumerate(test_reader()): test_cost, test_acc = exe.run(program=fluid.default_main_program(), feed={'image': np.array([x[0].reshape(1, 28, 28) for x in data], dtype='float32'), 'label': np.array([x[1] for x in data], dtype='int64')}, fetch_list=[avg_cost, predict.accuracy]) test_accs.append(test_acc[0]) test_costs.append(test_cost[0]) test_cost = sum(test_costs) / len(test_costs) test_acc = sum(test_accs) / len(test_accs) print('Test Epoch {}, Cost {}, Accuracy {}'.format(epoch, test_cost, test_acc)) # 保存模型 fluid.io.save_inference_model(dirname='./model', feeded_var_names=['image'], target_vars=[predict], executor=exe) ``` 在训练完成后,你可以使用保存的模型来进行数字识别。以下是一个简单的例子,加载训练好的模型,输入一张手写数字的图片,输出识别结果: ```python import cv2 # 加载模型 infer_exe = fluid.Executor(place) inference_scope = fluid.core.Scope() with fluid.scope_guard(inference_scope): [inference_program, feed_target_names, fetch_targets] = fluid.io.load_inference_model(dirname='./model', executor=infer_exe) # 读取手写数字的图片 img = cv2.imread('test.png', cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (28, 28), interpolation=cv2.INTER_AREA) img = img.astype(np.float32) / 255.0 img = np.reshape(img, [1, 1, 28, 28]) # 进行数字识别 results = infer_exe.run(program=inference_program, feed={feed_target_names[0]: img}, fetch_list=fetch_targets) print('The digit is classified as:', np.argmax(results[0])) ``` 注意:在使用以上代码时,需要先安装PaddlePaddle和MNIST数据集。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISer-王小畈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值