资源简介
手写字训练
代码片段和文件信息
import os
import numpy as np
import struct
import PIL.Image
train_data_dir = “HWDB1.1trn_gnt“
test_data_dir = “HWDB1.1tst_gnt“
# 读取图像和对应的汉字
def read_from_gnt_dir(gnt_dir=train_data_dir):
def one_file(f):
header_size = 10
while True:
header = np.fromfile(f dtype=‘uint8‘ count=header_size)
if not header.size: break
sample_size = header[0] + (header[1] << 8) + (header[2] << 16) + (header[3] << 24)
tagcode = header[5] + (header[4] << 8)
width = header[6] + (header[7] << 8)
height = header[8] + (header[9] << 8)
if header_size + width * height != sample_size:
break
image = np.fromfile(f dtype=‘uint8‘ count=width * height).reshape((height width))
yield image tagcode
for file_name in os.listdir(gnt_dir):
if file_name.endswith(‘.gnt‘):
file_path = os.path.join(gnt_dir file_name)
with open(file_path ‘rb‘) as f:
for image tagcode in one_file(f):
yield image tagcode
import scipy.misc
from sklearn.utils import shuffle
import tensorflow as tf
# 我取常用的前140个汉字进行测试
char_set = “的一是了我不人在他有这个上们来到时大地为子中你说生国年着就那和要她出也得里后自以会家可下而过天去能对小多然于心学么之都好看起发当没成只如事把还用第样道想作种开美总从无情己面最女但现前些所同日手又行意动方期它头经长儿回位分爱老因很给名法间斯知世什两次使身者被高已亲其进此话常与活正感“
def resize_and_normalize_image(img):
# 补方
pad_size = abs(img.shape[0] - img.shape[1]) // 2
if img.shape[0] < img.shape[1]:
pad_dims = ((pad_size pad_size) (0 0))
else:
pad_dims = ((0 0) (pad_size pad_size))
img = np.lib.pad(img pad_dims mode=‘constant‘ constant_values=255)
# 缩放
img = scipy.misc.imresize(img (64 - 4 * 2 64 - 4 * 2))
img = np.lib.pad(img ((4 4) (4 4)) mode=‘constant‘ constant_values=255)
assert img.shape == (64 64)
img = img.flatten()
# 像素值范围-1到1
img = (img - 128) / 128
return img
# one hot
def convert_to_one_hot(char):
vector = np.zeros(len(char_set))
vector[char_set.index(char)] = 1
return vector
# 由于数据量不大 可一次全部加载到RAM
train_data_x = []
train_data_y = []
for image tagcode in read_from_gnt_dir(gnt_dir=train_data_dir):
tagcode_unicode = struct.pack(‘>H‘ tagcode).decode(‘gb2312‘)
if tagcode_unicode in char_set:
train_data_x.append(resize_and_normalize_image(image))
train_data_y.append(convert_to_one_hot(tagcode_unicode))
# shuffle样本
train_data_x train_data_y = shuffle(train_data_x train_data_y random_state=0)
batch_size = 128
num_batch = len(train_data_x) // batch_size
text_data_x = []
text_data_y = []
for image tagcode in read_from_gnt_dir(gnt_dir=test_data_dir):
tagcode_unicode = struct.pack(‘>H‘ tagcode).decode(‘gb2312‘)
if tagcode_unicode in char_set:
text_data_x.append(resize_and_normalize_image(image))
text_data_y.append(convert_to_one_hot(tagcode_unicode)
- 上一篇:猜拳小游戏python代码
- 下一篇:Python-turtle玫瑰花绘制
相关资源
- 人工智能算法实现mnist手写数字识别
- openmv二维码识别
- 图片分类,图像识别,目标检测
- python摄像头自动识别工业用反色二维
- 手写数字识别.ipynb
- 人脸检测和识别(opencv3+python)
- 百度语音识别调用(voicechat.py)
- 二维码识别+RGB识别+色环识别+通过串
- BP算法手写梯度计算
- 基于表面肌电的手势识别.py
- 动物图片识别.py(基于百度api)
- python语言实现的基于opencv的表针识别
- MNIST手写体数字训练/测试数据集(图
- python+pyqt5+百度AI+车牌识别.rar
- Python-本项目基于yolo3与crnn实现中文自
- 图形识别与颜色识别工具
- 电力窃漏电用户自动识别 源码
- python3.5 百度ai人脸识别
- 深度学习视频中的行为识别
- openmv一次性识别红黄蓝三种颜色
- 工程训练大赛openmv二维码、色环、色
- python基于人脸检测和人脸识别
- OpenMV交通灯识别例程
- opencv手势识别
- Python-Insightface人脸检测识别的最小化
- 卷积神经网络图像识别python代码pdf
- python 识别物体跟踪
- openmv颜色识别代码
- python的色情图片识别
- Python-pytorch实现的人脸检测和人脸识别
评论
共有 条评论