假设共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

在这里插入图片描述

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

更多推荐