Входные данные модели поезда PyTorch RetinaNet

У меня есть model = torchvision.models.detection.retinanet_resnet50_fpn_v2(progress=True), и я хочу обучить его на пользовательских данных. Чтобы получить проигрыш, я должен выполнить

classification_loss, regression_loss = model(images, targets)

Я создал пакетный тензор для images, но, черт возьми, не могу найти, как я должен форматировать targets для обнаружения объектов... Каждая цель имеет ограничивающую рамку и метку класса.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

проверьте этот официальный учебник: https://pytorch.org/tutorials/intermediate/torchvision_tutorial.html

В общем, targets является list из dict, например,

targets = [
    {
        "boxes": torch.as_tensor([[xmin, ymin, xmax, ymax]], dtype=torch.float32),
        "labels": torch.as_tensor([1,], dtype=torch.int64)
    }
]

Что, если я хочу закодировать метки сразу? Или я передаю целое число (например, индекс в списке меток), а затем PyTorch преобразует его в горячее кодирование под капотом?

Harry Stuart 18.10.2022 11:43

@HarryStuart Вам не нужно использовать однократное кодирование самостоятельно. labels должен быть списком целых чисел, а все остальное за вас сделает torchvision. Вы можете проверить исходный код того, как torchvision вычисляет потерю классификации: github.com/pytorch/vision/blob/main/torchvision/models/…

nnzzll 18.10.2022 12:00

Спасибо, я принял ваш ответ. Вы случайно не знаете, как ввести изображение без целей? В моем наборе данных мало объектов, поэтому будет много изображений без целей.

Harry Stuart 18.10.2022 13:04

@HarryStuart Посмотрите на этот PR: github.com/pytorch/vision/pull/1911, там сказано, как отформатировать цель для отрицательного образца

nnzzll 18.10.2022 13:38

Другие вопросы по теме