MATLAB图像识别手写数字(第一篇:准备数据)
·
假设共5000张图片、每张图片上写着0~9的10个随机数字 识别新图片的数字。
图像识别的繁琐之处就是事先给每张图片打标签、并一一对应…
网络架构:28×28个输入、10个输出。
28×28是每张图片像素值个数、不是大小、共754个像素点、每个像素点作为一个输入、共754个输入(754×5000)。
754×5000:5000张图片,每张图片上面有754个特征。
10是每张图片对应的标签向量 ;
1——【1 0 0 0 0 0 0 0 0 0】;
2——【0 1 0 0 0 0 0 0 0 0】;
3——【0 0 1 0 0 0 0 0 0 0】;
4——【0 0 0 1 0 0 0 0 0 0】;
5——【0 0 0 0 1 0 0 0 0 0】;
6——【0 0 0 0 0 1 0 0 0 0】;
7——【0 0 0 0 0 0 1 0 0 0】;
8——【0 0 0 0 0 0 0 1 0 0】;
9——【0 0 0 0 0 0 0 0 1 0】;
0——【0 0 0 0 0 0 0 0 0 1】(对应图片序号手动慢慢输入)。
数据: https://download.csdn.net/download/weixin_37928884/85384538
close all;clear;clc;
P=cell(1,5000);
for i=1:5000
imgpath=strcat('./图片/',num2str(i),'.jpg');
P{i}=imread(imgpath);
end
P=cell2mat(P);
P=im2double(P);
[MP,NP] = size(P);
P = reshape(P,MP*MP,NP/MP);% P:输入——>x
% 0~9 10个数字二值化 5000张图片二值化矩阵10*5000
T = importdata('./期望输出.xlsx'); % T:输出——>d
[MT,NT] = size(T);
% 输入层:MP*MP = 784个
% 输出层:MT个
save yangzheng P T
数据可视化
close all;clear;clc;
% 输入为0的图片,这里标记成10
load('yangzheng.mat')
% 选取部分数据可视化
[m1,n1]=size(x);
[m2,n2]=size(d);
xx = reshape(x, [sqrt(m1),sqrt(m1),n1]);
[~, ii] = max(d);
for i=1:1:60
subplot(5,12,i);
imshow(xx(:,:,i))
title(sprintf('标签 %d ', ii(i)));
end

注意:每张图片打标签、并一一对应、并多次检查
更多推荐

所有评论(0)