diff --git a/ppcls/configs/ImageNet/DarkNet/DarkNet53.yaml b/ppcls/configs/ImageNet/DarkNet/DarkNet53.yaml index 1a55e75d4661b1759dc46ac2203ad5f1e2ceb2fb..b69ccfcfdbb8045985977bc374b02b422e3e5c23 100644 --- a/ppcls/configs/ImageNet/DarkNet/DarkNet53.yaml +++ b/ppcls/configs/ImageNet/DarkNet/DarkNet53.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/DataAugment/ResNet50_Cutmix.yaml b/ppcls/configs/ImageNet/DataAugment/ResNet50_Cutmix.yaml index 6ab79d35c43e49e66d17372597875ed140ef4189..918a7629440f879f012d0fb7240fb3dd2a379b2f 100644 --- a/ppcls/configs/ImageNet/DataAugment/ResNet50_Cutmix.yaml +++ b/ppcls/configs/ImageNet/DataAugment/ResNet50_Cutmix.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 Eval: - CELoss: diff --git a/ppcls/configs/ImageNet/DataAugment/ResNet50_Mixup.yaml b/ppcls/configs/ImageNet/DataAugment/ResNet50_Mixup.yaml index 448440ecfff0a5249bfe1a61ce8b5d06cd881e12..b12567150d8f788fd8abeaf4d6adb75e0b10d12f 100644 --- a/ppcls/configs/ImageNet/DataAugment/ResNet50_Mixup.yaml +++ b/ppcls/configs/ImageNet/DataAugment/ResNet50_Mixup.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 Eval: - CELoss: diff --git a/ppcls/configs/ImageNet/Inception/InceptionV3.yaml b/ppcls/configs/ImageNet/Inception/InceptionV3.yaml index a8c30ea1a497c9897299ca9526e17c22fe555977..fa8b64a5aaaeb0914e8ecbed80176a4e40014883 100644 --- a/ppcls/configs/ImageNet/Inception/InceptionV3.yaml +++ b/ppcls/configs/ImageNet/Inception/InceptionV3.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Inception/InceptionV4.yaml b/ppcls/configs/ImageNet/Inception/InceptionV4.yaml index 17415b3cefb1a7b7e56db5545e754ffb7fd3d0ff..6a6dbb62d79a658bf564f7c55c86a2b9d963f645 100644 --- a/ppcls/configs/ImageNet/Inception/InceptionV4.yaml +++ b/ppcls/configs/ImageNet/Inception/InceptionV4.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Res2Net/Res2Net101_vd_26w_4s.yaml b/ppcls/configs/ImageNet/Res2Net/Res2Net101_vd_26w_4s.yaml index bf27b303d72654e3ff835280d192370c6e9e6b8d..7e5cbfd3cae04673e28dfadef404b2c1650064b4 100644 --- a/ppcls/configs/ImageNet/Res2Net/Res2Net101_vd_26w_4s.yaml +++ b/ppcls/configs/ImageNet/Res2Net/Res2Net101_vd_26w_4s.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Res2Net/Res2Net200_vd_26w_4s.yaml b/ppcls/configs/ImageNet/Res2Net/Res2Net200_vd_26w_4s.yaml index 90b7b879c8f92eeb3c80537a5f583b8323fd5082..edceda10f7c69a4b74f7b2a5b5dd697e095d708f 100644 --- a/ppcls/configs/ImageNet/Res2Net/Res2Net200_vd_26w_4s.yaml +++ b/ppcls/configs/ImageNet/Res2Net/Res2Net200_vd_26w_4s.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml b/ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml index af1c4c73e6ff6449de94a61e88a2286a6f04db55..1f3ecde91ad0853c9a25a4c858dcf37203d29a15 100644 --- a/ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml +++ b/ppcls/configs/ImageNet/Res2Net/Res2Net50_14w_8s.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Res2Net/Res2Net50_26w_4s.yaml b/ppcls/configs/ImageNet/Res2Net/Res2Net50_26w_4s.yaml index e792e9d03b8be13223ad684dac50f101ce99603a..31ad95e65443a824099ee1fcaff6ff0e2a44cc78 100644 --- a/ppcls/configs/ImageNet/Res2Net/Res2Net50_26w_4s.yaml +++ b/ppcls/configs/ImageNet/Res2Net/Res2Net50_26w_4s.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Res2Net/Res2Net50_vd_26w_4s.yaml b/ppcls/configs/ImageNet/Res2Net/Res2Net50_vd_26w_4s.yaml index 58d4968b43f7571fc633f6e29748136fec94c9ad..1157ac0c877fa070292ee95afcf066acb4839361 100644 --- a/ppcls/configs/ImageNet/Res2Net/Res2Net50_vd_26w_4s.yaml +++ b/ppcls/configs/ImageNet/Res2Net/Res2Net50_vd_26w_4s.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_32x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_32x4d.yaml index c400b9e288af6bb5bf2c9d2eff23895b6efb62b6..4ac6ab70b34cae4368fca339f4f4f518e55007f7 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_32x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_64x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_64x4d.yaml index 4f5f3c79353aca99ac800e79f2112839cb92d11a..1754e63a43f380e0764fc64875043310630c66f5 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_64x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt101_vd_64x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_32x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_32x4d.yaml index d3054143d0ab858b83d377d8b30bd022e6848c0b..5cfb972f8314af192f4daf6c875818772881cd29 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_32x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_64x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_64x4d.yaml index c8b76d0f6846e0d425cee2c92ed2aa529c87598d..a95907312c5fe89ab76661aad7882702b1622d38 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_64x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt152_vd_64x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_32x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_32x4d.yaml index 3a03646f564ea00b53ce5e21ad166ac37eb3f2f4..466dfb361a4e6010add90dcb9a8fa1f9a7b8e12f 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_32x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_64x4d.yaml b/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_64x4d.yaml index c9b9a1015eb701d3846466cb7be1c7b134dfbad0..d2a2f86ee25d889f4def86927922c8855a71a8cb 100644 --- a/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_64x4d.yaml +++ b/ppcls/configs/ImageNet/ResNeXt/ResNeXt50_vd_64x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet101_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet101_vd.yaml index f30ca07774bba5e457f77f6213be990045ce6b86..83d1fc028fee679327f2b835e3401cb94371225c 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet101_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet101_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet152_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet152_vd.yaml index f3168c432a0154fbf25c7548499984433bc2abc5..e09bb60c940e732232c5cc6c048ff8bc8722fb22 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet152_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet152_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet18_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet18_vd.yaml index 2dc6bba0c772e0fe8d73d2aad25aa61cc6c3c0da..e0ba71a6e80de43926f8bf5f152af06332bb7395 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet18_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet18_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet200_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet200_vd.yaml index a52c83748cb4dddbb0c2e93899c067fe3a3e40b3..98de87e3274ae2bc1cfe419f6cf01ff232ac4936 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet200_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet200_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet34_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet34_vd.yaml index daae960b596a7f76b599f96c327dbd698180b766..9ff0717113a3274e110f3ce4d2a0f773eb8562a7 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet34_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet34_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml b/ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml index 0a2c4aa4e740809c69a6af44b6b6656f66ebc01b..ba38350bfddc54f938515d402d7cd2ad94834e7a 100644 --- a/ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml +++ b/ppcls/configs/ImageNet/ResNet/ResNet50_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SENet154_vd.yaml b/ppcls/configs/ImageNet/SENet/SENet154_vd.yaml index f7f1ba0f99060c443379d386f395656009fb81a8..f8255a977d448d0644023beabca94f5d7e489e9a 100644 --- a/ppcls/configs/ImageNet/SENet/SENet154_vd.yaml +++ b/ppcls/configs/ImageNet/SENet/SENet154_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNeXt101_32x4d.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNeXt101_32x4d.yaml index 3b09c3fd365537e78abe1e6a2e1db7c7d5bf3daa..bf27461845b37ef1c0a934f8e8da08a955bb6705 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNeXt101_32x4d.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNeXt101_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_32x4d.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_32x4d.yaml index d04f298a3aa42adbaeabde2ff0afde653fd9d9bb..2c1286927ab503aba6994794f5fb3e68f36f7a78 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_32x4d.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_vd_32x4d.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_vd_32x4d.yaml index cabff29b423eed9a4861b41f35e0b75ed9c239b3..48e6e4206c2f626ba38ff0ff4bde5507453d9379 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_vd_32x4d.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNeXt50_vd_32x4d.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNet18_vd.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNet18_vd.yaml index fcaada9342a364a7c35efdf915fdc18a799ddd95..20b3a0c40805e7706aa600f907f169e073b9496f 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNet18_vd.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNet18_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNet34_vd.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNet34_vd.yaml index 69d15ccaf79d804f200241208aaf39d551f2c14a..7280e32441f781e8ed1d08cd6e136b97a3122dc1 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNet34_vd.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNet34_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/SENet/SE_ResNet50_vd.yaml b/ppcls/configs/ImageNet/SENet/SE_ResNet50_vd.yaml index f670c159e4f41ebbb8e2eb70486785662de06840..030dff93b963322aba5f47b1ce2bddd1cd35b8e2 100644 --- a/ppcls/configs/ImageNet/SENet/SE_ResNet50_vd.yaml +++ b/ppcls/configs/ImageNet/SENet/SE_ResNet50_vd.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Xception/Xception65.yaml b/ppcls/configs/ImageNet/Xception/Xception65.yaml index 1b84067749c3d3fd0c58e7a5e111bb41d9fc21ae..2ff30d9d617a928a12f28f1a1cf1216448536acf 100644 --- a/ppcls/configs/ImageNet/Xception/Xception65.yaml +++ b/ppcls/configs/ImageNet/Xception/Xception65.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/configs/ImageNet/Xception/Xception71.yaml b/ppcls/configs/ImageNet/Xception/Xception71.yaml index 7475a5f9588c2b48b2949d12771f844fbdcb181e..bda7ecfe9a2b6f3bedc0e8296b9eca4819235b84 100644 --- a/ppcls/configs/ImageNet/Xception/Xception71.yaml +++ b/ppcls/configs/ImageNet/Xception/Xception71.yaml @@ -22,7 +22,7 @@ Arch: # loss function config for traing/eval process Loss: Train: - - CELoss: + - MixCELoss: weight: 1.0 epsilon: 0.1 Eval: diff --git a/ppcls/engine/trainer.py b/ppcls/engine/trainer.py index 37a5340809ed9e161e232bcf330a7b068af4ce33..569d3b41fa065ac18447f560fb54ff8fc567fec8 100644 --- a/ppcls/engine/trainer.py +++ b/ppcls/engine/trainer.py @@ -173,9 +173,12 @@ class Trainer(object): out = self.model(batch[0]) else: out = self.model(batch[0], batch[1]) - # calc loss - loss_dict = self.train_loss_func(out, batch[1]) + if self.config["DataLoader"]["Train"]["dataset"].get( + "batch_transform_ops", None): + loss_dict = self.train_loss_func(out, batch[1:]) + else: + loss_dict = self.train_loss_func(out, batch[1]) for key in loss_dict: if not key in output_info: diff --git a/ppcls/loss/__init__.py b/ppcls/loss/__init__.py index cee4b05ab55c1fdd23fe57590d8d9eda75619750..5421f421242d72bd27edcef869b23844c51703c6 100644 --- a/ppcls/loss/__init__.py +++ b/ppcls/loss/__init__.py @@ -4,7 +4,7 @@ import paddle import paddle.nn as nn from ppcls.utils import logger -from .celoss import CELoss +from .celoss import CELoss, MixCELoss from .googlenetloss import GoogLeNetLoss from .centerloss import CenterLoss from .emlloss import EmlLoss @@ -30,7 +30,6 @@ class CombinedLoss(nn.Layer): assert isinstance(config_list, list), ( 'operator config should be a list') for config in config_list: - print(config) assert isinstance(config, dict) and len(config) == 1, "yaml format error" name = list(config)[0] diff --git a/ppcls/loss/celoss.py b/ppcls/loss/celoss.py index 54c3703009beef11b4a8686620003f6bb948cd58..7bc3c06cb417083dd058f7e3b545249854653557 100644 --- a/ppcls/loss/celoss.py +++ b/ppcls/loss/celoss.py @@ -18,6 +18,10 @@ import paddle.nn.functional as F class CELoss(nn.Layer): + """ + Cross entropy loss + """ + def __init__(self, epsilon=None): super().__init__() if epsilon is not None and (epsilon <= 0 or epsilon >= 1): @@ -50,3 +54,21 @@ class CELoss(nn.Layer): loss = F.cross_entropy(x, label=label, soft_label=soft_label) loss = loss.mean() return {"CELoss": loss} + + +class MixCELoss(CELoss): + """ + Cross entropy loss with mix(mixup, cutmix, fixmix) + """ + + def __init__(self, epsilon=None): + super().__init__() + self.epsilon = epsilon + + def __call__(self, input, batch): + target0, target1, lam = batch + loss0 = super().forward(input, target0)["CELoss"] + loss1 = super().forward(input, target1)["CELoss"] + loss = lam * loss0 + (1.0 - lam) * loss1 + loss = paddle.mean(loss) + return {"MixCELoss": loss}