Тайлинг изображений высокого разрешения
Используй tile=True, чтобы обрабатывать изображения высокого разрешения перекрывающимися окнами, прежде чем изменять их размер до размера входа модели. Это позволяет сохранить детали небольших объектов, которые могли бы потеряться при изменении размера всего изображения. Дополнительный пакет не требуется.
Нарезка на тайлы использует стандартные конвейеры обучения, валидации и предсказания. Для каждого исходного изображения предсказание возвращает один объект Results. Перед сравнением предсказаний с исходными аннотациями валидация объединяет предсказания; функция потерь при обучении вычисляется на тайлах.
Использование#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.train(data="aerial.yaml", tile=True, imgsz=640)
metrics = model.val(data="aerial.yaml", tile=True, imgsz=640)
results = model.predict("large-image.tif", tile=640, imgsz=640, batch=8)yolo predict model=yolo26n.pt source=large-image.tif tile=640 imgsz=640 batch=8tile=True использует imgsz в качестве размера окна. Положительное целое число, например tile=1024, задаёт размер окна независимо от imgsz. По умолчанию используется tile=False. Окна перекрываются на 20%, а последние окна выравниваются по границе изображения. Для небольших изображений используется одно окно размером со всё изображение.
batch задаёт, сколько тайлов модель обрабатывает одновременно при предсказании. Существующий бэкенд обрабатывает фиксированные размеры пакетов при экспорте, включая последний неполный пакет. Экспортированные модели сохраняют стандартный граф входных данных; нарезка на тайлы выполняется в конвейере предсказания Python.
Для видео передавай результаты потоком, чтобы ограничить потребление памяти, и используй существующие параметры предсказания для их сохранения или отображения:
for result in model.predict("video.mp4", tile=640, stream=True, save=True):
print(result.boxes)yolo predict model=yolo26n.pt source=video.mp4 tile=640 save=TrueЗадачи и модели#
| Задача | Результат для всего изображения |
|---|---|
| Обнаружение | Переведи рамки в координаты исходного изображения и подави дубликаты с помощью iou, agnostic_nms и max_det. |
| Сегментация | Примени тот же отбор рамок и размести выбранные маски на исходном изображении. |
| Семантическая | Сшей карты классов, выбирая наиболее центральный тайл в областях перекрытия. |
| Глубина | Объедини перекрывающиеся карты глубины, увеличивая веса по направлению к центру каждого тайла. |
| Классификация | Усредни вероятности тайлов. |
| Поза | Отбери рамки и восстанови соответствующие ключевые точки. |
| OBB | Восстанови повёрнутые рамки и примени повёрнутый NMS. |
Общий конвейер поддерживает предсказания для моделей задач YOLO, YOLO-World, YOLOE, RT-DETR и FastSAM. Визуальные подсказки YOLOE создаются на основе всего исходного изображения и повторно используются для его тайлов. FastSAM выбирает маски по подсказкам после их объединения в координатах исходного изображения. Предикторы SAM используют собственный конвейер обработки подсказок и генерации кропов; они не принимают tile.
Во время обучения рамки и полигоны обрезаются по границам окон, при обрезке OBB сохраняется ориентация, а ключевые точки за пределами окна теряют видимость. Экземпляры, у которых осталось менее 10% исходной площади ограничивающей рамки, удаляются. Пустые окна остаются отрицательными примерами. Целевые карты сегментации и глубины используют те же окна, что и соответствующие изображения.
Производительность и качество#
- При нарезке на тайлы модель выполняет больше прямых проходов, чем при обработке целого изображения. Выбирай максимально возможные размеры тайлов и пакетов, которые сохраняют нужную детализацию и укладываются в доступную память.
- При обработке последовательных тайлов декодированное исходное изображение используется повторно. С
cache="ram"при обучении исходные изображения хранятся однократно;cache="disk"использует существующий кэш изображений. При обучении тайлы перемешиваются, поэтому кэширование особенно полезно для больших сжатых исходных изображений. - Для масок и плотных карт размером с исходное изображение по-прежнему требуется объём памяти, пропорциональный размеру исходного изображения.
max_detограничивает количество сохраняемых масок экземпляров. - При нарезке на тайлы теряется глобальный контекст. Проверяй точность на собственных данных, особенно для классификации и оценки глубины, так как результаты для тайлов могут быть несогласованными в глобальном масштабе.
- Подавление дубликатов выбирает предсказания целиком, а не восстанавливает объект из отдельных видимых фрагментов. Перекрытие уменьшает обрезание объектов по границам, но не может устранить его для объектов крупнее тайла.
- Источники-тензоры,
embedиvisualizeне поддерживаются. Трекинг выполняется один раз для каждого исходного кадра по объединённым предсказаниям, включая признаки ReID.
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.