Mi implementación de etiqueta-suave, amsoftmax, parcial-fc, focal-loss, dual-focal-loss, tripllet-lass, giou/diou/ciou-loss/func, afinity-elss, pc_softmax_cross_entropy, ohem-lass (softmax basado en la pérdida de minería de línea de línea grande), gran-marinco-softmax (bmvc2019) y pérdida de dados (pérdida de dados blandos generalizados y pérdida de dados blandos por lotes). Tal vez esto sea útil en mi trabajo futuro.
También trató de implementar funciones de activación Swish, duras (HSWISH) y Mish.
Además, se agrega la función One-Hot basada en CUDA (Support Label Smooth).
Recién agregue un operador "Promedio móvil exponencial (EMA)".
Agregue OPS de convolución, como Coord-Conv2D y Dynamic-ConV2D (DY-CONV2D).
Algunos operadores se implementan con Pytorch Cuda Extension, por lo que debe compilarlo primero:
$ python -m pip install .
Después de instalar, ahora puede recoger lo que necesita y usar las pérdidas u OPS como una de las Tes:
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 Tenga en cuenta que algunas pérdidas u OPS tienen 3 versiones, como LabelSmoothSoftmaxCEV1 , LabelSmoothSoftmaxCEV2 , LabelSmoothSoftmaxCEV3 , V2 V1 significa la implementación con OPS de Pytorch puro y use V3 torch.autograd . extensión. En términos generales, los OP V3 son más rápidos y más eficientes en la memoria, ya que he tratado de exprimir todo en una función de núcleo Cuda, que en la mayoría de los casos trae menos sobrecarga que una combinación de OP de Pytorch.
Para aquellos que encuentran este repositorio, si ve errores en mi código, no dude en abrir un problema para corregirme.