DINOv2 для сегментации пользовательского набора данных Подробное руководство.
Подробное руководство по использованию DINOv2 для сегментации пользовательского набора данных
После YOLOv8 и SAM (Segment Anything Model), наиболее ожидаемой моделью компьютерного зрения является DINOv2. Мотивацию для этого руководства я получил из этого репозитория на GitHub: https://github.com/NielsRogge/Transformers-Tutorials/tree/master, во время выполнения кода я обнаружил 2 ошибки из-за этого, мне доставляли неприятные ошибки при обучении модели (в его руководстве он останавливал процесс обучения после некоторых шагов и возникали ошибки между ними и в последнем шаге обучения). Весь код взят из его ноутбука (за исключением некоторых изменений 🙂 ), а вот план атаки:
План атаки
- Введение DINOv2
- Установка библиотек
- Загрузка набора данных
- Создание набора данных PyTorch
- Создание загрузчиков данных PyTorch
- Определение модели
- Обучение модели
Введение DINOv2
DINOv2 – это визуальный трансформер, который был обучен самостоятельно на тщательно отобранном наборе данных из 142 миллионов изображений. Он предлагает лучшие функции изображения, или встраивания, доступные для последующих задач, таких как классификация изображений, сегментация изображений и оценка глубины.
![Рисунок 1: Модель полностью работает в этом руководстве. (выходное изображение, когда модель обучается всего одну эпоху) (изображение автора)](https://ai.miximages.com/miro.medium.com/v2/resize:fit:640/format:webp/1*4fGa-R5b5CiiaWXrWZxgbw.png)
Рисунок 1 иллюстрирует этот подход, в этом руководстве я просто обучаю линейное преобразование (слой CNN размером 1*1) поверх замороженного основания DINOv2. Это преобразование сопоставит особенности (встраивания патчей) с логитами (ненормализованные оценки, выходные данные нейронных сетей, указывающие на предсказания модели). В контексте семантической сегментации логиты будут иметь форму (batch_size, num_classes, высота и ширина), соответствующую предсказанному классу для каждого пикселя.
Установка библиотеки
Вот две основные библиотеки:
- Топ 7 неотъемлемых шпаргалок для успешного собеседования по науке о данных
- 10 лучших предобученных моделей для встраивания изображений, которые должен знать каждый data scientist
- 9 сессий с ODSC West, о которых мы не можем перестать говорить
!pip install -q git+https://github.com/huggingface/transformers.git datasets!pip install -q evaluate
Загрузка набора данных
Далее давайте загрузим набор данных сегментации изображений. В этом случае мы будем использовать набор данных Foodseg.
from datasets import load_dataset#datasetdataset = load_dataset("EduardoPacheco/FoodSeg103")#lables…