python处理车牌字符数据

为了用深度学习来训练一个车牌识别的字符识别模型,首先需要解决的问题是处理数据的问题,为了能够把数据传入到网络里进行训练,我这里使用的one_hot编码,具体的细节如下:

首先准备数据集:

一部分自己的数据集,一部分是 Easypr的数据集(后500张图片作为测试集,其他的作为训练集)67617张
类别:65类
0-9共十个类,A-Z共二十四个类(除了O,I),

中文汉字共三十一个类( '鄂','赣','甘','贵','桂','黑','沪','冀','吉','津','晋','京','辽','鲁','蒙','闽','宁','青','琼','陕','苏','皖','湘','新','豫', '渝','粤','云','藏','浙')

归一化:
将每张输入字符图片大小归一化为20X20,并转成灰度;
图片的命名格式:
将数据集中的图片命名为label.num.jpg(比如:0.0.jpg),目的是在于更方便的取得图片的标签与图片;
省份使用拼音字符串存储:
chuan.0.jpg
标签使用one-hot编码:
得到图片类别标签后,将其转成one-hot编码;
处理成.npy的数据格式:
将之前处理好的图片数据与标签,使用numpy函数形成数据文件.npy。

显示处理过的部分数据:

图1为车牌字符的图片

图2为车牌字符图片相对应的标签即类别

核心代码如下:

def label_img(img):

label = np.eye(65, dtype=int)
    word_lable = img

label = np.eye(65, dtype=int)
    word_lable = img

def create_train_data():
    training_data = []
    for fpathe, dirs, fs in tqdm(os.walk(train_dir)):
        for f in fs:
            img = cv2.imread(os.path.join(fpathe, f),cv2.IMREAD_GRAYSCALE)
            image_name = os.path.join(fpathe, f).split('\\')[2]
            image=image_name.split('.')[0]
            label = label_img(image)
            img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))
            training_data.append([np.array(img), np.array(label)])
    shuffle(training_data)
    np.save('路径,training_data)
    return training_data



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章