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



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