项目概述
图像识别是人工智能的一个重要领域,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术,并对质量不佳的图像进行一系列的增强与重建技术手段,从而有效改善图像质量。
图像识别技术可能是以图像的主要特征为基础的。每个图像都有它的特征,如字母A有个尖,P有个圈、而Y的中心有个锐角等。对图像识别时眼动的研究表明,视线总是集中在图像的主要特征上,也就是集中在图像轮廓曲度最大或轮廓方向突然改变的地方,这些地方的信息量最大。而且眼睛的扫描路线也总是依次从一个特征转到另一个特征上。由此可见,在图像识别过程中,知觉机制必须排除输入的多余信息,抽出关键的信息。同时,在大脑里必定有一个负责整合信息的机制,它能把分阶段获得的信息整理成一个完整的知觉映象。车牌检测与识别
目前,智能交通系统中集成运用计算机视觉、物联网、人工智能等多种技术成为未来发展方向。其中,车牌识别(License Plate Recognition,LPR)技术作为一项重要技术,从获取的图像中提取目标车辆的车牌信息,成为完善智能交通管理运行的基础。
由于本文介绍的是中文车牌,所以可以简单了解一下国内汽车拍照的特点:字符数为七个,包括汉字、字母和数字。车牌颜色组合中,其中最常见的组合为普通小型汽车蓝底白字和新能源汽车的渐变绿底黑字。
车牌识别原理和流程
车牌识别是基于图像分割和图像识别理论,对含有车辆号牌的图像进行分析处理,从而确定牌照在图像中的位置,并进一步提取和识别出文本字符。
一个典型的车牌识别处理过程包括:图像采集、图像预处理、车牌定位、字符分割、字符识别及结果输出等处理过程。各个处理过程相辅相成,每个处理过程均须保证其高效和较高的抗干扰能力,只有这样才能保证识别功能达到满意的功能品质。
车牌识别系统的实现方式主要分两种,一种为静态图像识别,另一种为动态视频流识别。静态图像识别受限于图像质量、车牌污损度、车牌倾斜度等因素。动态视频流识别则需要更快的识别速度,受限于处理器的性能指标,特别是在移动终端实现车牌实时识别需要更多性能优化。
虽然车牌识别包含6大处理过程,但核心算法主要位于车牌定位、字符分割及字符识别这三个模块中。
数据集介绍
-
数据集(来源于飞桨)文件名为characterData.zip,其中有65个文件夹
-
大小:characterData.zip(17.16M),包含0-9,A-Z,以及各省简称(阿拉伯数字、字母及中文多种字体约4000条数据)
-
规格:图片为1x20x20的灰度图像
-
本次实验中,取其中的10%作为测试集,90%作为训练集
本次实践是一个多分类任务,需要将照片中的每个字符分别进行识别,完成车牌的识别
测试平台:飞桨
挂载数据
# 查看当前挂载的数据集目录, 该目录下的变更重启环境后会自动还原
# View dataset directory. This directory will be recovered automatically after resetting environment.
!ls /home/aistudio/data
导入运行所用到的包
#导入需要的包
import os
import zipfile
import random
import json
import cv2
import numpy as np
from PIL import Image
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import Linear,Conv2D,Pool2D
import matplotlib.pyplot as plt
数据准备
配置原始数据集,训练次数设置为1,批次大小设置为32,超参学习率设为0.1%,解压到原始目录下。
'''
参数配置
'''
train_parameters = {
"input_size": [1, 20, 20], #输入图片的shape
"class_dim": -1, #分类数
"src_path":"data/data23617/characterData.zip", #原始数据集路径
"target_path":"/home/aistudio/data/dataset", #要解压的路径
"train_list_path": "./train_data.txt", #train_data.txt路径
"eval_list_path": "./val_data.txt", #eval_data.txt路径
"label_dict":{}, #标签字典
"readme_path": "/home/aistudio/data/readme.json", #readme.json路径
"num_epochs": 1, #训练轮数
"train_batch_size": 32, #批次的大小
"learning_strategy": { #优化函数相关的配置
"lr": 0.001