Замечательные AI-таблицы

Распознавание геометрических форм

Boris Kravtsov, PhD
9 min readFeb 3, 2023

Опубликована 3 февраля 2023, а последнее обновление внесено 26 августа 2023.

Татьяна Марковцева: «Апрельский дождь», «Утренний бриз» (с разрешения автора)

Мы легко узнаём очертания женских фигур на прекрасных миниатюрах Татьяны Марковцевой. Вместе с тем сколь угодно продвинутая биометрическая система не справится с подобной задачей. Для успеха биометрии необходимо, чтобы три-четыре десятка параметров реальной женской фигуры практически совпадали с измерениями женщин на рисунках выше. Но последнее абсолютно невозможно, когда в вашем распоряжении всего несколько линий художника-минималиста.

А эта популярная детская игра доказывает, что ребенок 2–2,5 лет распознаёт и правильно использует простые геометрические формы, которые видит впервые. Другими словами, для такой игры детям не требуется никакого предварительного обучения.

Из сказанного выше заключаем, что ни биометрия, ни основанная на масштабном предварительном обучении технология Deep Learning не имеют ничего общего со способом распознавания, которым пользуется человек.

Заметим, мы не критикуем существующие подходы. Мы лишь утверждаем, что помимо известных и успешно применяемых технологий должен существовать еще и альтернативный метод распознавания, который неосознанно и эффективно используют люди. Поиску этой альтернативы и посвящена данная статья.

Два общих замечания:

  1. Впечатляющий прогресс игровых программ (шахматы, го) и программ машинного перевода, продвижение идеи беспилотного автомобиля и т. д. по сути построены на простом переборе огромного числа вариантов. В этой связи разговоры об успехах искусственного интеллекта продиктованы конъюнктурой или обыкновенным невежеством.
  2. Полную беспомощность компьютерного распознавания хорошо иллюстрирует рисунок ниже. Именно нашу неспособность создать по-настоящему работающую программу повсеместно используют для защиты сайтов.

Знакомство с AI-таблицами

Одного взгляда на фигуры выше будет достаточно, чтобы найти и объединить в пары те из них, которые мы называем похожими. Но что означает это понятие — «похожий»? Строгого определения нет, и наука не знает, каким образом сравнивать геометрические фигуры разной формы. Лишь руководствуясь своей врожденной интуицией, мы смогли составить упомянутые пары.

Пример № 1. При создании геометрических фигур (форм) мы здесь использовали пакет Hand-Drawn Shape Simulation (hdss).

В левой таблице, именуемой SHUFFLED, формы расположены хаотично. Постарайтесь так изменить их положение, чтобы похожие формы оказались в общем столбце. Один из правильных вариантов ответа показан справа, в таблице SEPARATED, но вы без труда сможете предложить и любой другой.

Исходная таблица SHUFFLED (слева) и результирующая таблица SEPARATED (справа)

Успешная сортировка позволяет ввести понятие типа. Тип формы — это имя столбца таблицы, в котором расположены все похожие между собой формы. Например, пятиконечным звездам выше сейчас присвоен тип «C», но при другом варианте сортировки тип может измениться. Здесь важно лишь то, что различным формам (например, пяти- и шестиконечным звездам) будут присвоены разные типы.

Пример № 2. Приступим к распознаванию новых форм, показанных здесь другим цветом.

Новые формы

Мы будем сопоставлять каждую новую форму со всеми элементами (формами) таблицы SEPARATED, которую на этот раз расположим слева. Если новая форма более всего похожа, к примеру, на шестиконечные звезды из этой таблицы, то мы присвоим ей общий с ними тип «D» и т. д. Одновременно в правую, итоговую таблицу RECOGNIZED мы будем вносить новые формы, двигаясь сверху вниз и в соответствии с присвоенным им типом. В итоге таблица RECOGNIZED покажет все 18 результатов распознавания.

Таблица SEPARATED (слева) и результат распознавания — таблица RECOGNIZED (справа)

Итак, таблица SHUFFLED, заполненная формами в произвольном порядке и затем преобразованная в таблицу SEPARATED, позволила нам определить тип новых форм, т.е. распознать формы. Другими словами, распознавание форм было обеспечено лишь содержимым таблицы SHUFFLED.

Процесс преобразования таблиц SHUFFLED => SEPARATED назовем самообучением (self-study).

Еще два примера самообучения показаны ниже. Для них изображения создавались вручную программой рисования INKredible на iPad и затем масштабировались к размеру табличной ячейки 200 x 200 пикселей.

Пример № 3.

Исходная таблица SHUFFLED_3 (слева) и результирующая таблица SEPARATED_3 (справа)

Пример № 4.

Исходная таблица SHUFFLED_4 (слева) и результирующая таблица SEPARATED_4 (справа)

Новая модель искусственного интеллекта

Давайте представим, что на удаленном сервере работает компьютерная программа, которая способна полностью нас заменить при работе с таблицами SHUFFLED, SEPARATED и RECOGNIZED. Назовем эту программу AI Tables.

Загрузив на такой сервер небольшую выборку объектов (например, содержимое таблицы SHUFFLED_3), сервер приобретает способность распознавать. Действительно, после самообучения сервер сможет определять тип (масть) входной игральной карты и возвращать эту информацию обратно по Сети.

Замечательно, но нам этого мало! Мы хотим, чтобы сервер заодно распознавал и искаженные фигуры звезд. Для этого достаточно отправить ему дополнительно содержимое таблицы SHUFFLED из примера №1.

Итак, наш сервер после ознакомления с образцами объектов способен распознавать им подобные.

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

Человеку не надо специально учиться распознаванию, как и нашему серверу с программной поддержкой AI-таблиц.

Такой сервер является полноценной системой искусственного интеллекта потому, что он автономен и мы не сможем установить, кто занимается распознаванием в онлайне — человек или машина (по мотивам теста А. Тьюринга).

О технологии Deep Learning

Известная технология Deep Learning — это первая успешная попытка распознавания объектов, в которых допускаются их значительные геометрические искажения. Классическим примером служат рукописные числа. Красочное введение в эту сложную и крайне затратную технологию можно найти здесь.

Deep Learning стала широко популярна благодаря поддержке больших корпораций (Google, Facebook), постоянному потоку инвестиций и… броской терминологии (для начинающих исследователей «искусственный интеллект», «построение и обучение нейронных сетей» и т. п. звучит куда привлекательнее, чем, к примеру, «оптимизация запросов базы данных»). Сегодня даже современные процессоры разрабатываются с аппаратной поддержкой Deep Learning.

При этом мы вынуждены признать, что к человеческому интеллекту и пониманию механизмов функционирования структур нашего мозга технология Deep Learning никакого отношения не имеет.

Доказательством служит, как говорят математики, наличие контрпримеров. Поясним подробнее. Контрпример — это пример, опровергающий верность некоего утверждения. Например, утверждение, что «все простые числа нечетны» опровергается простым и четным числом 2. А утверждение, что «в русском языке нет слов с идущими подряд пятью согласными» опровергается словом «контрпример».

В случае с Deep Learning контрпримерами служат, в частности, примеры № 1 и № 2 выше, которые не вызывают затруднений у любого из нас, но недоступны данной технологии.

Нам не нужно специальное обучение, чтобы распознавать объекты. Анализируя их небольшую совокупность, мы самостоятельно извлекаем всю необходимую информацию (self-study) для последующего распознавания.

Основное отличие «метода таблиц» (AI Tables) и Deep Learning как раз и состоит в подготовке к распознаванию. Эту подготовку AI Tables выполняет самостоятельно и внутри самой себя, а система Deep Learning использует огромный массив изображений train data (аналог таблицы SEPARATED), подобранный человеком заранее вне этой системы.

О технологии AI Tables

Описывая выше различные манипуляции с таблицами и работу удаленного сервера, мы не упомянули, что программная реализация AI Tables уже существует, ее текст показан ниже, а библиотеку shapes-recognition можно установить из PyPI прямо сейчас —

pip install shapes-recognition==3.1.3

import shapes_recognition as sr


sr.init()

# S E L F - S T U D Y
# ---------------------------------------------
# Get a list of shapes for self-study
list_self_study_in = sr.get_self_study_data('DATA_SELF_STUDY')

# Self-study
list_self_study_out = sr.self_study(list_self_study_in)

# Show self-study result
sr.show_self_study_results(list_self_study_in, list_self_study_out)
# ---------------------------------------------

# R E C O G N I T I O N
# ---------------------------------------------
# Get a list of shapes for recognition
list_recognition = sr.get_recognition_data('DATA_RECOGNITION')

# Recognition
recogn_dictionary = \
sr.recognition(list_self_study_out, list_recognition)

# Show recognition result
sr.show_recognition_results(recogn_dictionary)
# ---------------------------------------------

Все представленные ранее результаты: сортировка геометрических фигур, их распознавание, визуализация AI-таблиц в виде изображений (см. примеры №1 — №4) — были сделаны не вручную, а данной короткой программой. Ее код, примеры выше и использованные нами данные вы найдете на сайте. Программа была протестирована на следующих платформах: Ubuntu 20.04, Windows 11 и macOS Ventura.

О программе и данных

О программе. Мы сознательно отказались от входных параметров, влияющих на ход и результаты вычислений. К примеру, отсутствует параметр «порог» (threshold), который казался обязательным при распознавании. Отсутствие параметров упрощает применение, но ведет к ряду ограничений. Наличие параметров лишает программу автономности и тем самым возможности называться системой искусственного интеллекта.

Количество строк в AI-таблице всегда равно 6 (фиксированное число экземпляров каждого типа), а количество столбцов может меняться от 2 до 4 (число различных типов данных). Таким образом, перед запуском программы в папке DATA_SELF_STUDY должно находиться определенное количество файлов изображений — 12, 18, 24 (одно из перечисленных). Папка DATA_RECOGNITION может быть пустой, содержать произвольное количество изображений — «кандидатов на распознавание» или вообще отсутствовать. Название и порядок размещения файлов роли не играют. Все результаты работы (таблицы, текстовые файлы) сохраняются в папке RESULTS, которая очищается при каждом новом запуске программы. Результаты распознавания, включая и те, которые не уместились в таблицу RECOGNIZED, вы найдете в файле recognition.txt.

Работа программы всецело определяется «учебным набором», т. е. набором геометрических форм в папке DATA_SELF_STUDY.

Время работы. Как видно из скриншота терминала PyCharm, самообучение (self-study) примера № 1 заняло 36 мин. 1 сек., а распознавание (recognition) — 53 мин. 45 сек (Processor: 3 Ghz 6-Core Intel Core i5, Memory: 8GB DDR4).

О данных. Ячейки AI-таблиц заполняются изображениями. Это цветные или grayscale-изображения размером 200 х 200 пикселей, в которых содержательная часть сформирована тонкими контрастными линиями. Чем линии тоньше и контрастнее, тем лучше. Цвет фона — обязательно белый. Содержательная часть должна составлять лишь малую долю всего изображения, т. е. белый цвет должен сильно превалировать.

О проблемах с данными MNIST. Мы вынуждены обсудить трудности с использованием базы данных MNIST, которая де-факто служит стандартом в области искусственного интеллекта. К сожалению, наш формат изображений 200 х 200 пикселей и предельно сжатые изображения MNIST 28 х 28 пикселей несовместимы. Такое сжатие было продиктовано лишь вычислительными ограничениями технологии Deep Learning, то есть данные были сознательно деградированы в угоду конкретной процедуре. Мы выражаем крайнее сожаление недоступностью оцифрованных оригинальных данных (т. е. до процедуры сжатия). Рационального объяснения этому мы не находим.

В статье Лю Чэн-Линя и др. (Cheng-Lin Liu et al.) приведена таблица (см. ниже) с отдельными образцами оригинальных NIST-изображений, которые и были нами использованы для пробного тестирования.

Лю Чэн-Линь и др. Примеры оригинальных изображений из базы данных NIST

Ниже приведены результаты сравнения отдельных чисел, объединенных в следующие пары: 2–4, 3–5, 4–6 и 5–7. Исходная, несортированная таблица SHUFFLED и таблица после сортировки, SEPARATED, расположены рядом.

Результат положительный, а единственную ошибку попытайтесь найти самостоятельно.

Успех данной сортировки означает, что программа хорошо улавливает различие в написании сравниваемых чисел и, следовательно, AI Tables тоже способна распознавать рукописные числа NIST наряду с процедурой Deep Learning. Смотри далее “Распознавание рукописных цифр (MNIST Dataset) без использования нейронных сетей”.

Сходство геометрических форм

Еще раз рассмотрим расположенный выше Пример № 1. Очевидно, что из четырех типов рассматриваемых фигур труднее всего отличать друг от друга искаженные пяти- и шестиконечные звезды. Тем не менее мы их легко узнаем или, другими словами, правильно оцениваем их степень сходства (similarity). Эту нашу способность к распознаванию мы предлагаем моделировать функцией get_similarity() из пакета shapes-recognition, которая косвенно уже доказала свою эффективность при построении AI-таблиц.

Теперь оценим потенциал get_similarity() напрямую путем проведения масштабного вычислительного эксперимента. Для этого, повторно используя hdss, сгенерируем две группы искаженных звезд: в первой — 50 штук пятиконечных и во второй — 50 штук шестиконечных.

При адекватной работе similarity = get_similarity() степень сходства (similarity) объектов одного типа или объектов, принадлежащих одной и той же группе, должна быть больше степени сходства объектов разных типов, т. е. объектов, принадлежащих разным группам.

Убедимся в этом. Заодно отметим, что достоверность результатов нашего эксперимента достаточно высока, так как она основана на анализе 4950 сравнений.

На рисунке выше голубым цветом представлены результаты обработки объектов из разных групп, а оранжевым — объектов внутри группы. Как видим, оранжевая гистограмма смещена вправо относительно голубой, т. е. однотипные звезды при сравнении действительно показывают более высокие значения степени сходства. При этом размер области перекрытия гистограмм отражает вероятность ошибки при принятии решений, а при значениях similarity > 0.66 вы надежно идентифицируете неизвестную звезду.

Замечание. Для желающих повторить данный эксперимент все необходимое имеется на нашем сайте.

--

--

Boris Kravtsov, PhD
Boris Kravtsov, PhD

Written by Boris Kravtsov, PhD

I'm trying to share some of my old thoughts and new perspectives.