第P10周:Pytorch实现车牌识别

本周任务:补充acc统计更新部分,即获取每一次测试的ACC值。

一、导入库函数

import torchsummary
from torchvision.transforms import transforms
from torch.utils.data import DataLoader
from torchvision import datasets
import torchvision.models as models
import torch.nn.functional as F
import torch.nn as nn
import torch,torchvision
import os,PIL,random,pathlib
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
from torchvision.io import read_image
from torch.utils.data import Dataset
import torch.utils.data as data
from PIL import Image
from torch.autograd import Variable
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime

二、读取数据

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

data_dir = '../../Data/ChePai/015_licence_plate'
data_dir = pathlib.Path(data_dir)

data_paths  = list(data_dir.glob('*'))
classeNames = [str(path).split("\\")[5].split("_")[1].split(".")[0] for path in data_paths]
#print(classeNames)
['川W9BR26', '藏WP66B0', '沪E264UD', '津D8Z15T', '浙E198UJ', '陕Z813VB', '甘G24298', '青SN18Q3', '云HZR899', '辽G46Z9R', '湘G0H422', '蒙D35P2J', '冀Z4K30A', '青Q31F3Y', '京X3U68P', '粤P6W0T1', '浙LD9F20', '黑AQ8U79', '津T0B1L3'...]

现实每个文件的路径

['..\\..\\Data\\ChePai\\015_licence_plate\\000000000_川W9BR26.jpg', '..\\..\\Data\\ChePai\\015_licence_plate\\000000000_藏WP66B0.jpg', ...

可视化车牌

#可视化车牌
#plt.figure(figsize=(14, 5))
#plt.suptitle("数据示例", fontsize=15)
# for i in range(18):
#     plt.subplot(3, 6, i + 1)
#     # plt.xticks([])
#     # plt.yticks([])
#     # plt.grid(False)
#
#     # 显示图片
#     images = plt.imread(data_paths_str[i])
#     plt.imshow(images)
#
# plt.show()

在这里插入图片描述

三、标签和字符串数字化

char_enum = ["京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁",\
              "豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","军","使"]

number   = [str(i) for i in range(0, 10)]    # 0 到 9 的数字
alphabet = [chr(i) for i in range(65, 91)]   # A 到 Z 的字母

char_set       = char_enum + number + alphabet
char_set_len   = len(char_set)
label_name_len = len(classeNames[0])

# 将字符串数字化
def text2vec(text):
    vector = np.zeros([label_name_len, char_set_len])
    for i, c in enumerate(text):
        idx = char_set.index(c)
        vector[i][idx] = 1.0
    return vector

all_labels = [text2vec(i) for i in classeNames]

四、加载数据文件

class MyDataset(data.Dataset):
    def __init__(self, all_labels, data_paths_str, transform):
        self.img_labels = all_labels  # 获取标签信息
        self.img_dir = data_paths_str  # 图像目录路径
        self.transform = transform  # 目标转换函数

    def __len__(self):
        return len(self.img_labels)

    def __getitem__(self, index):
        image = Image.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值