🤪 Segment Anything

Отже, хлопці, що там щодо сегментації? Здається, тепер не доведеться тренувати нову модель сегментації під кожне окреме завдання (sic!). Meta AI розробили фундаментальну модель для сегментації картинок, яка може багато чого.

З коробки модель Segment Anything (SA) вміє сегментувати об’єкти за промптом. Промпт може бути текстовим, або кілька точок, або виділена область.

SA вивчила загальну концепцію об’єктів і може генерувати маски для будь-якого об’єкта на будь-якому зображенні або відео, навіть включно з об’єктами і типами зображень, яких не було в трейні. Вона готова до використання на різних “доменах” без додаткового навчання”.

Вихід Segment Anything – це щось на кшталт “GPT-3 моменту” для сегментації. Коли можна взяти велику загальну модель і вона відразу працюватиме не гірше, а то й краще (якщо даних мало), ніж спеціалізована модель.

Мало того, ваги і код моделі повністю відкриті:

тиць
github.com/facebookresearch/segment-anything

Сайт проєкту:

тиць
segment-anything.com

Demo:

тиць
segment-anything.com/demo

Структура моделі:

Тут усе за класикою – великі трансформери і крос-аттеншени.

  1. Encoder зображень ViT-H, який обробляє кожне зображення і видає фічі.
  2. Encoder запитів, який обробляє вхідні промпти, такі як кліки, бокси або текст.
  3. Легкий декодер на основі трансформера, який передбачає маски об’єктів на основі фіч зображення і запитів.

Розмір моделі:

Image Encoder містить 632M параметрів.

Encoder запитів і decoder масок містять 4M параметрів. Це дає змогу порахувати фічі картинки на GPU (0.15s на A100), і ганяти все інше реаліайм на CPU прямо в браузері (50ms на запит).

Модель навчалася протягом 3-5 днів на 256 GPU A100, що не особливо багато в сучасних реаліях, коли SD або GPT-4 навчаються місяцями.

Для потужної генералізації модель потрібно навчати на величезному датасеті. Так ось автори зібрали й опублікували найбільший датасет із сегментації: 1 млрд масок на 11 млн зображень. Його і використовували для навчання.

Я протестував модельку Segment Anything у себе в браузері.

Запустив на картині Пітера Брейгеля Старшого, який страшенно любив малювати багато дрібних деталей. І ось, що вийшло: Хоч у тренувальному датасеті не було картин, модель добре зіставляється сегментацією і намальованих об’єктів. Іноді, коли однієї точки не вистачає, щоб повністю виділити об’єкт, потрібно клікнути ще разок, або виділити боксом.

Поки я рухав мишкою, prompt encoder і mask decoder крутилися в реальному часі локально в мене на CPU.

До речі, модель Segment Anything можна непогано склеїти в єдиний пайплайн з Instance деткекторами. Детктор буде випльовувати бокси, а SA видаватиме маски за заданими боксами.

Або ще краще. Для артистів: Ви текстом говорите, що поміняти і як, потім Segment Anуthing видає маску, а Stable Diffusion за маскою генерує змінений регіон у бажаному вигляді. Чекайте скоро на просторах інтернету.

Додати коментар