Обучение моделей детекции и сегментации на разметке изображений
Дообучите детектор на рамках вашего исследования, покажите предсказанные рамки разметчикам как предварительные метки, переобучите на исправлениях и адаптируйте запуск к слайдам и клеткам.
Новое в v2.14.0
Этот учебник обучает детектор объектов на собственных ограничивающих рамках исследования и показывает рамки детектора следующим разметчикам как предварительные метки для исправления. Учебник написан для владельцев исследований со схемой image_annotation, которые прочитали Обучите первую модель или уверенно работают со страницей Training в панели администратора. Первая половина проходит один полный цикл с torchvision-detect (рамки на изображениях, запуск обучения, обратная запись, исправления и второй запуск), и каждый шаг там был выполнен на CPU ноутбука. Вторая половина адаптирует цикл к YOLO, контурам, уточнению через SAM, классам целых изображений, целым слайдам, микроскопии, картам, клеткам, страницам документов и визуально-языковым моделям, по одному разделу на каждое.
Установка тренеров для изображений
torchvision-detect дообучает детектор Faster R-CNN из torchvision. Тренеру нужны torch и torchvision. Potato не включает ни то, ни другое в установку по умолчанию, потому что torch весит несколько гигабайт. Установите группу для изображений на машине, которая обучает:
pip install "potato-annotation[train-vision]"Та же группа покрывает torchvision-segment, hf-image-classification, sam-finetune, layoutlmv3 и vlm-sft. Тренер, у которого не хватает пакетов, появляется на странице Training как "not installed" вместе с командой, которая ставит эти пакеты.
GPU для небольшого проекта ниже не обязателен. На Mac с Apple silicon torchvision-detect и torchvision-segment обучаются на CPU, а не на Metal (mps), и журнал запуска записывает переключение с предупреждением "torchvision-detect does not run on Apple's Metal (mps) with this torch; using the CPU". По измерениям команды Potato, один шаг обучения на Metal при размере изображения по умолчанию занимал больше времени, чем целая эпоха на CPU. Для более крупных изображений или более крупного исследования обучайте на GPU-сервере, как описывает Удалённое обучение.
Настройка проекта с изображениями
Проекту нужны три вещи: изображения, файл данных со списком изображений и конфигурация. Положите изображения в папку media внутри папки проекта, потому что Potato по умолчанию отдаёт <task_dir>/media/ по URL-пути /media/. Другая папка тоже работает, если конфигурация называет её в media_directory.
shapes/
config.yaml
data/images.jsonl
media/img_001.png
media/img_002.png
...Каждая строка data/images.jsonl это один объект с идентификатором и URL-путём изображения:
{"id": "img_001", "image_url": "/media/img_001.png"}Конфигурация определяет одну схему image_annotation с инструментом bbox и двумя метками и включает обучение моделей с обратной записью. Конфигурация проходит python -m potato.validate_cli --strict:
annotation_task_name: "Shape detection (model training)"
task_dir: "."
data_files:
- "data/images.jsonl"
item_properties:
id_key: "id"
text_key: "image_url"
output_annotation_dir: "annotation_output"
require_password: false
admin_api_key: "demo-admin-key"
num_annotators_per_item: 1
annotation_schemes:
- annotation_type: "image_annotation"
name: "objects"
description: "Draw a box around every circle and every square."
source_field: "image_url"
tools: ["bbox"]
labels:
- name: "circle"
color: "#e6194b"
- name: "square"
color: "#4363d8"
model_training:
enabled: true
writeback:
schemas: ["objects"]
include_unlabeled: true
min_confidence: 0.5Цикл определяют четыре настройки:
source_field: "image_url"сообщает виджету изображения и тренеру, в каком поле объекта лежит изображение.num_annotators_per_item: 1даёт каждому изображению одного разметчика, так что начальные метки охватывают как можно больше разных изображений.writeback.include_unlabeled: trueзаставляет каждый запуск предсказывать и на изображениях, которые ещё никто не разметил. Без этой настройки запуск предсказывает только на отложенных изображениях val и test, а на этих изображениях рамки человека уже есть.writeback.min_confidence: 0.5удерживает предсказание изображения, если средняя оценка его рамок ниже 0.5. Порог применяется ко всему изображению, поэтому разметчики никогда не видят половину рамок изображения.
Запустите сервер из папки проекта:
potato start config.yaml -p 8000Разметка начального набора
torchvision-detect отказывается обучаться, если в выборке train меньше 20 размеченных изображений, а разбиение по умолчанию отдаёт в train 70% размеченных изображений. Разметьте не менее 30 изображений, а если объекты разнообразны, то больше. Рисуйте рамки вручную на http://localhost:8000. Изображение без рамок исключается из обучения, потому что детектор не отличит изображение без объектов от изображения, которое никто не закончил. Рисуйте каждый объект на изображении, которое вы отправляете.
Чтобы испытать цикл до того, как что-либо разметит человек, симулятор пользователей может рисовать рамки по эталонному файлу. Каждая эталонная запись содержит идентификатор изображения и фигуры схемы в нормализованных координатах:
[
{"id": "img_001", "objects": [
{"type": "bbox", "label": "circle",
"coordinates": {"x": 0.158, "y": 0.849, "width": 0.106, "height": 0.146}}
]}
]python -m potato.simulator --server http://localhost:8000 --users 3 \
--strategy gold_standard --competence good=1.0 --max-annotations 20 \
--gold-file data/gold.json --sequential --fast-mode --no-exportСимулятор перерисовывает каждую эталонную рамку с небольшим дрожанием в несколько пикселей, а на уровне good симулятор ещё и пропускает или неверно метит часть объектов, как иногда делает внимательный разметчик. В нашем тесте на 80 синтетических изображениях три имитируемых разметчика разметили 60 изображений примерно за одну секунду.
Обучение torchvision-detect
Откройте http://localhost:8000/admin, введите ключ администратора demo-admin-key и откройте http://localhost:8000/admin/training. Выберите objects как схему и torchvision-detect как тренера, оставьте Parameters пустым и нажмите Train now. Тот же запуск начинается из скрипта так:
curl -X POST -H "X-API-Key: demo-admin-key" -H "Content-Type: application/json" \
http://localhost:8000/admin/training/api/runs \
-d '{"trainer": "torchvision-detect", "schemas": ["objects"]}'Запуск стартует с весов COCO из torchvision и ставит на детектор новую голову рамок для двух меток схемы. Torch скачивает веса COCO в кэш torch при первом запуске. По умолчанию используются небольшая архитектура fasterrcnn_mobilenet_v3_large_fpn, 15 эпох, 4 изображения на шаг и ранняя остановка после 4 эпох без улучшения mAP на val. Каждая фигура обучается как её ограничивающая рамка, поэтому в исследовании, где разметчики рисовали многоугольники, всё равно обучается детектор рамок. Если на изображение приходится несколько разметчиков, запуск обучается на одном целом ответе, который model_training.aggregation выбирает для изображения, потому что рамки двух людей редко совпадают точно.
На CPU Apple M4 Pro, который мы использовали, 37 обучающих изображений размером 320 на 240 пикселей обучались примерно 106 секунд, и запуск остановился после 5 эпох. Файлы запуска попадают в annotation_output/training/runs/<run_id>/, а дообученный детектор лежит в artifacts/model/detector.pt. Настройки запуска и устройство, которое он использовал, записаны в artifacts/model_card.json.
Чтение оценки на отложенных объектах
Каждый запуск оценивает детектор на изображениях, на которых детектор не обучался. Главная оценка для схемы image_annotation это map_50, средняя точность COCO, где предсказанная рамка считается совпадением, если она перекрывает ограничивающую рамку размеченного объекта с IoU не менее 0.5. Страница запуска также записывает map_50_95, среднее по порогам IoU от 0.5 до 0.95. Рамки двух разметчиков вокруг одного объекта редко перекрываются с IoU 0.9, поэтому более строгие пороги отчасти измеряют, насколько согласованно рисуют люди. Поэтому Potato ставит на первое место порог 0.5. Измерение согласованности по ограничивающим рамкам показывает, как проверить эту согласованность напрямую.
Детектор сохраняет контрольную точку эпохи с лучшей оценкой на val, поэтому главная оценка берётся из выборки test, если в ней есть изображения. Таблица Runs показывает главную оценку в столбце Held-out score. Страница запуска перечисляет n_train, n_boxes, размер и покрытие каждой выборки, а также число объектов, размеченных и предсказанных на val и test. В нашем тестовом запуске на 80 синтетических изображениях цветных кругов и квадратов детектор набрал 0.99 по map_50 на test. Синтетические фигуры находить гораздо проще, чем реальные объекты, поэтому оценивайте результат на собственных изображениях.
Проверка предварительных меток
После успешного запуска Potato записывает рамки детектора в поле predictions каждого подходящего изображения. GET /admin/training/api/status сообщает результат в поле writeback ответа, где n_written это изображения, получившие предварительные метки, а для каждой причины, по которой изображение удержано, есть свой счётчик, например n_skipped_low_confidence ниже min_confidence и n_skipped_train_split для изображений, на которых запуск обучался. Изображения выборки train предварительных меток не получают, потому что уверенность модели на её же обучающих данных ничего не говорит о новых изображениях.
Войдите на http://localhost:8000 под новым именем пользователя. Каждое неразмеченное изображение, прошедшее проверки обратной записи, открывается с уже нарисованными рамками детектора. Каждая рамка хранится с source: ai и оценкой детектора как confidence. Разметчик двигает рамку или меняет её размер, меняет метку, удаляет ложную детекцию и рисует объекты, которые детектор пропустил. Рамки становятся ответом разметчика, когда разметчик правит их или переходит к следующему изображению. Предварительная метка никогда не сохраняется, пока разметчик только смотрит на изображение. Очередь проверки модели выдаёт изображения с предварительными метками начиная с наименее уверенных, а вердикт correct проверяющего помещает изображение в выборку train каждого последующего запуска.
Переобучение на исправленных рамках
Каждое исправленное изображение становится меткой человека для следующего запуска. Начните ещё один запуск torchvision-detect на странице Training, когда разметчики проработают партию изображений с предварительными метками. Новый запуск заменяет предсказание предыдущего запуска на каждом изображении, а предварительная метка на изображении, на котором обучается новый запуск, снимается.
Чтобы переобучать без щелчков, добавьте блок auto_retrain. Этот фрагмент расширяет блок model_training выше и начинает запуск после каждых 25 новых разметок, не чаще одного раза в 10 минут:
model_training:
enabled: true
auto_retrain:
enabled: true
trainer: torchvision-detect
schemas: [objects]
update_frequency: 25
min_interval_s: 600
writeback:
schemas: [objects]
include_unlabeled: true
min_confidence: 0.5Предварительные метки привязывают разметчиков к рамкам модели. Включайте обратную запись для разметчиков, когда оценка на отложенных объектах оправдывает предварительные метки, а способ проверить, принимают ли разметчики рамки не глядя, см. в Как выявить формальное принятие предварительных меток.
Более быстрая детекция с Ultralytics YOLO
ultralytics-detect обучает детектор Ultralytics YOLO от контрольной точки, предобученной на COCO (по умолчанию yolo11n.pt), на тех же рамках. YOLO обучается и предсказывает быстрее torchvision-detect, а предварительные метки это те же редактируемые рамки. Ultralytics распространяется под лицензией AGPL-3.0, и модель, обученная и распространяемая с Ultralytics, несёт условия AGPL. Ultralytics продаёт отдельную корпоративную лицензию для закрытого использования. Группы Potato не включают Ultralytics, поэтому установите пакет сами:
pip install ultralyticsPotato просит подтвердить лицензию перед каждым запуском. Страница Training показывает подтверждение, запуску через API нужен "accept_licence": true в теле запроса, а автоматическому переобучению нужен auto_retrain.accept_licence: true. Без подтверждения API отклоняет запуск с HTTP 400, needs_licence_ack: true и сообщением "ultralytics-detect is licensed AGPL-3.0". Запрос ниже подтверждает лицензию и начинает запуск:
curl -X POST -H "X-API-Key: demo-admin-key" -H "Content-Type: application/json" \
http://localhost:8000/admin/training/api/runs \
-d '{"trainer": "ultralytics-detect", "schemas": ["objects"], "accept_licence": true}'Во время запуска тренер отключает аналитику использования Ultralytics, Ultralytics HUB, интеграции с трекерами экспериментов и автоматическую установку пакетов. Изменения действуют в памяти процесса запуска, а файл настроек Ultralytics остаётся без изменений. Контрольные точки скачиваются в ~/.cache/potato/ultralytics. По умолчанию используются 50 эпох при 640 пикселях и ранняя остановка после 10 эпох.
Контуры вместо рамок
torchvision-segment обучает Mask R-CNN из torchvision на контурах в виде многоугольников, эллипсов, произвольных линий и масок кисти. Рамки исключаются из обучения сегментации, потому что рамка не говорит, какие пиксели принадлежат объекту. Дайте разметчикам инструмент контура, например polygon или brush. Как размечать маски сегментации изображений описывает, когда подходит каждый инструмент.
Каждая предсказанная маска обводится в многоугольник не более чем с 64 вершинами, так что разметчик исправляет предварительную метку точка за точкой. Если маска получается кусками, сохраняется самый большой кусок. Значение score_threshold по умолчанию равно 0.5, а не 0.25 как у детектора. Вторые догадки Mask R-CNN об одном объекте получают оценки от 0.25 до 0.6, и каждая такая догадка была бы ещё одной фигурой, которую разметчику придётся удалить. Оценки на отложенных объектах сравнивают предсказанные многоугольники с размеченными контурами. На Mac torchvision-segment обучается на CPU. С torch 2.8 команда Potato измерила один шаг обучения на изображении 256 пикселей в 57 секунд на Metal и 2.3 секунды на CPU. Для настоящих исследований используйте GPU-сервер. ultralytics-segment это аналог на YOLO (yolo11n-seg.pt) с теми же многоугольниками до 64 вершин и тем же подтверждением лицензии AGPL-3.0.
Превращение рамок в контуры с sam-finetune
Рамки рисуются быстро, а контуры медленно. sam-finetune дообучает декодер масок Segment Anything (SAM), чтобы превращать рамку в контур, который нарисовали бы ваши разметчики. Энкодер изображения остаётся замороженным, а эмбеддинг каждого изображения вычисляется один раз, поэтому эпоха стоит недорого. Обучение подаёт каждому размеченному контуру в качестве подсказки его ограничивающую рамку. Запуск сдвигает и меняет размер каждой рамки-подсказки не более чем на box_jitter (по умолчанию 5%), так что декодер учится на рамках, настолько же неточных, как у детектора.
sam-finetune уточняет рамки и нуждается в рамках как в отправной точке. Обычная последовательность на одной схеме состоит из двух запусков:
- Запустите
torchvision-detectилиultralytics-detectсwriteback.include_unlabeled: true, чтобы у неразмеченных изображений были предварительные метки-рамки. - Запустите
sam-finetuneна той же схеме. Каждая предварительная метка-рамка становится предварительной меткой-многоугольником, и многоугольники заменяют рамки.
Схеме нужны контуры, на которых SAM может учиться, поэтому дайте разметчикам инструмент контура рядом с bbox. На отложенных изображениях подсказками служат собственные рамки разметчиков, поэтому val_mask_iou сообщает средний IoU контура, когда рамка верна. Эти предсказания на отложенных объектах оцениваются, но никогда не сохраняются и не публикуются, потому что они сделаны по ответу другого разметчика. Отчёт об обратной записи считает предсказания на отложенных объектах в n_skipped_heldout_only. Контрольная точка по умолчанию это facebook/sam-vit-base (Apache-2.0). Дообученный декодер служит только для предварительных меток. Сегментация по щелчку в инструменте изображений запускает отдельные веса ONNX в браузере, а запуск sam-finetune эти веса не заменяет.
Классификация целых изображений
Для вопроса о всём изображении, например схемы radio, спрашивающей, какое животное на фотографии, используйте классификатор, а не детектор. hf-image-classification дообучает любую модель, которую загружает AutoModelForImageClassification из Hugging Face, например ViT, DeiT, BEiT, ConvNeXt, Swin или DINOv2. Модель по умолчанию это google/vit-base-patch16-224-in21k. По умолчанию тренер случайно отражает обучающие изображения. Задайте в Parameters flip равным false, если отражение меняет метку, как с текстом на изображении или с левым и правым. lora: true обучает адаптер LoRA и классификационную голову вместо всех весов.
Схема выбора считается корпусом изображений, если не менее 80% размеченных объектов схемы несут путь к изображению, оканчивающийся на .jpg, .jpeg, .png, .bmp, .webp, .tif, .tiff или .gif. На таком корпусе sklearn-text без названного векторизатора обучает линейный классификатор на эмбеддингах изображений CLIP. Базовой модели CLIP GPU не нужен, достаточно pip install "potato-annotation[embeddings]" pillow.
Пути к изображениям и удалённые изображения
Тренеры изображений читают поле, которое называет source_field схемы. Без source_field тренер берёт первое непустое поле объекта из image_url, image, image_path, file_name, url, path и их аудио- и видеоаналогов. Изображения должны быть локальными файлами внутри проекта:
- Относительный путь разрешается относительно
task_dir, а если файл подtask_dirне найден, то относительноmedia_directory. - URL-путь вроде
/media/img_001.jpgразрешается относительноmedia_directory. Страница разметки загружает изображение из того же места. - Файл, который абсолютный путь,
../или символическая ссылка помещают вне каталога задачи иmedia_directory, исключается с предупреждением. - Удалённые изображения
http(s)никогда не скачиваются. Запуск исключает каждый объект, изображение которого удалённое или отсутствует, журнал запуска сообщает сколько, и эти объекты не получают предсказания.
Скачайте удалённые изображения в media_directory, чтобы обучаться на них. Страница форматов компьютерного зрения и potato import описывают, как привести в проект готовые наборы изображений.
Целые слайды и другие крупные изображения
Тренеры детекции и сегментации уменьшают каждое изображение до нескольких сотен пикселей, и объекты на патологическом слайде в 100 000 пикселей или на спутниковом снимке при таком размере исчезают. Поэтому для схемы image_annotation, microscopy или geo_annotation Potato режет крупные изображения на плитки при построении обучающих данных запуска. Разбиение на плитки автоматическое для форматов слайдов (.svs, .ndpi, .mrxs, .scn и других) и для изображений, у которых длинная сторона равна 4 096 пикселям или больше. Для слайдов нужен openslide:
pip install "potato-annotation[wsi]"Обучение использует плитки, в которых есть размеченный объект, и выборку пустых плиток, а каждый объект обрезается по своей плитке. Предсказание охватывает каждую плитку над тканью, до max_predict_tiles на изображение. Выборка каждого изображения определяется до того, как изображение разрезано, так что плитки одного слайда никогда не попадают в две выборки. Предсказания по плиткам сводятся обратно на целое изображение, а объект, найденный двумя перекрывающимися плитками, сохраняется один раз. Предварительные метки используют координаты целого изображения, те же координаты, которые хранит просмотрщик с глубоким зумом. Оценки на отложенных объектах считаются на целых изображениях. Удалённый бэкенд скачивает плитки, а не слайд.
Настройки находятся в model_training.tiling. Этот фрагмент обучает слайд 40x при 20x на плитках по 1 024 пикселя:
model_training:
enabled: true
tiling:
tile_size: 1024
overlap: 128
downsample: 2Держите overlap не меньше размера объектов, потому что более крупный объект находится по частям, по одной на плитку. Для слайда, который записывает собственное разрешение, mpp задаёт микроны на пиксель плитки и переопределяет downsample. На некоторых слайдах две настройки требуют внимания. Пустые обучающие плитки предполагают, что на размеченном изображении нарисован каждый объект, поэтому задайте background: 0, когда разметчики нарисовали лишь некоторые области слайда. Ткань определяется порогом Оцу по миниатюре слайда, поэтому слайд без чистого стекла теряет свою более бледную половину, а tissue_threshold: 0 предсказывает на каждой плитке. Таблица tiling перечисляет каждый ключ и значение по умолчанию.
Микроскопия и карты
ROI схемы microscopy обучают torchvision-detect, ultralytics-detect, torchvision-segment, ultralytics-segment и cellpose. Каждый срез по z и каждый момент времени с ROI отрисовывается с каналами и контрастом схемы по умолчанию и становится отдельным обучающим изображением. Отрисовывает тот же компоновщик, который использует просмотрщик. Изображение, на котором ещё ничего не нарисовано, предсказывается на среднем срезе по z и в первый момент времени, где открывается просмотрщик. Предсказания возвращаются как ROI микроскопии с z и t каждого ROI. Классификации клеток ссылаются на изображение меток, а не на фигуру, и тренеры пропускают классификации клеток.
Объекты схемы geo_annotation обучают те же тренеры детекции и сегментации на растровой основе карты объекта. GeoTIFF размещается по преобразованию и коду EPSG в собственных тегах файла и перепроецируется с помощью pyproj при проекции. Обычное изображение с протяжённостью размещается в долготе и широте. Многоугольники, прямоугольники, линии и точки становятся фигурами на растре, а отверстия многоугольников заполняются. Предсказания возвращаются как объекты GeoJSON в EPSG:4326 с source: model. Карта предлагает объекты как подсказки, и подсказки считаются ответом, только когда разметчик правит или принимает одну из них. Карта, основой которой служит тайловый сервер или контур GeoJSON, не имеет растра для обучения, и запуск исключает такие объекты с предупреждением.
Клетки с cellpose
cellpose дообучает Cellpose на контурах клеток или ядер в схеме image_annotation или microscopy. Установите Cellpose 3 или 4 отдельно:
pip install cellposeБазовая модель по умолчанию это cyto3. С Cellpose 3 работают также nuclei и cyto2, а с Cellpose 4 cpsam. Задайте diameter равным типичному диаметру клетки в пикселях, если собственная оценка Cellpose неточна. Cellpose сегментирует без классов, поэтому каждая предсказанная клетка получает параметр label, а если label не задан, самую частую метку схемы. Обучайте по одной модели на метку, если классы выглядят по-разному. Каждая предсказанная маска возвращается как многоугольник, а средняя вероятность клетки служит уверенностью предварительной метки. cellpose нужно всего 5 размеченных изображений в выборке train против 20 у детекторов. Код Cellpose распространяется под BSD-3-Clause, а веса приходят от авторов Cellpose на условиях авторов.
Спектрограммы
Рамки схемы spectrogram_annotation обучают torchvision-detect и ultralytics-detect на каждой записи, отрисованной как изображение спектрограммы. Учебник по аудиомоделям разбирает детекцию на спектрограммах от начала до конца, с настройками отрисовки и форматами записей, которые читают тренеры.
Разметка документов с layoutlmv3
layoutlmv3 дообучает LayoutLMv3, чтобы находить области, которые разметчики рисуют на изображениях страниц, по словам страницы и положению слов. Область это любой размеченный блок, например заголовок, таблица или итог. Potato не запускает OCR, поэтому каждый объект несёт слова страницы с рамками в пикселях изображения страницы или от 0 до 1:
{"id": "page_001", "image": "pages/page_001.png",
"words": [{"text": "INVOICE", "bbox": [40, 52, 180, 82]},
{"text": "Total", "bbox": [300, 700, 380, 730]}]}Импорт PAGE XML в режиме regions заполняет words из элементов Word файла. Слова из текстового слоя PDF или другого инструмента OCR работают так же. Каждое слово помечается областью, в которую попадает центр слова, предсказанные слова сливаются обратно в области, и каждая область становится предварительной меткой-рамкой вокруг слов области. Оценки на отложенных объектах это box mAP. Предсказанная рамка заканчивается на словах области, поэтому области, нарисованные намного больше слов, получают оценку ниже, чем заслуживают рамки.
Веса LayoutLMv3 распространяются под лицензией CC BY-NC-SA 4.0 и не предназначены для коммерческого использования. Как и с тренерами YOLO, страница Training просит подтверждение перед запуском, запуску через API нужен accept_licence: true, а автоматическому переобучению нужен auto_retrain.accept_licence: true.
Визуально-языковые модели с vlm-sft
vlm-sft дообучает визуально-языковую модель на ответах разметчиков об изображениях, по умолчанию с адаптером LoRA и моделью Qwen/Qwen2.5-VL-3B-Instruct. Тренер учится на четырёх схемах:
| Схема | Один обучающий пример на | Что модель учится выдавать |
|---|---|---|
text на объектах-изображениях | объект | Ответ разметчика на вопрос схемы |
region_caption | подписанную область | Подпись для области, нарисованной как красная рамка |
grounding_eval | отвеченное выражение | Область как JSON, точку или {"absent": true} |
gui_trajectory | шаг, оценённый как correct, со щелчком | Щелчок в виде {"point": [x, y]} |
Координаты заданы на сетке изображения от 0 до 1 000, так что любая контрольная точка может выучить формат по примерам. Запуск с текстовой схемой публикует сгенерированный ответ как текстовую предварительную метку. Запуск grounding публикует область или отсутствие для каждого выражения, а VLM grounding описывает схему grounding_eval. Запуск GUI trajectory предлагает вердикт для каждого шага по тому, куда щёлкнула бы модель, а Оценка агентов, управляющих компьютером описывает трассы GUI. Запуск подписей оценивается по token F1 и BLEU-4, но никогда не публикуется, потому что подписанные области это ответ разметчика.
Настоящим контрольным точкам нужен GPU. Команда Potato обучила две эпохи Qwen/Qwen3-VL-2B-Instruct с LoRA на 26 изображениях за 46 секунд на GPU Metal Mac. {"lora": {"quantize": "4bit"}} в Parameters обучает адаптер QLoRA поверх базовых весов в 4 битах. Проверьте лицензию выбранной модели. Qwen2.5-VL-3B несёт исследовательскую лицензию Qwen, а модель 7B распространяется под Apache-2.0. Учебник по дообучению LLM описывает LoRA, QLoRA и публикацию модели на Hugging Face Hub.
Дополнительные материалы
- Обзор обучения моделей о цикле и странице Training
- Тренеры со всеми тренерами по задачам
- Конфигурация со всеми ключами, оценками на отложенных объектах, обратной записью и маршрутами
- Разметка с моделью в цикле о проверке, отборе и автоматическом переобучении
- Удалённое обучение об ssh GPU-серверах, SLURM и агенте опроса
- Разметка изображений об инструментах и параметрах схемы
- Каталог моделей и лицензии о моделях для изображений, которые работают в браузере и на сервере
- Справочник upstream по объектам-изображениям, целым слайдам,
torchvision-detect,sam-finetuneиvlm-sftсо всеми таблицами параметров
Источники
- Ren, S., He, K., Girshick, R., and Sun, J. (2017). Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 39, 1137–1149. doi:10.1109/TPAMI.2016.2577031
- He, K., Gkioxari, G., Dollár, P., and Girshick, R. (2017). Mask R-CNN. 2017 IEEE International Conference on Computer Vision (ICCV), 2980–2988. doi:10.1109/ICCV.2017.322
- Kirillov, A., Mintun, E., Ravi, N., Mao, H., Rolland, C., Gustafson, L., Xiao, T., Whitehead, S., Berg, A. C., Lo, W.-Y., Dollár, P., and Girshick, R. (2023). Segment Anything. 2023 IEEE/CVF International Conference on Computer Vision (ICCV), 3992–4003. doi:10.1109/ICCV51070.2023.00371
- Stringer, C., Wang, T., Michaelos, M., and Pachitariu, M. (2021). Cellpose: a generalist algorithm for cellular segmentation. Nature Methods, 18, 100–106. doi:10.1038/s41592-020-01018-x
- Huang, Y., Lv, T., Cui, L., Lu, Y., and Wei, F. (2022). LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking. Proceedings of the 30th ACM International Conference on Multimedia, 4083–4091. doi:10.1145/3503161.3548112