Классификация и описание фотографий может быть субъективной проблемой. Трудно провести грань между темным и ярким, высококонтрастным и плоским, цветным и ненасыщенным и т. д. Это затрудняет поиск инструментов, кроме научных, предназначенных для измерения более четких, объективных вещей, таких как: на этом фото есть кот?»

Мой последний личный проект с кодом в этом репозитории github упаковывает скрипты для автоматических субъективных вызовов (например, темных или ярких) таким образом, чтобы их можно было персонализировать. Первоначально я планировал использовать его для быстрого поиска изображений; однако код также создает удобочитаемые подписи. Это сделано для иллюстраций, а также для других вариантов использования, таких как автоматические описания фотографий для слабовидящих.

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

Общая демонстрация

Mini-vision сгенерировал все подписи к изображениям ниже (которые также являются бессовестной рекламой моей собственной фотографии):

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

Конкретные возможности

Большинство задач машинного зрения в системе генерируют индекс, и пользователь устанавливает порог между низким и высоким значением индекса для них. Ниже перечислены качества, которые мини-зрение может выразить в количественных показателях:
1. Красочность
2. Контрастность
3. Тональный баланс
4. Выцветание изображения.

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

Так как же все это работает? Вообще говоря, скрипт загружает изображение в класс VisionSystem. Затем система машинного зрения принимает дочерние классы VisionTask, которые выполняют определенные задачи для мини-видения. Эти задачи могут быть любыми, но пока они выполняются либо путем прямого вычисления из матрицы изображения, либо через интерфейс классов с моделью машинного обучения, которая выполняет задачу.

Пример 1: Контраст

Фрагмент кода ниже показывает, как мини-зрение оценивает контраст (немного наивно, но на данный момент достаточно хорошо), вычисляя стандартное отклонение канала значений фотографии в цветовом пространстве значения насыщенности оттенка (HSV).

Пример 2: Исчезновение тени

Простейшая задача зрения в мини-зрении определяет, блекло ли изображение. Это распространенная техника редактирования, позволяющая придать фотографиям ощущение «ретро». Чтобы обнаружить это, класс фейда находит самый темный пиксель на фотографии. Если этот пиксель все еще достаточно далек от абсолютно черного (значения RGB равны нулю), то изображение считается «выцветшим».

Заключительные комментарии, будущая работа

Компьютерное зрение становится все более доступным, и создавать небольшие проекты довольно легко. Я настоятельно рекомендую взглянуть на OpenCV и его оболочку python.

Я работаю над улучшением некоторых задач видения, и я хочу добавить несколько, таких как обнаружение в помещении и на улице. Если у вас есть какие-либо идеи, пожалуйста, свяжитесь с репозиторием или разветвите его на github!