Ежели нужно будет делать распознавание на разных цифрах, разном числе классов и др., то можно всё это автоматизировать. Ниже пример возможного скрипта, в котором для изменения параметров необходимо только корректирование значений в разделе объявления переменных:
Объявление переменных
% узнаём размер картинки
[row column] = size(imread('1_1.bmp')); % читаем одну картинку
num_digits = 4; % Число распознаваемых цифр
num_examples = 5; % Число примеров каждой цифры
% объявляем массив для обучающих данных
learn_array = zeros(row*row+num_digits,num_examples*num_digits);
Загрузка всех картинок и добавление в обучающую выборку
temp_array = zeros(row*row); % временный массив
for i=1:num_digits % перебор по числу цифр
for j=1:num_examples % перебор по числу примеров каждой цифры
% задаём название текущей картинки
img_name = strcat(num2str(i),'_',num2str(j),'.bmp');
% задаём строку с командой загрузки картинки
img_load = strcat('imread(''', img_name, ''')');
% загружаем картинку в массив img_data
img_data = eval(img_load);
% команда преобразования массива в 1 столбец
|
|
% str_reshape = strcat('reshape(img_data,[],1)');
% применение преобразования
temp_array = reshape(img_data,[],1);
% добавить пример в общий массив
learn_array(1:row*row,(i-1)*num_examples+j) = temp_array(:,:);
% добавить метку
learn_array(row*row+i,(i-1)*num_examples+j) = 1;
end
end
Обучение ИНС
neurons = 6; % число нейронов
net = newff(learn_array(1:row*row,:),... % обучающая выборка
learn_array(row*row+1:row*row+num_digits,:),... % метки
neurons); % число нейронов
net = train(net,... % обучаемая сеть
learn_array(1:row*row,:),... % обучающая выборка
learn_array(row*row+1:row*row+num_digits,:)); % метки
Всё. Теперь при изменении параметров распознаваемых картинок нужно просто изменить переменные в начале программы. И не забывать сохранять картинки под нужными именами.