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

Зачем вообще резать снимок

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

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

Что обычно ломается при нарезке

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

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

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

Как проверить, помогает ли тайлинг именно вам

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

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

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

Типичные ошибки и выводы

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

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