Пиксели, каналы и цветовые пространства

Компьютерное зрение с ИИ · Урок 2 / 22

Что именно попадает в модель

Изображение в памяти — массив чисел формы «высота × ширина × каналы». Для обычного снимка это H×W×3, тип uint8, значения 0–255 на канал. Кадр 1920×1080 занимает около 6 МБ в несжатом виде и 200–400 КБ в JPEG; на этом разрыве строится половина инженерных решений про хранение и передачу. Понимание раскладки массива нужно не ради теории: почти все «модель выдаёт мусор» на старте проекта объясняются перепутанным порядком осей, каналов или диапазона.

Четыре вещи, которые ломаются чаще всего

  • Порядок каналов. Одна популярная библиотека читает файл как BGR, другая как RGB. Ошибка не вызывает исключения: картинка просто выглядит синеватой, а точность падает на 5–15 процентных пунктов на цветочувствительных классах.
  • Порядок осей. Форматы H×W×C и C×H×W соседствуют в одном пайплайне. Перепутали — получите либо явную ошибку размерности, либо, что хуже, молчаливую интерпретацию строк как каналов.
  • Диапазон. Модель ждёт 0–1 или нормализованные значения, а вы подаёте 0–255. Результат — уверенные и неверные предсказания.
  • Ориентация из EXIF. Снимки с телефона хранятся горизонтально плюс флаг поворота. Библиотека, игнорирующая флаг, отдаст модели повёрнутый на 90° кадр — а разметка делалась в просмотрщике, который флаг учитывал.

Цветовые пространства и когда они помогают

RGB   — вход почти любой обученной сети, дефолт
Grayscale — 1 канал; годится, если цвет не несёт информации
              (рентген, ИК, текст) — экономит 2/3 входных данных
HSV   — тон/насыщенность/яркость раздельно; полезно для
        порогов по цвету, устойчивых к смене яркости
LAB   — светлота отделена от цвета; удобно для коррекции
YCbCr — внутренний формат JPEG и видеокодеков

Практический смысл HSV: если вы отделяете жёлтую разметку от асфальта простым порогом, в RGB порог поедет при каждом облаке, а в HSV в основном изменится канал V, который вы в пороге не используете. Для нейросети выбор пространства почти не имеет значения: она выучит преобразование сама, если оно линейное. Разница возникает для эвристик и предобработки.

Глубина и специальные каналы

Восемь бит на канал — не универсум. Медицинские и промышленные камеры отдают 12–16 бит: в тёмных участках рентгена есть детали, которые при огрублении до 8 бит просто исчезают. Если вы конвертируете 16-битный снимок оконным преобразованием, окно становится частью модели — зафиксируйте его и повторяйте на инференсе. Отдельно живут не-цветовые каналы: глубина с ToF-камеры, тепловизор, ближний ИК. Их можно подать как дополнительный канал, но веса предобученной сети рассчитаны на три канала, и четвёртый придётся инициализировать вручную.

Инсайт. Цветовое пространство — инструмент для правил, а не для сети. Сеть выучит любое линейное преобразование; человеческие пороги в HSV живут дольше, чем в RGB.
Частая ошибка. Отлаживать модель, не посмотрев глазами на тензор, который в неё уходит. Сохраните батч обратно в файлы после всей предобработки — половина багов видна за десять секунд.
Про-совет. Заведите один модуль чтения изображения на весь проект: он открывает файл, применяет EXIF-поворот, приводит к RGB и к нужному диапазону. Любой другой путь загрузки в коде — источник расхождения между обучением и продом.

Шпаргалка

  • Изображение — H×W×C, uint8 0–255; расхождения по осям и каналам молчаливы.
  • BGR против RGB и EXIF-поворот — два самых частых источника тихой потери качества.
  • HSV и LAB полезны для порогов и коррекции, сети хватает RGB.
  • 12–16 бит несут детали в тенях; окно преобразования фиксируйте как часть пайплайна.
1. Почему перепутанный порядок каналов особенно неприятен?
2. В какой ситуации HSV удобнее RGB?
3. Чем опасно огрубление 16-битного снимка до 8 бит?
Задание — проверяет ИИ

Возьмите 10 своих изображений из разных источников: телефон, скриншот, кадр с камеры, скан. Для каждого выпишите разрешение, число каналов, тип данных, наличие EXIF-поворота и размер файла. Загрузите их двумя разными способами (например, двумя библиотеками) и сравните: совпадают ли порядок каналов, ориентация и диапазон значений. Опишите найденные расхождения и то, какое из них молча испортило бы обучение.

← Назад

🔒 Ответьте на вопрос верно, чтобы перейти к следующему уроку.

Пиксели, каналы и цветовые пространства — Компьютерное зрение с ИИ — Skilvy