0x00 前言
这个神经网络主要分为5层,如果想设计一个更加复杂的神经网络,请参考VGG16神经网络,共有16层。
这个5层神经网络包含3个卷积神经网络以及2个全连接神经网络。最后我的正确率达到了50%左右。
0x01 main.py
from gen_check_code import gen_captcha_text_and_image_new
from gen_check_code import number, alphabet
from test_check_code import get_test_captcha_text_and_image, get_test_sets_length
import numpy as np
import tensorflow as tf
text, image = gen_captcha_text_and_image_new()
print("验证码图像channel:", image.shape)
IMAGE_HEIGHT = image.shape[0]
IMAGE_WIDTH = image.shape[1]
image_shape = image.shape
MAX_CAPTCHA = len(text)
print("验证码文本最长字符数", MAX_CAPTCHA)
def convert2gray(img):
if len(img.shape) > 2:
gray = np.mean(img, -1)
return gray
else:
return img
"""
cnn在图像大小是2的倍数时性能最高, 如果你用的图像大小不是2的倍数,可以在图像边缘补无用像素。
np.pad(image,((2,3),(2,2)), 'constant', constant_values=(255,)) # 在图像上补2行,下补3行,左补2行,右补2行
"""
char_set = number + alphabet
CHAR_SET_LEN = len(char_set)
def text2vec(text):
text_len = len(text)
if text_len > MAX_CAPTCHA:
raise ValueError('验证码最长4个字符')
vector = np.zeros(MAX_CAPTCHA * CHAR_SET_LEN)
def char2pos(c):
try:
if ord(c) <= ord('9'):
k = ord(c)-ord('0')
else:
k = ord(c)-ord('a') + 10