Matlab 神经网络的字符识别
我正在做我的期末项目。我选择实现一个神经网络来进行字符识别。
我的计划是取 26 张包含 26 个英文字母的图像作为训练数据,但我不知道如何将这些图像转换为我的神经网络的输入。
假设我有一个包含 2 层的反向传播神经网络 - 隐藏层和输出层。输出层有 26 个神经元,可产生 26 个字母。我自己创建了26张图像(大小为100*100像素,24位bmp格式),每张图像都包含一个英文字母。我不需要做图像分割,因为我是图像处理的新手,所以你们能给我一些关于如何在Matlab中将图像转换为输入向量的建议吗(或者我需要做边缘、形态学或其他图像)预处理的东西?)。
多谢。
I am working on my final project. I chose to implement a NN for characters recognition.
My plan is to take 26 images containg 26 English letters as training data, but I have no idea how to convert these images as inputs to my neural network.
Let's say I have a backpropagation neural network with 2 layers - a hidden layer and an output layer. The output layer has 26 neurons that produces 26 letters. I self created 26 images (size is 100*100 pixels in 24bit bmp format) that each of them contains a English letter. I don't need to do image segmentation, Because I am new to the image processing, so can you guys give me some suggestions on how to convert images into input vectors in Matlab (or do I need to do edge, morphology or other image pre-processing stuffs?).
Thanks a lot.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
仅当字母相同(像素位置固定)时,神经网络才会起作用。您需要将图像转换为灰度并将其像素化。换句话说,使用将图像分割成正方形的网格。方块必须足够小才能获得字母细节,但又必须足够大,这样就不会使用太多神经元。每个像素(灰度)都是神经网络的输入。剩下的就是确定神经元的连接方式,例如神经网络拓扑。两层NN应该足够了。最有可能的是,您应该将每个输入“像素”连接到第一层的每个神经元,并将第一层的每个神经元连接到第二层的每个神经元
You NN will work only if the letters are the same (position of pixels is fixed). You need to convert images to gray-scale and pixelize them. In other words, use grid that split images on squares. Squares have to be small enough to get letter details but large enough so you don't use too much neurons. Each pixel (in gray scale) is a input for the NN. What is left is to determine the way to connect neurons e.g NN topology. Two layers NN should be enough. Most probably you should connect each input "pixel" to each neuron at first layer and each neuron at first layer to each neuron at second layer
这并不能直接回答您提出的问题,但可能有用:
1)您需要更多训练数据。更多,如果我理解正确的话(每个字母只有一个样本?)
2)这是一个非常常见的项目,如果允许的话,您可能想尝试在互联网上找到已经处理过的数据集,这样您就可以重点关注 NN 组件。
This doesn't directly answer the questions you asked, but might be useful:
1) You'll want more training data. Much more, if I understand you correctly (only one sample for each letter??)
2) This is a pretty common project, and if it's allowed, you might want to try to find already-processed data sets on the internet so you can focus on the NN component.
由于您将进行字符识别,我建议您使用不需要任何训练数据的 SOM 神经网络;您将有 26 个输入神经元,每个字母对应一个神经元。对于图像处理位,罗斯提出了隔离每个字母的有用建议。
Since you will be doing character recognition I suggest you use a SOM neural network which does not require any training data; You will have 26 input neurons one neuron for each letter. For the image processing bit Ross has a usefull suggestion for isolating each letter.