Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кто сталкивался с нейронными сетями, помогите с алгоритмом


Signal ©   (2012-11-01 17:19:00) 

Задача такая, распознать цифры с картинки (не капчта)
конкретнее, определить какой используется шрифт
скажем есть картинка, 7 на 11 пикселей с цифрой 5

есть список шрифтов,
1 вопрос сразу (как мне на канву битмапа отформатировать вывод текста по текущему шрифту, чтоб вписать его в эти 7 на 11 пикселей?) TextRect все равно на разных шрифтах выводится по разному, никак не въеду

смысл такой,
в нейронку (компонент NeuralNetHopf) заносятся по одному символу из каждого шрифта, далее по опорному нахожу максимальный вес, это и будет мой шрифт

поправьте, если это не так
уже башку всю сломал
(вариант просто распознать по пикселам мне не подходит)


Signal   (2012-11-02 02:48:00) [1]

или ума или входящий данных не дохват или то или то
не пойму как там
делаю так

NeuralNetHopf1.ResetPatterns;

Заполняю по шрифтам
bitmap канвас любой цифрой, допустим 5

потом


заполняется GridFont (TgridString для вида)

SetLength(xVector, 0);
for h:=0 to heR-1 do begin
for w:=0 to wiC-1 do begin
SetLength(xVector, length(xVector)+1);
  IntData:=StrToInt(GridFont.cells[w, h]);
  if IntData=1 then IntData:=1 else IntData:=-1;
  xVector[length(xVector)-1]:=IntData;
end;
end;
NeuralNetHopf1.AddPattern(xVector);
end;//===заполнерния фонтов 1 цифры
NeuralNetHopf1.InitWeights;

//=====
Далее идет распознавание
----Заполнение картинкой которую нужно определить
 NumVector:=0;
   for h := 0 to heR - 1 do begin
   for w := 0 to wiC - 1 do begin

      IntData:=StrToIntDef(GridOpor.cells[w, h], 0);
      //GridOpor.cells[w, h]:='5';

     // ViewMessage(IntData);
     NeuralNetHopf1.Layers[0].Neurons[NumVector].Output:=IntData;
      NumVector:=NumVector+1;
      end;
 end;

 NeuralNetHopf1.Calc;

NumVector:=0;

//=======Вывод получаецо то шо ввел, а не то, что должен распознавать
   for h := 0 to heR - 1 do begin
   for w := 0 to wiC - 1 do begin
      if NeuralNetHopf1.Layers[0].Neurons[NumVector].Output = 1 then
      GridOK.cells[w, h]:='1' else GridOK.cells[w, h]:='-1';
      NumVector:=NumVector+1;
 end;
 end;
end; NumVector:=0;

// NeuralNetHopf1.Layers[1].Neurons[NumVector].Weights[1]
// ViewMessage(NeuralNetHopf1.Layers[1].Neurons[NumVector].Weights[7]);

 ListBox1.Items.Clear;
//NeuralNetHopf1.Layers[1].Neurons[NumVector].ComputeOut();
   for h := 0 to heR - 1 do begin
   for w := 0 to wiC - 1 do begin
     //ViewMessage(NeuralNetHopf1.Layers[1].Neurons[w*h].Output);
      if NeuralNetHopf1.Layers[0].Neurons[NumVector].Output = 1 then
      GridOK.cells[w, h]:='1' else GridOK.cells[w, h]:='-1';
      //NeuralNetHopf1.Layers[1].Neurons[NumVector]. //StrToIntDef(GridFont.cells[w, h], 0);
//       NeuralNetHopf1.Layers[1].Neurons[NumVector].Output := IntData;
//       ListBox1.Items.Add(IntToSTr(NeuralNetHopf1.Layers[1].Neurons[NumVector].Weights[ NumVector]));
      NumVector:=NumVector+1;
 end;
 end;

//ps если кто может или заинтересован хотябы помочь, могу скинуть исходники


Германн   (2012-11-02 02:17:00) [2]


> Signal   (02.11.12 01:31) [7]
>
> народ одзавитесь, кто юзал NeuralNetHopf
> пример, что идет с ним нихера мне не помагает!

Ты не кричи. Ты лучше скажи, что у тебя не получается с этим самым NeuralNetHopf. Может кто-то и поможет.


Signal   (2012-11-02 01:31:00) [3]

народ одзавитесь, кто юзал NeuralNetHopf
пример, что идет с ним нихера мне не помагает!
там демо нужно к демо


Signal   (2012-11-01 23:32:00) [4]

тоже приятно, что не зря написал сюда)))


Rouse_   (2012-11-01 23:01:00) [5]


> Signal   (01.11.12 22:45) [4]

Жаль не могу помочь, но ты даже не представляешь какую ты идею мне подкинул своей веткой :)
За это спасибо.
А на QAZ-а не обращай внимания, мы его контролируем (периодически ;)


Signal   (2012-11-01 22:45:00) [6]

что за народ?

>>QAZ5  
тебе своего времени не жалко?


QAZ5   (2012-11-01 22:10:00) [7]

Удалено модератором


Signal   (2012-11-01 22:03:00) [8]

что-то я вообще запутался блин.
Чем больше добавляю данных, тем тупее происходит распознавание


Signal   (2012-11-01 21:23:00) [9]

Определяется гут, все работает, но как наученным данным присвоить какой-то идентиикатор? Хрен пойму, в output определяет нормально, только хрен пойму как присвоить значение этому оутпут

т.е. может не так выражаюсь

есть Нейрон возвращает, что это 2 (в пикселах рисую на выходе)
как в этом кампаненте при учении записать что это цифра 2?

Компанент NeuralNetHopf


Наверх

Титульная страница Поиск, карта сайта Написать письмо