Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак
easy

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Ныряем в бассейн аттракторов

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

Это адаптированный пересказ статьи Стивена Вольфрама — программиста, математика и физика. Если читаете на английском, посмотрите оригинальный текст, там много интересного.

Зрение нейросетей похоже на человеческое

Когда мы видим какое-то изображение, фотоны света от него попадают на клетки в задней части глаз. При этом в нервных клетках создаются электрические сигналы. Эти нервные клетки соединяются с другими, те — тоже с другими, и так сигналы проходят через последовательность слоёв нейронов.

В результате мы узнаём образ того, что видим: в мозге формируется мысль. Например, когда мы видим двойку, мы узнаём её и в печатном виде, и в рукописном, потому что нам в принципе известно, как выглядит двойка. Если же мы видим какой-то неизвестный иероглиф, то максимум, что мы можем сделать, — это просто запомнить, как он выглядит. Но понимания иероглифа не будет, пока мы не узнаем его значение.

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

В нейросети есть входные и выходные нейроны, а между ними расположены слои, на которых происходят какие-то вычисления. Данные между слоями передаются с каким-то коэффициентом, то есть «весом».

Зрение нейросетей похоже на человеческое
Цифры на картинке — это веса, которые применяются к данным, начиная с входных нейронов, затем на каждом уровне нейросети и, наконец, на выходе

Мы подробно говорили о том, как это работает, в статье «Что под капотом у ChatGPT и других чатов с большими языковыми моделями». В тот раз мы рассказывали, как нейросети работают со словами и смыслами, но для изображений, в том числе цифр, принцип тот же.

Когда мы узнаём знакомые очертания, то делаем вывод: ага, это похоже на то, что нам известно. Так же действуют и нейронки. Они анализируют, на что из уже известного больше похоже изображение, и по большему числу совпадений делают вывод о том, что видят.

В основе распознавания — сравнения

Для примера возьмём распознавание цифр — классический пример машинного обучения. 

Представим, что мы программируем такую модель для распознавания. У нас может быть модель с некоторыми a и b в качестве координат и переменной x для уровня серого в каждом пикселе. Эта модель примерно за полмиллиона операция рассчитывает значения пикселей на картинке и получает число, определяющее цифру на картинке. Функцию для такой модели действительно можно построить, но она будет очень сложной. Поэтому нейросети обучают иначе — на примерах. 

Чтобы научить нейронку распознавать цифры, в неё сначала загружают обучающие данные — какие-то однозначно различимые начертания:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Эти данные маркированы, то есть размечены так, чтобы нейросеть понимала, где какая цифра. По меткам нейронка запомнит, что одно изображение — это 0, другое — 1 и так далее. Это происходит без специального программирования, и в этом состоит магия нейросетей.

После обучения в нейронку можно загрузить другие образцы изображений печатных символов для каждой цифры:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

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

Затем нейронке можно показать ещё более сложные данные — изображения рукописных цифр:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Нейронка сравнит эти изображения с тем, что ей уже известно о печатных символах, и снова спустя какое-то количество вычислений «поумнеет» — научится узнавать рукописные цифры.

Аттракторы вместо функций

Более сложная задача для распознавания — размытые цифры с нечёткими очертаниями. Для обработки таких данных потребуется ещё больше времени, чем на предыдущих этапах, и поначалу нейронка будет часто ошибаться — например, часть из них распознает неправильно:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Получается, что размытая двойка для нейронки больше похожа на единицу. 

Чтобы разобраться, как нейросеть будет решать эту проблему, дадим ей рукописные изображения цифр 1, 2 и 3:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Сравнивая их с тем, что нейронка уже знает, она решает, на что они больше похожи. При этом анализируемые изображения как бы притягиваются друг к другу. В результате образуются аттракторы — какие-то компактные подмножества данных. Единицы притягиваются к одному месту, а двойки — к другому. 

Это происходит это примерно по тому же принципу, как жидкость наполняет ёмкость. Представим, что ёмкость разделена на области — они называются бассейны аттракторов.

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

В центре каждой области будут правильные данные (те, в которых нейросеть точно уверена), а на границах — те, по которым нейросеть с трудом приняла решение. Например, определённые начертания двоек и единиц будут ближе к центру бассейна с единицами, кривые тройки и единицы — с двойками и так далее.

Точность распознавания в нейросети — это вероятность получения результата без ошибок. Чем больше данных проанализировано, тем точнее со временем становятся распознавания.

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Теперь представим, что нейросеть таким же образом обучена различать изображения кошек. В неё были загружены маркированные данные с разными картинками. Возьмём типичную котейку:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Мы можем примерно представить, как нейронка анализирует этот образ с помощью набора производных изображений. Многие из них можно описать, как «контур кошки» или «кошка без фона»:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Но по мере того как данные передаются по нейросети от слоя к слою, нам всё труднее понять, что представлено на производных изображениях:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

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

Почему нейросеть иногда ошибается

Усложним задачу: представим, что нейросеть теперь должна различать кошек и собак. При этом мы снова не строим модель с функциями и не пишем программу, а обучаем нейросеть на загруженных размеченных примерах: показываем ей множество картинок с маркировками «кошка» и «собака». Изучив обучающий набор данных, нейронка составит один массив признаков, которые характерны для кошек, и другой массив признаков — для собак. По ним она будет понимать, кто есть кто.

Вот как можно представить аттракторы изображений, которые нейронка определила как кошек и собак:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

По некоторым характерным признакам распознавание происходит безошибочно. Но как быть, если собака одета в костюм кошки или наоборот? В этом состоит трудность: если что-то похоже одновременно на два или более объекта, нейросеть может давать неверный результат. Вот тут собака в костюме с кошачьими ушами затесалась к котам, а пушистый кот — к собакам:

Машинное зрение: как компьютер распознаёт даже плохой почерк и отличает котов от собак

Бороться с этим можно только одним способом — увеличивая базу данных нейросети. Но теперь вы знаете, почему, например при поиске картинок вы видите неожиданные результаты среди тех, которые соответствуют запросу.

Где это всё используется в реальной жизни

Распознавание образов нейросетями применяется уже практически везде, вот пара примеров для понимания масштабов:

  • Преобразование документов в цифровую информацию, например распознавание рукописного текста или печатных символов на фото или изображении камеры в реальном времени. Таким образом работают современные сканеры и сервисы онлайн-перевода по изображению.
  • Идентификация объектов на фото и видео, например для автоматической сортировки предметов на складах или для вторичной переработки. Для применения может потребоваться обучить систему на конкретных объектах, но эти способы постоянно совершенствуются. Скоро не будет нужно приглашать специалиста для настройки, а можно будет сделать всё самостоятельно без сложного оборудования. Уже есть программы для инвентаризации по изображениям веб-камеры.
  • Медицинская диагностика — по рентгеновским снимкам или результатам компьютерной томографии. Пока что машины только помогают врачам в постановке диагноза, но уже сильно облегчают им работу.
  • Проверка качества продукции на конвейере, например для определения количества брака или автоматического фиксирования недостатков. Если камера обнаружит, что внешний вид продукции на ленте не соответствует стандарту, система оповестит оператора.
  • Зрение автопилота в обычном транспорте и беспилотных автомобилях. С его помощью автомобиль ориентируется по дорожной разметке, знакам и ситуации на дороге.

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Мария Дронова

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy