Нейросетевые технологии. Каширина И.Л. - 64 стр.

UptoLike

Составители: 

64
Для успешной работы нужно выяснить точный размер и местоположение
образа цифры. После локализацииприводим образ к размеру 40 × 40
(масштабирование). Эти операции выполняет функция vScale(I1:TImage,
var I2:TImage) – как на этапе обучения сети, так и на этапе распозна-
вания. Для эталона, ввиду отсутствия помех, локализацию провести
очень просто: достаточно последовательно просмотреть все точки образа
и
найти границы цифры.
Локализация и масштабирование:
var MinX,MinY,MaxX,MaxY:integer; // Границы локализованной цифры
ScaleX, ScaleY: real//// Коэффициенты сжатия
begin
MinX:= SourceSize+1;
MinY= MinX;
MaxX= -1;
MaxY= -1;
for x:=0 to SourceSize-1 do//массив Pixels нумеруется с 0
for y:=0 to SourceSize-1 do
if I1.Canvas.Pixels[x,y]=clBlack then begin
if x<MinX then MinX=x;
if y<MinY then MinY=y;
if x>iMaxX then MaxX=x;
if y>iMaxY then MaxY=y end;
ScaleX=(MaxX-MinX)/DestSize;
ScaleY=(MaxY-MinY)/DestSize;
for x:=0 to DestSize-1 do
for y:=0 to DestSize-1 do
I2.Canvas.Pixels[x,y] =
I1.Canvas.Pixels[x*ScaleX+MinX,y*ScaleY+MinY];
end;
Общий алгоритм распознавания для сети Хэмминга состоит из четырёх
частей:
подача распознаваемого образа на входы сети, передача данных с первого
слоя на второй, обработка данных вторым слоем, выбор распознанного об-
раза. Алгоритм работы первого этапа выглядит так.
1. Выбирается очередной нейрон.
2. Обнуляется его выход.
3. Изображение локализуется и приводится к нужному
масштабу.
4. Локализованный образ поточечно подаётся на входы i-го нейрона. Если
k-я точка образа чёрная, то к значению выхода прибавляется значение веса
k-го входа, в противном случае это значение вычитается.
5. Значение выхода пропускается через функцию линейного порога.
6. Переход на шаг 1, пока не исчерпаны все нейроны первого слоя.
Код первого
этапа процедуры распознавания:
for i: =1 to m do
begin
InputRow[i].Output:=0;
for x: =1 to DestSize do
for y: =1 to DestSize do // Подаём образ на нейроны первого слоя
Для успешной работы нужно выяснить точный размер и местоположение
образа цифры. После локализации — приводим образ к размеру 40 × 40
(масштабирование). Эти операции выполняет функция vScale(I1:TImage,
var I2:TImage) – как на этапе обучения сети, так и на этапе распозна-
вания. Для эталона, ввиду отсутствия помех, локализацию провести
очень просто: достаточно последовательно просмотреть все точки образа
и найти границы цифры.
Локализация и масштабирование:
var MinX,MinY,MaxX,MaxY:integer; // Границы локализованной цифры
       ScaleX, ScaleY: real//// Коэффициенты сжатия
begin
MinX:= SourceSize+1;
MinY= MinX;
MaxX= -1;
MaxY= -1;
for x:=0 to SourceSize-1 do//массив Pixels нумеруется с 0
   for y:=0 to SourceSize-1 do
       if I1.Canvas.Pixels[x,y]=clBlack then begin
                             if xiMaxX then MaxX=x;
                             if y>iMaxY then MaxY=y end;
ScaleX=(MaxX-MinX)/DestSize;
ScaleY=(MaxY-MinY)/DestSize;
for x:=0 to DestSize-1 do
   for y:=0 to DestSize-1 do
      I2.Canvas.Pixels[x,y] =
I1.Canvas.Pixels[x*ScaleX+MinX,y*ScaleY+MinY];
end;

Общий алгоритм распознавания для сети Хэмминга состоит из четырёх
частей:
подача распознаваемого образа на входы сети, передача данных с первого
слоя на второй, обработка данных вторым слоем, выбор распознанного об-
раза. Алгоритм работы первого этапа выглядит так.
1. Выбирается очередной нейрон.
2. Обнуляется его выход.
3. Изображение локализуется и приводится к нужному масштабу.
4. Локализованный образ поточечно подаётся на входы i-го нейрона. Если
k-я точка образа чёрная, то к значению выхода прибавляется значение веса
k-го входа, в противном случае это значение вычитается.
5. Значение выхода пропускается через функцию линейного порога.
6. Переход на шаг 1, пока не исчерпаны все нейроны первого слоя.
Код первого этапа процедуры распознавания:
for i: =1 to m do
begin
    InputRow[i].Output:=0;
    for x: =1 to DestSize do
    for y: =1 to DestSize do // Подаём образ на нейроны первого слоя

                                    64