Приветствую. Имеется массив нулей и единиц представляющий бинарное изображение. На нем могут быть изображены геометрические фигуры. Пример:
000000000000000
000111111000000
000111111000000
000111111000000
000111111000000
000111111000000
000111111000000
000000000000000
Нужно идентифицировать квадраты и окружности. На данный момент реализована разметка фигур и сбор параметров характеризующих геометрическую фигуру:
- Подсчитаны моменты для рядов и столбцов фигуры. Если этот параметр близок к нулю, фигура симметрична, круг или квадрат.
- Отношение расстояний между центроидом фигуры и максимально удаленной точкой периметра и минимально удаленной точкой периметра (Если примерно равно 1.41 то это квадрат, если единица то круг)
- Подсчитана компактность (circularity) Харалика (параметр растет с приближением формы фигуры к окружности, находится в переделах от 7.5 до 9.1 для квадратов и выше для кругов)
Таким образом, пример входного вектора для нейронов выглядит так: [0.0728022 ; 1.44278 ; 8.98357]
Насколько я понимаю, для обучения этой сети необходимо использовать обучение с учителем, например по методу Видроу-Хоффа
wj(t+1)=wj(t) - a * (yk-dk)* xjk
wj - вес j ого входа.
xj - сигнал на j ом входе.
yk - реальный выход сети для k-го примера.
dk - желаемый (идеальный) выход сети для k-го примера.
Вопрос в том, что мне брать за идеальный выход системы? Задав некие рандомные веса на входах я получаю некую сумму на выходе нейрона, но не могу понять с чем мне ее сравнивать?