💡💡💡Улучшение этой статьи: SlideLoss,Решите проблему дисбаланса между простыми и сложными образцами.,и использовать информацию об эффективных рецептивных полях для проектированияAnchor
。
Персональный тест SlideLoss| позволяет получить больше очков в нескольких наборах данных, а улучшенная производительность для небольших целей и препятствий также может помочь увеличить количество очков.
бумага:https://arxiv.org/pdf/2208.02019.pdf
Рисунок 4: Мы предлагаем новую потерю, называемую «скользящей потерей», которая адаптивно изучает пороговый параметр положительной выборки и пороговый параметр отрицательной выборки µ. Установка более высоких весов рядом с µ увеличивает относительную потерю примеров, которые трудно классифицировать, тем самым сосредотачивая больше внимания на ошибочных примерах, которые трудно классифицировать.
Основная цель функции Slide loss — заставить модель уделять больше внимания сложным образцам. Согласно результатам пятой строки таблицы, функция Slide улучшена в основном на средних и сложных задачах.
Присоединяйтесь к Slideloss
Основной код:
import math
class SlideLoss(nn.Module):
def __init__(self, loss_fcn):
super(SlideLoss, self).__init__()
self.loss_fcn = loss_fcn
self.reduction = loss_fcn.reduction
self.loss_fcn.reduction = 'none' # required to apply SL to each element
def forward(self, pred, true, auto_iou=0.5):
loss = self.loss_fcn(pred, true)
if auto_iou < 0.2:
auto_iou = 0.2
b1 = true <= auto_iou - 0.1
a1 = 1.0
b2 = (true > (auto_iou - 0.1)) & (true < auto_iou)
a2 = math.exp(1.0 - auto_iou)
b3 = true >= auto_iou
a3 = torch.exp(-(true - 1.0))
modulating_weight = a1 * b1 + a2 * b2 + a3 * b3
loss *= modulating_weight
if self.reduction == 'mean':
return loss.mean()
elif self.reduction == 'sum':
return loss.sum()
else: # 'none'
return loss
ЯсуществоватьучаствоватьНа третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 года будет проводиться конкурс сочинений. Соберите команду, чтобы выиграть приз!