У меня есть набор данных, который содержит изображения и XML-файлы со связанными метками и ограничивающими рамками. Некоторые изображения содержат более одной метки.
Я разработал загрузчик данных для извлечения аннотаций из XML-файлов. Исходя из загрузчика данных, вывод выглядит так для 1 пакета аннотаций:
{'boxes': tensor([[[444., 220., 27., 65.],
[468., 220., 26., 66.],
[415., 224., 20., 33.]]]),
'id': tensor([[1., 1., 4.]])}
Насколько я понимаю, мне нужно использовать BCEWithLogitsLoss для подхода с несколькими метками.
Проблема, с которой я сталкиваюсь, заключается в том, как рассчитать потери при наличии более одного ярлыка. Когда это одна метка, я использую следующий подход с оптимизатором CrossEntropy:
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
Будет ли этот подход правильным для мульти-лейблов?