Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2011, 22:16   #1
stiv73
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 26
По умолчанию Fast Artificial Neural Network Library (FANN) и Delphi 2010

Как установить компонент FANN в Delphi 2010?
Вот иснтрукция к установке
Код:
TFannNetwork is a Delphi component that encapsulates the Fann Library.
You do not have to install TFannNetwork to use Fann on Delphi, 
but it will make the library more Delphi friendly.

To install TFannNetwork you should follow all the previous steps and
- Copy the FannNetwork.pas and Fann.dcr to your Delphi Library PATH.
- Choose Component/Install Component.
- In the Unit file name field, click on Browse and point to the fannnetwork.pas file.
By default Delphi will install in the Borland User Components package, 
it might be changed using Package file name field or Into new package page.
- Click on Ok 
- A confirmation dialog will be shown asking if you want to build the package. Click on Yes.
- You have just installed TFannNetwork, now close the package window 
(Don't forget to put Yes when it ask if you want to save the package). 
- See the FannNetwork.pas file or the XorTFannNetwork Sample.
Но в delphi 2010 нет Component/Install Component, а есть только Install Packages.
Пробовал превратить это в пакет. Компонент появился в палитре компонентов, но при добавлении на форму TFannNetwork сразу появляется ошибка The nework has not been built . Пробовал ставить на Delphi 7, все нормально установилось и при добавлении этого компонета ошибка не появляется. Подскажите, как правильно ставить FANN на delphi 2010.
stiv73 вне форума Ответить с цитированием
Старый 31.03.2011, 15:29   #2
stiv73
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 26
По умолчанию

Никто не сталкивался с такой проблемой?
stiv73 вне форума Ответить с цитированием
Старый 31.03.2011, 15:41   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> You do not have to install TFannNetwork to use Fann on Delphi

может, забить?

Создайте компонент в рантайме, без добавления на форму. Если будут глюки, то, скорей всего, он не совсем совместим с десяткой, и прийдётся допиливать его руками/искать свежую версию/пинать автора/whatever.

Если глюков не будет, то забить на уставку в палитру и работать в рантайме.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 31.03.2011, 15:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если не секрет для чего он?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2011, 17:08   #5
stiv73
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 26
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если не секрет для чего он?
Эта библиотека позволяет реализовать искуственную нейронную сеть, которую потом можно обучить, например образы распознавать.
Вот оф сайт http://leenissen.dk/fann/wp/.
отсюда можно скачать сборку для Delphi http://leenissen.dk/fann/wp/language-bindings/
У них на форуме поднималась эта проблема http://leenissen.dk/fann/forum/viewtopic.php?f=3&t=537, только для Delphi 2009. Вроде в Delphi XE снова добавили Component/Install Component, но пока нет возможности сменить, и хотелось бы разобраться для этой версии.
Veniside, если не получится установить в палитру то придется так и делать, скорей всего глюков не будет, тут просто проблема, что нет Component/Install Component , наверно криво и устанавливается из за этого.
stiv73 вне форума Ответить с цитированием
Старый 01.04.2011, 17:27   #6
eduard93
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 300
По умолчанию

Упоминание Delphi 2009 наталкивает на мысль, что этот компонент не адаптирован к юникоду. Но поскольку это лишь обертка к внешней либе, то исправить ситуацию должно быть достаточно легко.
eduard93 вне форума Ответить с цитированием
Старый 02.04.2011, 00:30   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Создавай в ран-тайме, я вот типа такого делал для простой капчи
Код:
unit CaptchaTrainer;

interface

uses
  SysUtils, Graphics, FannNetwork;

type
  TCaptchaTrainer = class
  private
    fInputs, fOutputs: array of single;
  public
    FANN: TFannNetwork;
    constructor Create;
    procedure CreateNN(numInputs, numOutputs: integer); overload;
    procedure CreateNN(bitmapWidth, bitmapHeight, numOutputs: integer); overload;
    procedure LoadNN(fileName: string);
    procedure SaveNN(fileName: string);
    function Learn(bitmap: TBitmap; value: integer): single;
    function Guess(bitmap: TBitmap): integer;
    destructor Destroy; override;
  end;

implementation

{ TCaptchaTrainer }

function MaxValueIndex(const Data: array of Single): integer;
var I: Integer;
    maxvalue: single;
begin
  maxvalue := Data[Low(Data)];
  result := Low(Data);
  for I := Low(Data) + 1 to High(Data) do
    if maxvalue < Data[I] then
    begin
      maxvalue := Data[I];
      result := I;
    end;
end;

constructor TCaptchaTrainer.Create;
begin
  FANN := TFannNetwork.Create(nil);
  with FANN do
  begin
    ActivationFunctionHidden := afFANN_SIGMOID;
    ActivationFunctionOutput := afFANN_SIGMOID;
    TrainingAlgorithm := taFANN_TRAIN_RPROP;
    ConnectionRate := 1;
    LearningRate := 0.1;
  end;
end;

procedure TCaptchaTrainer.CreateNN(numInputs, numOutputs: integer);
begin
  SetLength(fInputs, numInputs);
  SetLength(fOutputs, numOutputs);
  with FANN.Layers do
  begin
    Add(IntToStr(numInputs));
    Add(IntToStr(50));
    Add(IntToStr(numOutputs));
  end;
  FANN.Build;
end;

procedure TCaptchaTrainer.CreateNN(bitmapWidth, bitmapHeight,
  numOutputs: integer);
begin
  SetLength(fInputs, bitmapWidth * bitmapHeight);
  SetLength(fOutputs, numOutputs);
  with FANN.Layers do
  begin
    Add(IntToStr(bitmapWidth * bitmapHeight));
    Add(IntToStr(50));
    Add(IntToStr(numOutputs));
  end;
  FANN.Build;
end;

destructor TCaptchaTrainer.Destroy;
begin
  FANN.UnBuild;
  FANN.Free;
  inherited;
end;

function TCaptchaTrainer.Guess(bitmap: TBitmap): integer;
var x,y,i: integer;
begin
  i:=0;
  for x:=0 to bitmap.Width-1 do
    for y:=0 to bitmap.Height-1 do
    begin
      if bitmap.Canvas.Pixels[x,y]=$00000000 then fInputs[i]:=1 else fInputs[i]:=0;
      inc(i);
    end;
  FANN.Run(fInputs, fOutputs);
  result := MaxValueIndex(fOutputs);
end;

function TCaptchaTrainer.Learn(bitmap: TBitmap; value: integer): single;
var x,y,i: integer;
begin
  i:=0;
  for x:=0 to bitmap.Width-1 do
    for y:=0 to bitmap.Height-1 do
    begin
      if bitmap.Canvas.Pixels[x,y]=$00000000 then fInputs[i]:=1 else fInputs[i]:=0;
      inc(i);
    end;
  for i:=0 to high(fOutputs) do if i=value then fOutputs[i]:=1 else fOutputs[i]:=0;
  result := FANN.Train(fInputs, fOutputs);
end;

procedure TCaptchaTrainer.LoadNN(fileName: string);
begin
  FANN.LoadFromFile(fileName);
end;

procedure TCaptchaTrainer.SaveNN(fileName: string);
begin
  FANN.SaveToFile(fileName);
end;

end.
пыщь
JTG вне форума Ответить с цитированием
Старый 02.04.2011, 16:56   #8
stiv73
Пользователь
 
Регистрация: 17.06.2009
Сообщений: 26
По умолчанию

JTG, спасибо за пример кода.
Судя по этому
PHP код:
uses
  SysUtils
GraphicsFannNetwork
она у вас установлена как компонент?
И , если не секрет, какой процент успешных распознований получился?
stiv73 вне форума Ответить с цитированием
Старый 02.04.2011, 18:48   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

то что модуль есть в юзес не значит что он установлен как компонент, просто pas/dcu скинут в папку поиска модулей.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.04.2011, 16:25   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
она у вас установлена как компонент?
И , если не секрет, какой процент успешных распознований получился?
Нет, просто путь к папке есть в search path. Вот такое распознает почти в 100% случаев, хотя конечно использование нейросети тут — оверкилл
Изображения
Тип файла: jpeg captcha.jpeg (2.3 Кб, 323 просмотров)
Вложения
Тип файла: rar fann test.rar (341.7 Кб, 209 просмотров)
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GlScene и Embarcadero Rad Studio 2010 (Delphi 2010) Fiery Fox Мультимедиа в Delphi 4 19.11.2010 21:46
Fast Artificial Neural Network Library - PHP Extension - Оконница yarilo PHP 0 15.07.2010 18:06
Delphi 7 и Fast Report многостраничный отчет tarakan1983 БД в Delphi 3 09.04.2010 14:58
Network is unreachable Winamp Работа с сетью в Delphi 1 08.01.2010 21:34
Позвольте представить - Delphi Widget Library BOBAH13 Компоненты Delphi 13 06.01.2010 12:01