Я работаю над OCR для арабского персонажа. Я хочу попробовать glcm как метод извлечения объектов. Я получил код здесь: http://www.mathworks.com/matlabcentral/fileexchange/22187-glcm-texture-featuresКак повысить точность точности OCR для нейронной сети в Matlab
Пример входных изображений (символьных изображений):
и я сделал код, чтобы получить выход КРНБ, основанный на необходимых функций. Вот оно:
function features = EkstraksiFitur_GLCM(x)
glcm = graycomatrix(x,'offset',[0 1; -1 1; -1 0; -1 -1], 'NumLevels', 2);
stats = GLCM_Features1(glcm, 0);
autocorrelation = double(mean (stats.autoc));
if isnan(autocorrelation)
autocorrelation=0;
else
autocorrelation=autocorrelation;
end
contrast = double(mean(stats.contr));
if isnan(contrast)
contrast=0;
else
contrast=contrast;
end
Correlation = double(mean (stats.corrm));
if isnan(Correlation)
Correlation=0;
else
Correlation=Correlation;
end
ClusterProminence = double(mean (stats.cprom));
if isnan(ClusterProminence)
ClusterProminence=0;
else
ClusterProminence=ClusterProminence;
end
ClusterShade = double(mean (stats.cshad));
if isnan(ClusterShade)
ClusterShade=0;
else
ClusterShade=ClusterShade;
end
Dissimilarity = double(mean (stats.dissi));
if isnan(Dissimilarity)
Dissimilarity=0;
else
Dissimilarity=Dissimilarity;
end
Energy = double(mean (stats.energ));
if isnan(Energy)
Energy=0;
else
Energy=Energy;
end
.
.
.
features=[autocorrelation, contrast, Correlation, Dissimilarity, Energy, Entropy, Homogeneity, MaximumProbability, SumAverage, SumVariance, SumEntropy, DifferenceVariance, DifferenceEntropy, InverseDifferenceMomentNormalized];
Использование цикла, чтобы получить функции всех изображений (данные поезда):
srcFile = dir('D:\1. Thesis FINISH!!!\Data set\0 Well Segmented Character\Advertising Bold 24\datatrain\*.png');
fetrain = [];
for a = 1:length(srcFile)
file_name = strcat('D:\1. Thesis FINISH!!!\Data set\0 Well Segmented Character\Advertising Bold 24\datatrain\',srcFile(b).name);
A = imread(file_name);
[gl] = EkstraksiFitur_GLCM2 (A);
[fiturtrain] = reshape (gl, [56,1]) ;
fetrain = [fetrain fiturtrain];
% vectorname = strcat(file_name,'_array.mat');
end
save ('fetrain.mat','fetrain');
У меня есть свои особенности.
А затем запустить процесс обучения с использованием нейронной сети, но я получаю очень низкий уровень точности. Это код:
% clc;clear;close all;
% function net1 = pelatihan (input, target)
net = newff(fetrain,target,[10 2],{'tansig','tansig'},'trainscg');
% net.trainParam.mem_reduc = 2;
net.performFcn = 'mse';
net.divideFcn = 'dividetrain';
% [trainInd,valInd,testInd] = dividetrain(601);
net.trainParam.show = 10; % Frequency of progress displays (in epochs).
net.trainParam.epochs = 1000; %default 1000
net.trainParam.goal = 1e-6;
net = train(net,fetrain,target);
output = round(sim(net,fetrain));
save net1.mat net
% net2 = output;
data = fetest;
[target; output];
prediksi = round(sim (net, data));
[targetx; prediksi];
%% Calculate the accuracy %
y = 1;
j = size (prediksi, 2);
% x = size (targetx, 2);
for i = 1:j
if prediksi (i) == targetx (i)
y =y+1;
else
y;
end
end
% y all correct data
% j all data
s = 'The accuracy is %.2f%%';
acc = 100 *(y/j);
sprintf (s,acc)
Я пробовал несколько раз, но точность (результат теста NN) не улучшалась. Это условно дает выход 1,96%. Что-то не так с потоком процесса или с кодом, который я сделал?
Любая помощь будет очень полезно, и
Благодарим вас за ответ @Feras Во-первых, есть ли у вас предложения по нормализации функции? сбор данных только для обучения сети, у меня есть еще данные для тестирования. Я планирую использовать проверку перекрестных ссылок, но до сих пор не понимал этого. || 601 количество входных изображений (символьные изображения - OCR). || Во-вторых, я просто пытаюсь получить конкретные функции из структуры в качестве результата процесса GLCM || В-третьих, я уже установил входные изображения (изображения на арабском языке) –
Я бы порекомендовал вам начать стандартизацию функций. а затем попытайтесь сделать какой-либо выбор функции или, возможно, попытайтесь оценить ее, используя приложение weka. это изображение, взятое из планшета или руки? снова вы не могли бы написать структуру, которую используете в NN – Feras
Есть ли у вас какой-либо метод рекомендации по стандартизации функций? Или пример кода? Это было бы очень полезно. || Изображение, выбранное из набора данных APTI. || Вы имели в виду, что структура - это что-то вроде алгоритма или рабочего потока NN ?, или параметров? , извините, я просто новичок, все еще не совсем понял все о NN. ... Спасибо @Feras –