В предыдущей статье я описывал память волновых нейронов.В данной статье мы рассмотрим классификатор изображений.
Что такое классификатор
Классификатор(лат. classis— разряд и facere— делать) — систематизированный перечень наименованных объектов, каждому из которых в соответствие дан уникальный код.
В рамках данной статье я буду называть классификатором устройство, которое дает паре изображений уникальный код.
Теория
Мы должны взять два цветных изображения, разрушить их на набор бинарных изображений, так, как это описано в части 1.Потом, для каждого бинарного изображения найти волновую память, как описано в части 3, и сравнить массив волновой памяти одного изображения с массивом волновой памяти другого изображения. Поскольку разные изображения имеют разное количество цветов, мы ограничим число, на которое мы будем разбирать изображение. Назовем это число DEFMINCOLOR.
Мы имеем два вектора строк(массивы волновой памяти, которые записаны в виде строк) с одинаковой размерностью, равной DEFMINCOLOR.Для того, чтобы найти максимальное совпадение среди этих строк, необходимо сдвигать на DEFMINCOLOR раз один вектор, забирая из последнего элемента значение, выталкивая это значение из вектора и размещая его в начале этого же вектора, и сравнить этот вектор с вторым. Если значения первого вектора совпадают со вторым, добавляем в булевый вектор единичку. В противном случае добавляем нолик. Суммируем все значения в булевым векторе и делим это значение на размерность булевого массива, и умножаем на 100.Получаем процент совпадений волновой памяти. В цикле сдвига на DEFMINCOLOR раз мы находим максимальный процент совпадения волновой памяти.
То есть, классификатором двух изображений я буду называть процент максимального совпадения волновой памяти этих двух изображений.
Работа программы
Я снял видео и разбил его на фрагменты изображений. Осторожно, изображения в 144p.
Я преобразовал эти изображения в gif картинки и решил найти уникальное число совпадения волновой памяти, как и описывалось в теории.
Вот результаты для 255-цветных gif изображений.
Ступеньки и изображение, похожее на ступеньки
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой памяти 1.9685%
1.9685/100*255=5 общих описателей контуров
Ступеньки и компьютер
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой памяти 1.9685%
1.9685/100*255=5 общих описателей контуров
Ступеньки и дверь
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой памяти 2.3622%
2.3622/100*255=6 общих описателей контуров.
Когда я только начинал измерения, я обрадовался том, что у разных изображений имеются какие-либо общие черты, какое-то общее количество описателей контуров(волновой памяти), отличное от нуля. Однако я увидел, что программа дает одинаковые код разным парам изображения. Следовательно, этот код не является уникальным, и наша программа не является классификатором. Это провал.
Да, первое время я так и думал. Однако я решил взять не гиф изображения с количеством цветов 255, а png изображения, у которых было от 7 до 15 тысяч цветов. И начал проводить эксперименты над этими изображениями.
Ступеньки и изображение, похожее на ступеньки
Ограничитель цветов( DEFMINCOLOR ) равен 700
Процент совпадения волновой памяти 29.4286%
29.4286/100*700=206 общих описателей контуров
Ступеньки и компьютер
Ограничитель цветов( DEFMINCOLOR ) равен 700
Процент совпадения волновой памяти 11.8571%
11.8571/100*700=83 общих описателей контуров
Ступеньки и дверь
Ограничитель цветов( DEFMINCOLOR ) равен 700
Процент совпадения волновой памяти 12.1429%
12.1429/100*700=85 общих описателей контуров.
Здесь мы видим, что программа дает разный код разной паре изображений. Продолжим увеличивать DEFMINCOLOR
Ступеньки и изображение, похожее на ступеньки
Ограничитель цветов( DEFMINCOLOR ) равен 2000
Процент совпадения волновой памяти 18.3%
18.3/100*2000=366 общих описателей контуров
Ступеньки и компьютер
Ограничитель цветов( DEFMINCOLOR ) равен 2000
Процент совпадения волновой памяти 14.1%
14.1/100*2000=282 общих описателей контуров
Ступеньки и дверь
Ограничитель цветов( DEFMINCOLOR ) равен 2000
Процент совпадения волновой памяти 11.75%
11.75/100*2000=235 общих описателей контуров.
Теперь я решил уменьшить значение DEFMINCOLOR и приравнял его 255, такому же значению, как и для gif изображения. И был немного удивлен.
Ступеньки и изображение, похожее на ступеньки
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой памяти 45.8824%
45.8824/100*255=117 общих описателей контуров
Ступеньки и компьютер
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой памяти 15.2941%
15.2941/100*255=39 общих описателей контуров
Ступеньки и дверь
Ограничитель цветов( DEFMINCOLOR ) равен 255
Процент совпадения волновой 14.76%
14.76/100*255=36 общих описателей контуров.
Изображение классификатора
Выводы: Получается, что классификатор работает, однако ?гиф изображения не подходят для классификации ввиду сильного сжатия.
Спасибо за чтение статьи.
VDG
Резюмируя. Для пары практически не отличающихся изображений оценка совпадения 0,45. Произвольная пара изображений даёт ложно-положительный ответ в 0,15.
Они-то как раз и показывают реальное совпадение/различие (0,02), которое даёт алгоритм. А когда затем стали использовать не по одному изображению, а цветные изображения, бинаризованные способом из первой статьи, то фактически стали сравнивать крупные «низкочастотные» пятна на них. Вот и выросло «совпадение» с 0,02 до 0,15.