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 Perdition de dés (la perte de dés doux généralisée et la perte de dés doux par lots). Peut-être que cela est utile dans mon travail futur.
J'ai également essayé de mettre en œuvre des fonctions d'activation Swish, dure-swish (Hswish) et de Mish.
De plus, une fonction One-Hot basée sur CUDA est ajoutée (étiquette de support lisse).
Ajoutez un nouvel opérateur "Exponentiel Moy Awird (EMA)".
Ajoutez des OP de convolution, tels que Coord-Conv2D et Dynamic-Conv2D (DY-CONV2D).
Certains opérateurs sont mis en œuvre avec une extension Pytorch CUDA, vous devez donc le compiler d'abord:
$ python -m pip install .
Après l'installation, vous pouvez désormais ramasser ce dont vous avez besoin et utiliser les pertes ou les opérations comme l'une des personnes:
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 Notez que certaines pertes ou opérations ont 3 versions, comme LabelSmoothSoftmaxCEV1 , LabelSmoothSoftmaxCEV2 , LabelSmoothSoftmaxCEV3 , ici V1 signifie l'implémentation avec Pure Pytorch OPS et utilise torch.autograd pour un calcul en arrière, V2 signifie une mise en œuvre de Pytorch Pytorch mais une mise en œuvre de pytorch avec un formulaire de pytorch pur mais un formule autonome pour une mise en œuvre de Pytorch Purch mais une mise en œuvre de pytorch pure avec une mise en œuvre de pytorch pure avec une mise en œuvre pytorch mais un formulaire autonome pour une mise en œuvre Backward et un Pytorch Ops mais un Contorch V3 mais un formule autonome pour une mise en œuvre Backwarde extension. D'une manière générale, les V3 OPS sont plus rapides et plus efficaces par la mémoire, car j'ai essayé de tout serrer dans une fonction du noyau Cuda, ce qui, dans la plupart des cas, apporte moins de frais généraux qu'une combinaison de Pytorch OPS.
Pour ceux qui trouvent ce dépôt, si vous voyez des erreurs dans mon code, n'hésitez pas à ouvrir un problème pour me corriger.