Изображения

Коротко

Definition

Изображения — это данные, представленные в виде двумерной или многоканальной сетки пикселей, где важны локальные пространственные структуры: края, формы, текстуры, объекты и их взаимное расположение.

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

Примеры изображений в ML:

  • фотографии;
  • медицинские снимки;
  • микроскопия;
  • спутниковые изображения;
  • промышленные снимки дефектов;
  • сканы документов;
  • графики и диаграммы;
  • кадры видео.

Что это за данные

Цифровое изображение можно представить как массив чисел.

Для grayscale-изображения:

где:

  • — высота изображения;
  • — ширина изображения;
  • — матрица яркостей пикселей.

Для цветного RGB-изображения:

где:

  • — число каналов;
  • для RGB обычно ;
  • каждый канал описывает интенсивность одного цвета.

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

Как обычно представлены

Изображения обычно хранятся как файлы:

  • .jpg;
  • .png;
  • .tiff;
  • .bmp;
  • DICOM для медицинских изображений;
  • специальные форматы для научной микроскопии или спутниковых данных.

Перед подачей в модель изображение обычно превращают в числовой tensor.

Типичные формы tensor:

ФорматПримерГде часто встречается
H × Wgrayscale imageпростая обработка изображений
H × W × CRGB imageNumPy, OpenCV
C × H × WRGB imagePyTorch
N × C × H × Wbatch изображенийобучение нейросетей

Значения пикселей часто нормализуют:

  • из диапазона 0–255 в 0–1;
  • или стандартизируют по среднему и стандартному отклонению.

Какие задачи решают

На изображениях решают разные задачи.

Классификация изображения

Нужно отнести всё изображение к одному или нескольким классам.

Примеры:

  • кошка или собака;
  • есть дефект или нет;
  • тип клетки на микроскопии;
  • класс медицинского снимка.

Это вариант классификации.

Регрессия по изображению

Нужно предсказать число по изображению.

Примеры:

  • возраст по снимку;
  • концентрация вещества по изображению реакции;
  • численный показатель дефекта;
  • биомаркер по медицинскому снимку.

Это вариант регрессии.

Object detection

Нужно найти объекты на изображении и определить их классы.

Выход обычно включает:

  • bounding boxes;
  • классы объектов;
  • confidence score.

Segmentation

Нужно присвоить метку каждому пикселю или области изображения.

Примеры:

  • выделить опухоль на медицинском снимке;
  • отделить клетки от фона;
  • разметить дороги на спутниковом снимке;
  • выделить дефект на промышленном изображении.

Image generation

Нужно сгенерировать новое изображение или преобразовать существующее.

Для таких задач могут использоваться GAN, Диффузионная модель и автоэнкодеры.

Какие модели подходят

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

Основные варианты:

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

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

Типичная предобработка

Предобработка изображений зависит от задачи, но часто включает:

  1. Приведение изображений к единому размеру.
  2. Нормализацию значений пикселей.
  3. Проверку каналов изображения.
  4. Удаление повреждённых файлов.
  5. Разделение на train, validation и test.
  6. Аугментации.
  7. Проверку качества разметки.
  8. Балансировку классов, если задача классификации.
  9. Проверку data leakage между похожими или дублирующимися изображениями.

Типичные аугментации:

  • случайный crop;
  • поворот;
  • отражение;
  • изменение яркости;
  • изменение контраста;
  • добавление шума;
  • resize;
  • color jitter.

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

Частые проблемы

Слишком маленький датасет

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

В таких случаях используют:

  • transfer learning;
  • заморозку части предобученной модели;
  • аугментации;
  • более простую модель;
  • careful validation.

Это связано с переносом обучения.

Data leakage через похожие изображения

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

Если похожие изображения попали и в train, и в test, качество будет завышено.

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

Неправильные аугментации

Аугментации могут случайно изменить смысл изображения.

Примеры:

  • поворот медицинского снимка может сделать изображение анатомически неправильным;
  • отражение текста делает его нечитаемым;
  • изменение цвета может разрушить важный химический или биологический сигнал;
  • crop может удалить важный объект.

Разные размеры и форматы

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

Например, сильное сжатие или грубый resize может удалить мелкие дефекты.

Модель учится на артефактах

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

Например, она может отличать классы по рамке, водяному знаку, фону, прибору съёмки или качеству изображения, а не по самому объекту.

Дисбаланс классов

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

В таком случае accuracy может быть обманчивой, и нужно смотреть precision, recall, F1-score и ошибки по каждому классу.

Минимальный пример

Допустим, нужно классифицировать изображения деталей на два класса: defect и normal.

ИзображениеЧто видноКласс
1поверхность без поврежденийnormal
2трещина на поверхностиdefect
3царапинаdefect
4поверхность без поврежденийnormal

Типовой pipeline:

  1. Собрать изображения деталей.
  2. Проверить разметку defect / normal.
  3. Разделить данные на train, validation и test.
  4. Привести изображения к одному размеру.
  5. Нормализовать пиксели.
  6. Обучить CNN или использовать предобученную модель.
  7. Оценить качество через метрики классификации.
  8. Посмотреть ошибки модели на реальных изображениях.

Если дефект редкий, accuracy может быть плохой основной метрикой. Лучше дополнительно смотреть recall по классу defect, чтобы понимать, сколько реальных дефектов модель пропускает.

Практические замечания

Хороший workflow для изображений:

  1. Понять, что именно должно быть предсказано по изображению.
  2. Проверить качество и разнообразие изображений.
  3. Проверить корректность разметки.
  4. Сделать честное разделение на train, validation и test.
  5. Выбрать размер изображения и нормализацию.
  6. Настроить аугментации.
  7. Построить простой baseline.
  8. Обучить модель.
  9. Оценить качество подходящими метриками.
  10. Посмотреть ошибки визуально.
  11. Проверить, не использует ли модель артефакты.

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

Связанные понятия