♻️ 资源
大小:586KB
➡️资源下载:https://download.csdn.net/download/s1t16/87450292
基于C语音的车牌识别
一、总体方案
题目分析
输入是一张有车牌照的图片,输出是车牌号码。用神经网络对字符进行训练。
总体方案设计
进行一次车牌的识别流程如下:
二、算法基本原理
在机器学习和相关领域,人工神经网络的计算模型灵感来自动物的中枢神经系统(尤其是脑),并且被用于估计或可以依赖于大量的输入和一般的未知近似函数。人工神经网络通常呈现为相互连接的“神经元”,它可以从输入的计算值,并且能够机器学习以及模式识别由于它们的自适应性质的系统。
例如,用于字符识别的神经网络是由一组可能被输入图像的像素激活的输入神经元来限定。后进过加权,并通过一个函数(由网络的设计者确定的)转化,这些神经元的致动被上到其他神经元然后被传递。重复此过程,直到最后,一输出神经元被激活。这决定了哪些字符被读取。
像其他的从数据-神经网络认识到的机器学习系统方法已被用来解决各种各样的很难用普通的以规则为基础的编程解决的任务,包括计算机视觉和语音识别。
人工神经网络的最大优势是他们能够被用作一个任意函数逼近的机制,那是从观测到的数据“学习”。
三、系统实现
神经网络训练
主要包括设置神经网络参数,导入数据,神经网络初始化,训练网络等。具体实现如下:
设置神经网络参数部分:
input_layer_size = 512; hidden_layer_size = 34; num_labels = 34;导入数据部分:
load('X.mat'); load('y.mat');神经网络初始化:
initial_Theta1 = randInitializeWeights(input_layer_size, hidden_layer_size);
initial_Theta2 = randInitializeWeights(hidden_layer_size, num_labels); initial_nn_params = [initial_Theta1(:) ; initial_Theta2(:)];训练网络:
options = optimset('MaxIter', 50);
lambda = 1; costFunction = @(p) nnCostFunction(p, ... input_layer_size, ... hidden_layer_size, ... num_labels, X, y, lambda); [nn_params, cost] = fmincg(costFunction, initial_nn_params, options); Theta1 = reshape(nn_params(1:hidden_layer_size * (input_layer_size + 1)), ... hidden_layer_size, (input_layer_size + 1)); Theta2 = reshape(nn_params((1 + (hidden_layer_size * (input_layer_size + 1))):end), ... num_labels, (hidden_layer_size + 1));车牌定位部分:
字符分割部分:
字符识别部分
导入神经网络训练结果,然后将字符输入神经网络,最后输出识别结果。
四、结果记录及分析
车牌与识别结果:
可以发现,识别结果准确。但是,也有部分是识别结果有误差的,这可能是由于图像预处理还不够好,神经网络参数整定还可以调优,训练数据还可以更多的原因。
五、课程设计收获及心得
在这次课程设计中,我用到了 MATLAB 的进行神经网络的训练,还用到了图像的预处理。由于是图像的预处理后的结果作为神经网络的输入,所以,图像的预处理结果对于神经网络的训练有很重要的影响,部分图片识别不准确有可能就是预处理不够好的原因。
六、参考文献
鹿琛. 基于神经网络的车牌识别技术研究[D].