C30: Оптимизированная статья: автоматическое маскирование с Segment Anything

Введение

В предыдущей статье мы узнали, что автоматическое маскирование — важнейший приём в процессах редактирования изображений, особенно при отделении объектов переднего плана от фона для таких задач, как дорисовка (in-painting) или композитинг. В этой статье мы рассмотрим, как использовать модель Segment Anything (SAM 2) вместе с ComfyUI для автоматизации процесса маскирования. Используя пользовательские узлы и рабочие процессы, можно эффективно задавать маски, смягчать края и заменять фон.



Ключевые компоненты автоматического маскирования

1. Установка необходимых пакетов узлов и моделей

Чтобы начать автоматическое маскирование, необходимо установить следующее:

  • Пакеты узлов:
    Используйте ComfyUI Manager, чтобы найти и установить эти пакеты узлов. После установки перезапустите ComfyUI.
  • Модель SAM 2:
    • Скачайте sam2.1_hiera_base_plus-fp16 модель с Hugging Face.
    • Поместите модель в ComfyUI/models/Sam2 каталог. Если модель не установится автоматически, следуйте шагам ручной установки, приведённым на странице Hugging Face.

2. Настройка рабочего процесса

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

Загрузка изображений

Начните с загрузки изображений переднего и заднего плана в ComfyUI с помощью Load Image узлов в ComfyUI. Убедитесь, что разрешение изображения известно, так как оно требуется для сегментации.

Получение разрешения изображения

Используйте Get Image Size узел из пакета Essentials, чтобы извлечь ширину и высоту загруженных изображений. Подключите выход Load Image узла к Get Image Size узлу.

Определение координат сегментации

Чтобы задать точки для сегментации:

  1. Добавьте Points Editor узел из пакета KJNodes.
  2. Подключите выходы изображения, ширины и высоты Get Image Size узла к Points Editor.
  3. Щёлкните правой кнопкой мыши по Points Editor узлу и выберите:
    • Преобразовать виджет во вход для ширины и высоты.
    • Новый холст чтобы создать пустой холст.
Загрузка модели SAM 2
  1. Добавьте Download SAM 2 Model узел и убедитесь, что параметры модели заданы так:
    • Модель: sam2_hiera_base_plus
    • Устройство: cuda
    • Точность: floating.16
  2. Подключите выход узла загрузчика к SAM 2 Segmentation узлу.
Создание маски сегментации
  1. Добавьте SAM 2 Segmentation узел.
  2. Подключите изображение и координаты (положительные и отрицательные точки) из Points Editor узла к узлу сегментации.
  3. Просмотрите выход маски с помощью Mask Preview узла из пакета Essentials.

3. Улучшение качества маски

Смягчение краёв с помощью размытия

Чтобы уточнить маску, используйте Grow Mask with Blur узел из пакета KJNodes:

  1. Разместите Grow Mask with Blur узел между SAM 2 Segmentation узлом и Image Composite Mask узлом.
  2. Настройте следующие параметры:
    • Радиус размытия: установите 2 для более мягких краёв.
    • Значение расширения: установите 2 pixels чтобы немного увеличить маску.
  3. Используйте Mask Preview узел, чтобы визуализировать изменения в реальном времени.
Композитинг маски

Подключите выход Grow Mask with Blur узла к Image Composite Mask узлу. Это позволяет заменить фон, сохраняя целостность объекта на переднем плане.


4. Сохранение итогового изображения

Когда маска и замена фона вас устроят:

  1. Добавьте Save Image Extended узел, чтобы сохранить результат на диск.
  2. Убедитесь, что Queue Mode установлен на Queue.
  3. Отмените обход узла сохранения с помощью Ctrl + B и поставьте рабочий процесс в очередь, чтобы сохранить изображение.

Пример рабочего процесса

Ниже приведён пример настройки рабочего процесса:

1. Load Image Node → Get Image Size Node → Points Editor Node  
2. Download SAM 2 Model Node → SAM 2 Segmentation Node → Mask Preview Node  
3. Grow Mask with Blur Node → Image Composite Mask Node → Save Image Extended Node  


Повышение точности маски

Чтобы обеспечить оптимальную точность маски:

  • Используйте Points Editor узел, чтобы точно задать точки переднего и заднего плана.
  • Поэкспериментируйте со значениями размытия и расширения в Grow Mask with Blur узле, чтобы сбалансировать мягкость краёв и покрытие маски.

Источники

Оставить комментарий