ноутбуки | вывод | AutoDistill | собирать
Autodistill использует большие модели более медленных фундаментов для обучения небольших, более быстрого контролируемых моделей. Используя autodistill , вы можете перейти от немеченых изображений к выводу на пользовательской модели, работающей на краю без вмешательства человека между ними.
Кончик
Вы можете использовать AutoDistill на своем собственном оборудовании или использовать размещенную версию AutoDistill Roboflow для маркировки изображений в облаке.
В настоящее время autodistill поддерживает видение, такие как обнаружение объектов и сегментация экземпляров, но в будущем он может быть расширен для поддержки языковых (и других) моделей.
| Учебник | Док | Поддерживаемые модели | Способствовать |
|---|
Вот примеры прогнозов целевой модели, обнаруживающей бутылки с молоком и бутылки после обучения на автоматическом наборе данных с использованием Autodistill (см. Видео на autodistill youtube для полного пошагового прохождения):
Чтобы использовать autodistill , вы вводите немеченые данные в базовую модель, которая использует онтологию для маркировки набора данных, который используется для обучения целевой модели, которая выводит дистиллированную модель, настраиваемую для выполнения определенной задачи.
Autodistill определяет несколько основных примитивов:
autodistill должны соответствовать их совместимости друг с другом. Обнаружение объекта и сегментация экземпляров в настоящее время поддерживаются с помощью задачи detection . Поддержка classification будет добавлена в ближайшее время.CaptionOntology , которая побуждает базовую модель с текстовыми подписями и отображает их на имена классов. Другие онтологии могут, например, использовать вектор или примеры сжима вместо текстовой подписи.autodistill ; Это набор весов, настраиваемый для вашей задачи, который можно развернуть, чтобы получить прогнозы. Человеческая маркировка является одним из самых больших барьеров для широкого внедрения компьютерного зрения. Для создания набора данных, подходящего для обучения производственной модели, может потребоваться тысячи часов. Процесс дистилляции для тренировочных моделей не является новым, на самом деле, традиционная человеческая маркировка - это просто еще одна форма дистилляции из чрезвычайно способной базовой модели (человеческий мозг?).
Фонд -модели много знают о многом, но для производства нам нужны модели, которые много знают о небольшом количестве.
По мере того, как модели фундамента становятся все лучше и лучше, они будут все чаще увеличивать или заменять людей в процессе маркировки. Нам нужны инструменты для рулевого управления, использования и сравнения этих моделей. Кроме того, эти модели фундамента являются большими, дорогими и часто закрытыми за частными API. Для многих производственных вариантов использования нам нужны модели, которые могут работать дешево и в режиме реального времени на краю.
Базовые модели AutoDistill уже могут создавать наборы данных для многих общих случаев использования (и благодаря творческому подсказыванию и нескольким выстрелам мы можем расширить их утилиту на многие другие), но они еще не идеальны. Есть еще много работы; Это только начало, и мы хотели бы, чтобы ваша помощь в тестировании и расширение возможностей системы!
Autodistill модульный. Вам нужно будет установить пакет autodistill (который определяет интерфейсы для приведенных выше концепций) вместе с базовыми модельными и целевыми плагинами модели (которые реализуют конкретные модели).
Упаковывая их отдельно в качестве плагинов, зависимость и лицензионные несовместимости сводят к минимуму, а новые модели могут быть реализованы и поддерживаются любым.
Пример:
pip install autodistill autodistill-grounded-sam autodistill-yolov8Вы также можете клонировать проект от GitHub для местного развития:
git clone https://github.com/roboflow/autodistill
cd autodistill
pip install -e .Дополнительные базовые и целевые модели перечислены ниже.
См. Демо -ноутбук для быстрого введения в autodistill . Этот ноутбук проходит по созданию модели обнаружения контейнеров с молочными контейнерами без маркировки.
Ниже мы имели конденсированные ключевые части ноутбука для быстрого введения в autodistill .
Вы также можете запустить AutoDistill в одной команде. Сначала установите autodistill :
pip install autodistillЗатем беги:
autodistill images --base= " grounding_dino " --target= " yolov8 " --ontology ' {"prompt": "label"} ' --output= " ./dataset " Эта команда будет помечать все изображения в каталоге, называемых images с заземляющим дино, и использовать помеченные изображения для обучения модели Yolov8. Заземление Dino пометит все изображения с помощью «приглашения» и сохранить этикетку как «метку». Вы можете указать столько подсказок и ярлыков, сколько захотите. Полученный набор данных будет сохранен в папке с названием dataset .
Для этого примера мы покажем, как перегонять GrankedSam в небольшую модель YOLOV8, используя Autodistill-Schood-Sam и Autodistill-Yolov8.
pip install autodistill autodistill-grounded-sam autodistill-yolov8
from autodistill_grounded_sam import GroundedSAM
from autodistill . detection import CaptionOntology
from autodistill_yolov8 import YOLOv8
# define an ontology to map class names to our GroundingDINO prompt
# the ontology dictionary has the format {caption: class}
# where caption is the prompt sent to the base model, and class is the label that will
# be saved for that caption in the generated annotations
base_model = GroundedSAM ( ontology = CaptionOntology ({ "shipping container" : "container" }))
# label all images in a folder called `context_images`
base_model . label (
input_folder = "./images" ,
output_folder = "./dataset"
)
target_model = YOLOv8 ( "yolov8n.pt" )
target_model . train ( "./dataset/data.yaml" , epochs = 200 )
# run inference on the new model
pred = target_model . predict ( "./dataset/valid/your-image.jpg" , confidence = 0.5 )
print ( pred )
# optional: upload your model to Roboflow for deployment
from roboflow import Roboflow
rf = Roboflow ( api_key = "API_KEY" )
project = rf . workspace (). project ( "PROJECT_ID" )
project . version ( DATASET_VERSION ). deploy ( model_type = "yolov8" , model_path = f"./runs/detect/train/" ) Чтобы построить аннотации для одного изображения, используя autodistill , вы можете использовать код ниже. Этот код полезен для визуализации аннотаций, сгенерированных вашей базовой моделью (т.е. Groundsam) и результатов вашей целевой модели (то есть YOLOV8).
import supervision as sv
import cv2
img_path = "./images/your-image.jpeg"
image = cv2 . imread ( img_path )
detections = base_model . predict ( img_path )
# annotate image with detections
box_annotator = sv . BoxAnnotator ()
label_annotator = sv . LabelAnnotator ()
labels = [
f" { base_model . ontology . classes ()[ class_id ] } { confidence :0.2f } "
for _ , _ , confidence , class_id , _ , _ in detections
]
annotated_frame = box_annotator . annotate (
scene = image . copy (), detections = detections
)
annotated_frame = label_annotator . annotate (
scene = annotated_frame , detections = detections , labels = labels
)
sv . plot_image ( annotated_frame , ( 16 , 16 )) Наша цель состоит в том, чтобы autodistill поддержал использование всех моделей фундамента в качестве базовых моделей и большинства моделей SOTA в качестве целевых моделей. Сначала мы сосредоточились на задачах обнаружения объектов и сегментации, но в ближайшее время планируем запустить поддержку классификации! В будущем мы надеемся, что autodistill также будет использоваться для моделей за пределами компьютерного зрения.
| база / цель | Yolov8 | Йоло-нас | Yolov5 | Детр | Yolov6 | Yolov7 | MT-YOLOV6 |
|---|---|---|---|---|---|---|---|
| Заземленный Сэм 2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Дети | ✅ | ✅ | ✅ | ✅ | ? | ||
| Организам | ✅ | ✅ | ✅ | ✅ | ? | ||
| Grounddingdino | ✅ | ✅ | ✅ | ✅ | ? | ||
| Сова-Вит | ✅ | ✅ | ✅ | ✅ | ? | ||
| SAM-CLIP | ✅ | ✅ | ✅ | ✅ | ? | ||
| Llava-1,5 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Космос-2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| OWLV2 | ✅ | ✅ | ✅ | ✅ | ? | ||
| Модели вселенной Roboflow (50K+ предварительно обученные модели) | ✅ | ✅ | ✅ | ✅ | ? | ||
| Кодекс | ✅ | ✅ | ✅ | ✅ | ? | ||
| Azure Custom Vision | ✅ | ✅ | ✅ | ✅ | ? | ||
| AWS Rekognition | ✅ | ✅ | ✅ | ✅ | ? | ||
| Google Vision | ✅ | ✅ | ✅ | ✅ | ? |
| база / цель | Yolov8 | Йоло-нас | Yolov5 | Yolov7 | Segformer |
|---|---|---|---|---|---|
| Организам | ✅ | ? | ? | ||
| SAM-CLIP | ✅ | ? | ? | ||
| Сеггпт | ✅ | ? | ? | ||
| Фастсам | ? | ? | ? |
| база / цель | Vit | Yolov8 | Yolov5 |
|---|---|---|---|
| Клип | ✅ | ✅ | ? |
| MetaClip | ✅ | ✅ | ? |
| DINOV2 | ✅ | ✅ | ? |
| Промальный | ✅ | ✅ | ? |
| Альбф | ✅ | ✅ | ? |
| Fastvit | ✅ | ✅ | ? |
| Altclip | ✅ | ✅ | ? |
| Evaclip | ✅ | ✅ | ? |
| Близнецы | ✅ | ✅ | ? |
| Fuyu | ? | ? | ? |
| Открытый фламинго | ? | ? | ? |
| GPT-4 | |||
| Пальма-2 |
Вы можете при желании развернуть некоторые целевые модели, обученные с использованием Autodistill на Roboflow. Развертывание на Roboflow позволяет использовать ряд кратких SDK для использования вашей модели на краю, от roboflow.js для развертывания веб -сайта до устройств Nvidia Jetson.
Следующие целевые модели Autodistill поддерживаются Roboflow для развертывания:
| Название модели | Поддерживается? |
|---|---|
| Обнаружение объекта YOLOV8 | ✅ |
| Сегментация экземпляра Yolov8 | ✅ |
| Обнаружение объекта YOLOV5 | ✅ |
| Сегментация экземпляра Yolov5 | ✅ |
| Классификация YOLOV8 |
AutoDistill: тренинги yolov8 с нулевыми аннотациями
Помимо добавления новых моделей, есть несколько областей, которые мы планируем изучить с помощью autodistill , включая:
Мы любим ваш вклад! Пожалуйста, смотрите наше руководство по работе, чтобы начать. Спасибо всем нашим участникам!
Пакет autodistill лицензирован в Apache 2.0. Каждый плагин базовой или целевой модели может использовать свою собственную лицензию, соответствующую лицензии ее базовой модели. Пожалуйста, обратитесь к лицензии в каждом плагине репо для получения дополнительной информации.
PytorchStreamReader failed reading zip archive: failed finding central directory ? Эта ошибка вызвана, когда Pytorch не может загрузить веса модели для модели. Зайдите в каталог ~/.cache/autodistill и удалите папку, связанную с моделью, которую вы пытаетесь загрузить. Затем запустите свой код снова. Вес модели будут загружены с нуля. Оставьте процесс установки непрерывным.
| Проект | Описание |
|---|---|
| надзор | Утилиты общего назначения для использования в проектах компьютерного зрения, от фильтрации и отображения прогнозов до отслеживания объектов до оценки модели. |
| AutoDistill (этот проект) | Автоматически маркировать изображения для использования в моделях обучения компьютерного зрения. |
| Вывод | Простой в использовании, готовый к производству сервер вывода для компьютерного зрения, поддерживающего развертывание многих популярных модельных архитектур и тонких моделей. |
| Записные книжки | Учебные пособия по задачам компьютерного зрения, от обучения современных моделей до отслеживания объектов до подсчета объектов в зоне. |
| Собирать | Автоматизированный интеллектуальный сбор данных, работающий на клипе. |