From 9c99e7cc6b75c886c1c0c10c726248495321e006 Mon Sep 17 00:00:00 2001 From: weishengyu Date: Thu, 7 Apr 2022 16:59:09 +0800 Subject: [PATCH] add bnneck, last stride=1 --- ppcls/arch/gears/__init__.py | 3 ++- ppcls/arch/gears/bnneck.py | 14 ++++++++++++++ .../Pedestrian/strong_baseline_baseline.yaml | 13 ++++++------- ppcls/configs/Pedestrian/strong_baseline_m1.yaml | 12 +++++++++--- 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 ppcls/arch/gears/bnneck.py diff --git a/ppcls/arch/gears/__init__.py b/ppcls/arch/gears/__init__.py index 7c96e881..317ad630 100644 --- a/ppcls/arch/gears/__init__.py +++ b/ppcls/arch/gears/__init__.py @@ -18,13 +18,14 @@ from .circlemargin import CircleMargin from .fc import FC from .vehicle_neck import VehicleNeck from paddle.nn import Tanh +from .bnneck import BNNeck __all__ = ['build_gear'] def build_gear(config): support_dict = [ - 'ArcMargin', 'CosMargin', 'CircleMargin', 'FC', 'VehicleNeck', 'Tanh' + 'ArcMargin', 'CosMargin', 'CircleMargin', 'FC', 'VehicleNeck', 'Tanh', "BNNeck" ] module_name = config.pop('name') assert module_name in support_dict, Exception( diff --git a/ppcls/arch/gears/bnneck.py b/ppcls/arch/gears/bnneck.py new file mode 100644 index 00000000..8e97409e --- /dev/null +++ b/ppcls/arch/gears/bnneck.py @@ -0,0 +1,14 @@ +class BNNeck(nn.Layer): + def __init__(self, num_filters, trainable=False): + super(BNNeck, self).__init__() + self.num_filters = num_filters + + self.bn = paddle.nn.BatchNorm( + self.num_filters) + if not trainable: + self.bn.weight.trainable = False + self.bn.bias.trainable = False + + def forward(self, input, label=None): + out = self.bn(input) + return out diff --git a/ppcls/configs/Pedestrian/strong_baseline_baseline.yaml b/ppcls/configs/Pedestrian/strong_baseline_baseline.yaml index 8a7529b9..8e2d7baa 100644 --- a/ppcls/configs/Pedestrian/strong_baseline_baseline.yaml +++ b/ppcls/configs/Pedestrian/strong_baseline_baseline.yaml @@ -36,6 +36,7 @@ Loss: Train: - CELoss: weight: 1.0 + epsilon: 0.1 - TripletLossV2: weight: 1.0 margin: 0.3 @@ -48,8 +49,10 @@ Optimizer: name: Adam lr: name: Piecewise - decay_epochs: [40, 70] + decay_epochs: [30, 60] values: [0.00035, 0.000035, 0.0000035] + warmup_epoch: 10 + warmup_start_lr: 0.0000035 regularizer: name: 'L2' coeff: 0.0005 @@ -73,17 +76,13 @@ DataLoader: padding: 10 - RandCropImage: size: [128, 256] + scale: [0.8022, 0.8022] + ratio: [0.5, 0.5] - NormalizeImage: scale: 0.00392157 mean: [0.485, 0.456, 0.406] std: [0.229, 0.224, 0.225] order: '' - - RandomErasing: - EPSILON: 0.5 - sl: 0.02 - sh: 0.4 - r1: 0.3 - mean: [0.4914, 0.4822, 0.4465] sampler: name: DistributedRandomIdentitySampler batch_size: 64 diff --git a/ppcls/configs/Pedestrian/strong_baseline_m1.yaml b/ppcls/configs/Pedestrian/strong_baseline_m1.yaml index 51a464e4..57063c82 100644 --- a/ppcls/configs/Pedestrian/strong_baseline_m1.yaml +++ b/ppcls/configs/Pedestrian/strong_baseline_m1.yaml @@ -21,11 +21,15 @@ Arch: infer_output_key: "features" infer_add_softmax: False Backbone: - name: "ResNet50" + name: "ResNet50_last_stage_stride1" pretrained: True stem_act: null BackboneStopLayer: name: "flatten" + Neck: + name: BNNeck + num_filters: 2048 + trainale: false Head: name: "FC" embedding_size: 2048 @@ -76,6 +80,8 @@ DataLoader: padding: 10 - RandCropImage: size: [128, 256] + scale: [ 0.8022, 0.8022 ] + ratio: [ 0.5, 0.5 ] - NormalizeImage: scale: 0.00392157 mean: [0.485, 0.456, 0.406] @@ -88,9 +94,9 @@ DataLoader: r1: 0.3 mean: [0.4914, 0.4822, 0.4465] sampler: - name: PKSampler + name: DistributedRandomIdentitySampler batch_size: 64 - sample_per_id: 4 + num_instances: 4 drop_last: True shuffle: True loader: -- GitLab