验证码的训练

这篇博客探讨了如何处理一张图像中包含多个标签的情况,以验证码识别为例,提出了一种将多个数字转化为数列形式的思路。通过这种方式,可以对复杂的验证码进行有效的训练和识别。
摘要由CSDN通过智能技术生成

像MNIST的一些数据集,一般是一张图像对应一个标签,而对于一张图片多个标签的情况怎么识别?这篇博客可以提供一个思路,拿验证码举例,大概思想就是将多个数字转化成数列的形式。下面是实现代码

import tensorflow as tf
import numpy as np
from PIL import Image
import os
import random
import time

#验证码图片的存放路径
CAPTCHA_IMAGE_PATH = 'F:\\YanZhengMa\\1\\valid\\'
#验证码图片的宽度
CAPTCHA_IMAGE_WIDHT = 160
#验证码图片的高度
CAPTCHA_IMAGE_HEIGHT = 60

CHAR_SET_LEN = 10
CAPTCHA_LEN = 4

#60%的验证码图片放入训练集中
TRAIN_IMAGE_PERCENT = 0.6
#训练集
TRAINING_IMAGE_NAME = []
#验证集
VALIDATION_IMAGE_NAME = []
#存放训练好的模型的路径
MODEL_SAVE_PATH = 'F:\\YanZhengMa\\1\\yz\\'

def get_image_file_name(imgPath=CAPTCHA_IMAGE_PATH):
    fileName = []
    total = 0
    for filePath in os.listdir(imgPath):
        captcha_name = filePath.split('/')[-1]
        fileName.append(captcha_name)
        total += 1
    return fileName, total

#将验证码转换为训练时用的标签向量,维数是 40   
#例如,如果验证码是 ‘0296’ ,则对应的标签是
# [1 0 0 0 0 0 0 0 0 0
#  0 0 1 0 0 0 0 0 0 0
#  0 0 0 0 0 0 0 0 0 1
#  0 0 0 0 0 0 1 0 0 0]
def name2label(name):
    label = np.zeros(CAPTCHA_LEN * CHAR_SET_LEN)
    for i, c in enumerate(name):
        idx = i*CHAR_SET_LEN + ord(c) - ord('0')
        label[idx] = 1
    return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值