My implementation of label-smooth, amsoftmax, partial-fc, focal-loss, dual-focal-loss, triplet-loss, giou/diou/ciou-loss/func, affinity-loss, pc_softmax_cross_entropy, ohem-loss(softmax based on line hard mining loss), large-margin-softmax(bmvc2019), lovasz-softmax-loss, and Würfel-Verlust (sowohl verallgemeinerte weiche Würfelverlust als auch Batch-Weichwürfel). Vielleicht ist das in meiner zukünftigen Arbeit nützlich.
Außerdem versuchte es, Swish-, Hard-Swish (HSWISH )- und Mish-Aktivierungsfunktionen zu implementieren.
Zusätzlich wird die CUDA-basierte One-HOT-Funktion hinzugefügt (Support Label Smooth).
Fügen Sie neu einen "exponentiellen gleitenden Durchschnitt (EMA)" hinzu.
Fügen Sie Faltungs-Ops wie Coord-Conv2d und Dynamic-Conv2d (DY-CONV2D) hinzu.
Einige Betreiber werden mit Pytorch CUDA -Erweiterung implementiert, sodass Sie es zuerst kompilieren müssen:
$ python -m pip install .
Nach der Installation können Sie jetzt das aufnehmen, was Sie benötigen, und die Verluste oder OPs wie eines von THES verwenden:
from pytorch_loss import SwishV1 , SwishV2 , SwishV3
from pytorch_loss import HSwishV1 , HSwishV2 , HSwishV3
from pytorch_loss import MishV1 , MishV2 , MishV3
from pytorch_loss import convert_to_one_hot , convert_to_one_hot_cu , OnehotEncoder
from pytorch_loss import EMA
from pytorch_loss import TripletLoss
from pytorch_loss import SoftDiceLossV1 , SoftDiceLossV2 , SoftDiceLossV3
from pytorch_loss import PCSoftmaxCrossEntropyV1 , PCSoftmaxCrossEntropyV2
from pytorch_loss import LargeMarginSoftmaxV1 , LargeMarginSoftmaxV2 , LargeMarginSoftmaxV3
from pytorch_loss import LabelSmoothSoftmaxCEV1 , LabelSmoothSoftmaxCEV2 , LabelSmoothSoftmaxCEV3
from pytorch_loss import GIOULoss , DIOULoss , CIOULoss
from pytorch_loss import iou_func , giou_func , diou_func , ciou_func
from pytorch_loss import FocalLossV1 , FocalLossV2 , FocalLossV3
from pytorch_loss import Dual_Focal_loss
from pytorch_loss import GeneralizedSoftDiceLoss , BatchSoftDiceLoss
from pytorch_loss import AMSoftmax
from pytorch_loss import AffinityFieldLoss , AffinityLoss
from pytorch_loss import OhemCELoss , OhemLargeMarginLoss
from pytorch_loss import LovaszSoftmaxV1 , LovaszSoftmaxV3
from pytorch_loss import TaylorCrossEntropyLossV1 , TaylorCrossEntropyLossV3
from pytorch_loss import InfoNceDist
from pytorch_loss import PartialFCAMSoftmax
from pytorch_loss import TaylorSoftmaxV1 , TaylorSoftmaxV3
from pytorch_loss import LogTaylorSoftmaxV1 , LogTaylorSoftmaxV3
from pytorch_loss import CoordConv2d , DY_Conv2d Beachten Sie, dass einige Verluste oder OPs 3 Versionen haben, wie LabelSmoothSoftmaxCEV1 , LabelSmoothSoftmaxCEV2 , LabelSmoothSoftmaxCEV3 , hier bedeutet V1 die Implementierung mit reinem Pytorch V2 OPS und verwenden Sie torch.autograd -OPS-OPS- V3 . Verlängerung. Im Allgemeinen sind die V3 -OPs schneller und speichereffizienter, da ich versucht habe, alles in einer Cuda -Kernel -Funktion zu quetschen, was in den meisten Fällen weniger Overhead als eine Kombination von Pytorch -OPs bringt.
Für diejenigen, die dieses Repo finden, können Sie, wenn Sie Fehler in meinem Code sehen, ein Problem öffnen, um mich zu beheben.