Задачи с фотографией

Пакетная обработка изображений

Как обработать сотню кадров без ручной работы и где автоматика начинает вредить.

Олег Красин··4 мин чтения

Коротко

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

Иллюстрация к пакетной обработке изображений

Когда пакет работает

Однотипные кадры. Съёмка в одних условиях: один свет, один фон, один тип объекта. Карточки товара, портреты с одной сессии, скриншоты.

Механические операции. Приведение к одному размеру, конвертация формата, удаление одинакового фона.

Первый проход. Автоматика делает грубую работу, дальше идёт ручная доводка проблемных кадров.

Когда пакет вредит

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

Лица. Ретушь пакетом приводит всех к усреднённому виду, и на групповой съёмке люди начинают походить друг на друга.

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

Порядок, который экономит время

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

Обработайте выборку. Пять кадров из каждой группы. Посмотрите глазами. Только потом запускайте на всю группу.

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

Про имена файлов и порядок

Прозаическая, но частая потеря времени. Пакетная обработка легко перемешивает порядок и переименовывает файлы.

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

Что автоматизировать нельзя

Отбор. Решение, какой кадр годен, а какой нет, остаётся за человеком — и на него уходит больше времени, чем на саму обработку.

Это же верно для генерации: отбор из дублей — основная работа, и она не автоматизируется.

Симптом, причина, решение

Что видитеПочему такЧто делать
Настройка хороша на пробе и плоха на прогонеВ пробу попали кадры из середины, а брак живёт по краям диапазонаНабирать пробу из крайних кадров, а не из первых попавшихся
Часть файлов не обработана, ошибки нетОтличаются формат, глубина цвета или цветовой профиль, инструмент молча пропустилСверять число файлов на входе и выходе первым же действием
Повторный прогон дал другой результатНе зафиксирован seed или обновилась версия модели на стороне сервисаЗаписывать параметры и версию рядом с результатом
Логотип или подпись съедены обработкойПакетная операция не различает содержание кадраВыносить кадры с наложениями в отдельную группу
Брак заметили после публикацииПроверяли по одному, а систематическое видно только рядомСмотреть контактным листом: сетка миниатюр показывает повтор мгновенно
Прогон обошёлся дороже расчётаОдна правка настройки означает пересчёт всей партииСчитать не цену кадра, а цену кадра, умноженную на число прогонов

Проба берётся по краям

Обычная ошибка — взять на пробу первые пять файлов. Первые пять почти всегда однородны: одна сцена, один свет, начало съёмки.

Работающий отбор — крайние случаи. Самый тёмный кадр и самый светлый. Самый детальный и самый пустой. Кадр со сложным краем: волосы, сетка, стекло. Кадр с текстом или логотипом, если такие есть.

Логика простая: настройка, которая держит края, держит и середину. Обратное неверно, и именно поэтому проба из середины даёт ложное спокойствие.

Воспроизводимость

Пакет ценен не тем, что обрабатывает много, а тем, что обрабатывает одинаково. Одинаково означает воспроизводимо: через неделю тот же прогон на том же входе даёт тот же выход.

Что записывается, чтобы это выполнялось: seed, точная формулировка промпта, все числовые параметры, версия модели или инструмента, порядок шагов. Хранится рядом с результатом, а не в переписке.

Что ломает воспроизводимость: случайный seed, обновление модели на стороне сервиса, ручная правка одного кадра посреди партии. Второе не в вашей власти — поэтому версия и записывается. Локальный запуск даёт контроль именно здесь: версия не меняется, пока вы её не поменяете.

Цена ошибки умножается на объём

Единичная ошибка стоит одной переделки. Ошибка в настройке пакета стоит всей партии, а если обработка платная — ещё и второго оплаченного прогона.

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

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

Партия, прерванная на середине

Обрыв посреди прогона — пропавшая сеть, кончившийся диск, закрытая крышка ноутбука — оставляет папку, где часть файлов готова, часть нет, а один записан наполовину.

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

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

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

Частые вопросы

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

Олег Красин псевдоним

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

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