From dd5e2ca1663ed355953da9ea906f5131387d286a Mon Sep 17 00:00:00 2001 From: KaiyangZhou Date: Fri, 24 May 2019 16:30:24 +0100 Subject: [PATCH] 0.7.7 --- AWESOME_REID.html | 4 +- MODEL_ZOO.html | 4 +- _modules/index.html | 6 +- _modules/torchreid/data/datamanager.html | 4 +- .../torchreid/data/datasets/__init__.html | 4 +- _modules/torchreid/data/datasets/dataset.html | 4 +- .../torchreid/data/datasets/image/cuhk01.html | 4 +- .../torchreid/data/datasets/image/cuhk03.html | 4 +- .../data/datasets/image/dukemtmcreid.html | 4 +- .../torchreid/data/datasets/image/grid.html | 4 +- .../torchreid/data/datasets/image/ilids.html | 4 +- .../data/datasets/image/market1501.html | 4 +- .../torchreid/data/datasets/image/msmt17.html | 4 +- .../torchreid/data/datasets/image/prid.html | 4 +- .../data/datasets/image/sensereid.html | 4 +- .../torchreid/data/datasets/image/viper.html | 4 +- .../data/datasets/video/dukemtmcvidreid.html | 4 +- .../data/datasets/video/ilidsvid.html | 4 +- .../torchreid/data/datasets/video/mars.html | 4 +- .../data/datasets/video/prid2011.html | 4 +- _modules/torchreid/data/sampler.html | 4 +- _modules/torchreid/data/transforms.html | 4 +- _modules/torchreid/engine/engine.html | 17 +- _modules/torchreid/engine/image/softmax.html | 41 +- _modules/torchreid/engine/image/triplet.html | 45 +- _modules/torchreid/engine/video/softmax.html | 4 +- _modules/torchreid/engine/video/triplet.html | 4 +- .../torchreid/losses/cross_entropy_loss.html | 4 +- .../losses/hard_mine_triplet_loss.html | 4 +- _modules/torchreid/metrics/accuracy.html | 4 +- _modules/torchreid/metrics/distance.html | 4 +- _modules/torchreid/metrics/rank.html | 4 +- _modules/torchreid/models/__init__.html | 14 +- _modules/torchreid/models/densenet.html | 9 +- _modules/torchreid/models/hacnn.html | 4 +- .../torchreid/models/inceptionresnetv2.html | 4 +- _modules/torchreid/models/inceptionv4.html | 4 +- _modules/torchreid/models/mlfn.html | 4 +- _modules/torchreid/models/mobilenetv2.html | 4 +- _modules/torchreid/models/mudeep.html | 4 +- _modules/torchreid/models/nasnet.html | 4 +- _modules/torchreid/models/pcb.html | 4 +- _modules/torchreid/models/resnet.html | 200 +++++--- _modules/torchreid/models/resnetmid.html | 4 +- _modules/torchreid/models/resnext.html | 447 ------------------ _modules/torchreid/models/senet.html | 4 +- _modules/torchreid/models/shufflenet.html | 4 +- _modules/torchreid/models/shufflenetv2.html | 419 ++++++++++++++++ _modules/torchreid/models/squeezenet.html | 9 +- _modules/torchreid/models/xception.html | 4 +- _modules/torchreid/optim/lr_scheduler.html | 4 +- _modules/torchreid/optim/optimizer.html | 4 +- _modules/torchreid/utils/avgmeter.html | 4 +- _modules/torchreid/utils/loggers.html | 4 +- .../torchreid/utils/model_complexity.html | 4 +- _modules/torchreid/utils/reidtools.html | 4 +- _modules/torchreid/utils/tools.html | 18 +- _modules/torchreid/utils/torchtools.html | 4 +- _sources/pkg/models.rst.txt | 2 +- _static/documentation_options.js | 2 +- datasets.html | 4 +- evaluation.html | 4 +- genindex.html | 14 +- index.html | 4 +- objects.inv | Bin 1847 -> 1864 bytes pkg/data.html | 4 +- pkg/engine.html | 62 +-- pkg/losses.html | 4 +- pkg/metrics.html | 4 +- pkg/models.html | 49 +- pkg/optim.html | 4 +- pkg/utils.html | 11 +- py-modindex.html | 4 +- search.html | 4 +- searchindex.js | 2 +- user_guide.html | 4 +- 76 files changed, 835 insertions(+), 760 deletions(-) delete mode 100644 _modules/torchreid/models/resnext.html create mode 100644 _modules/torchreid/models/shufflenetv2.html diff --git a/AWESOME_REID.html b/AWESOME_REID.html index ae0cd3e..201ccc2 100644 --- a/AWESOME_REID.html +++ b/AWESOME_REID.html @@ -8,7 +8,7 @@ - Awesome-ReID — torchreid 0.7.6 documentation + Awesome-ReID — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
- 0.7.6 + 0.7.7
diff --git a/MODEL_ZOO.html b/MODEL_ZOO.html index 7a30cd0..c133068 100644 --- a/MODEL_ZOO.html +++ b/MODEL_ZOO.html @@ -8,7 +8,7 @@ - Model Zoo — torchreid 0.7.6 documentation + Model Zoo — torchreid 0.7.7 documentation @@ -60,7 +60,7 @@
- 0.7.6 + 0.7.7
diff --git a/_modules/index.html b/_modules/index.html index d1f74a9..82c2e62 100644 --- a/_modules/index.html +++ b/_modules/index.html @@ -8,7 +8,7 @@ - Overview: module code — torchreid 0.7.6 documentation + Overview: module code — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
- 0.7.6 + 0.7.7
@@ -204,9 +204,9 @@
  • torchreid.models.pcb
  • torchreid.models.resnet
  • torchreid.models.resnetmid
  • -
  • torchreid.models.resnext
  • torchreid.models.senet
  • torchreid.models.shufflenet
  • +
  • torchreid.models.shufflenetv2
  • torchreid.models.squeezenet
  • torchreid.models.xception
  • torchreid.optim.lr_scheduler
  • diff --git a/_modules/torchreid/data/datamanager.html b/_modules/torchreid/data/datamanager.html index 79f2a49..d5471ce 100644 --- a/_modules/torchreid/data/datamanager.html +++ b/_modules/torchreid/data/datamanager.html @@ -8,7 +8,7 @@ - torchreid.data.datamanager — torchreid 0.7.6 documentation + torchreid.data.datamanager — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/__init__.html b/_modules/torchreid/data/datasets/__init__.html index f96e6fb..4d74e66 100644 --- a/_modules/torchreid/data/datasets/__init__.html +++ b/_modules/torchreid/data/datasets/__init__.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.__init__ — torchreid 0.7.6 documentation + torchreid.data.datasets.__init__ — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/dataset.html b/_modules/torchreid/data/datasets/dataset.html index 02ce70e..7938700 100644 --- a/_modules/torchreid/data/datasets/dataset.html +++ b/_modules/torchreid/data/datasets/dataset.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.dataset — torchreid 0.7.6 documentation + torchreid.data.datasets.dataset — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/cuhk01.html b/_modules/torchreid/data/datasets/image/cuhk01.html index 35847c2..059d20d 100644 --- a/_modules/torchreid/data/datasets/image/cuhk01.html +++ b/_modules/torchreid/data/datasets/image/cuhk01.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.cuhk01 — torchreid 0.7.6 documentation + torchreid.data.datasets.image.cuhk01 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/cuhk03.html b/_modules/torchreid/data/datasets/image/cuhk03.html index f8ec8fa..938832f 100644 --- a/_modules/torchreid/data/datasets/image/cuhk03.html +++ b/_modules/torchreid/data/datasets/image/cuhk03.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.cuhk03 — torchreid 0.7.6 documentation + torchreid.data.datasets.image.cuhk03 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/dukemtmcreid.html b/_modules/torchreid/data/datasets/image/dukemtmcreid.html index 51219cb..3896bb6 100644 --- a/_modules/torchreid/data/datasets/image/dukemtmcreid.html +++ b/_modules/torchreid/data/datasets/image/dukemtmcreid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.dukemtmcreid — torchreid 0.7.6 documentation + torchreid.data.datasets.image.dukemtmcreid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/grid.html b/_modules/torchreid/data/datasets/image/grid.html index a894e43..e50c271 100644 --- a/_modules/torchreid/data/datasets/image/grid.html +++ b/_modules/torchreid/data/datasets/image/grid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.grid — torchreid 0.7.6 documentation + torchreid.data.datasets.image.grid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/ilids.html b/_modules/torchreid/data/datasets/image/ilids.html index c6a7365..7ecb0b9 100644 --- a/_modules/torchreid/data/datasets/image/ilids.html +++ b/_modules/torchreid/data/datasets/image/ilids.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.ilids — torchreid 0.7.6 documentation + torchreid.data.datasets.image.ilids — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/market1501.html b/_modules/torchreid/data/datasets/image/market1501.html index 03a18f3..1edbe45 100644 --- a/_modules/torchreid/data/datasets/image/market1501.html +++ b/_modules/torchreid/data/datasets/image/market1501.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.market1501 — torchreid 0.7.6 documentation + torchreid.data.datasets.image.market1501 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/msmt17.html b/_modules/torchreid/data/datasets/image/msmt17.html index b89d5a8..46b3e51 100644 --- a/_modules/torchreid/data/datasets/image/msmt17.html +++ b/_modules/torchreid/data/datasets/image/msmt17.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.msmt17 — torchreid 0.7.6 documentation + torchreid.data.datasets.image.msmt17 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/prid.html b/_modules/torchreid/data/datasets/image/prid.html index 09118d1..708e81e 100644 --- a/_modules/torchreid/data/datasets/image/prid.html +++ b/_modules/torchreid/data/datasets/image/prid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.prid — torchreid 0.7.6 documentation + torchreid.data.datasets.image.prid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/sensereid.html b/_modules/torchreid/data/datasets/image/sensereid.html index f31e899..ac48598 100644 --- a/_modules/torchreid/data/datasets/image/sensereid.html +++ b/_modules/torchreid/data/datasets/image/sensereid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.sensereid — torchreid 0.7.6 documentation + torchreid.data.datasets.image.sensereid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/image/viper.html b/_modules/torchreid/data/datasets/image/viper.html index 7016d17..bbc3bc7 100644 --- a/_modules/torchreid/data/datasets/image/viper.html +++ b/_modules/torchreid/data/datasets/image/viper.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.image.viper — torchreid 0.7.6 documentation + torchreid.data.datasets.image.viper — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/video/dukemtmcvidreid.html b/_modules/torchreid/data/datasets/video/dukemtmcvidreid.html index 4055502..5ae9022 100644 --- a/_modules/torchreid/data/datasets/video/dukemtmcvidreid.html +++ b/_modules/torchreid/data/datasets/video/dukemtmcvidreid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.video.dukemtmcvidreid — torchreid 0.7.6 documentation + torchreid.data.datasets.video.dukemtmcvidreid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/video/ilidsvid.html b/_modules/torchreid/data/datasets/video/ilidsvid.html index 94f3b3b..9bd1cd0 100644 --- a/_modules/torchreid/data/datasets/video/ilidsvid.html +++ b/_modules/torchreid/data/datasets/video/ilidsvid.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.video.ilidsvid — torchreid 0.7.6 documentation + torchreid.data.datasets.video.ilidsvid — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/video/mars.html b/_modules/torchreid/data/datasets/video/mars.html index 40bd0ac..414377f 100644 --- a/_modules/torchreid/data/datasets/video/mars.html +++ b/_modules/torchreid/data/datasets/video/mars.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.video.mars — torchreid 0.7.6 documentation + torchreid.data.datasets.video.mars — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/datasets/video/prid2011.html b/_modules/torchreid/data/datasets/video/prid2011.html index dc5349c..5180670 100644 --- a/_modules/torchreid/data/datasets/video/prid2011.html +++ b/_modules/torchreid/data/datasets/video/prid2011.html @@ -8,7 +8,7 @@ - torchreid.data.datasets.video.prid2011 — torchreid 0.7.6 documentation + torchreid.data.datasets.video.prid2011 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/sampler.html b/_modules/torchreid/data/sampler.html index f84473b..a7569fb 100644 --- a/_modules/torchreid/data/sampler.html +++ b/_modules/torchreid/data/sampler.html @@ -8,7 +8,7 @@ - torchreid.data.sampler — torchreid 0.7.6 documentation + torchreid.data.sampler — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/data/transforms.html b/_modules/torchreid/data/transforms.html index 80090c5..75c36b7 100644 --- a/_modules/torchreid/data/transforms.html +++ b/_modules/torchreid/data/transforms.html @@ -8,7 +8,7 @@ - torchreid.data.transforms — torchreid 0.7.6 documentation + torchreid.data.transforms — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/engine/engine.html b/_modules/torchreid/engine/engine.html index d3c540c..e621ebb 100644 --- a/_modules/torchreid/engine/engine.html +++ b/_modules/torchreid/engine/engine.html @@ -8,7 +8,7 @@ - torchreid.engine.engine — torchreid 0.7.6 documentation + torchreid.engine.engine — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -219,7 +219,7 @@ max_epoch (int): maximum epoch. start_epoch (int, optional): starting epoch. Default is 0. fixbase_epoch (int, optional): number of epochs to train ``open_layers`` (new layers) - while keeping base layers frozen. Default is 0. ``fixbase_epoch`` is not counted + while keeping base layers frozen. Default is 0. ``fixbase_epoch`` is counted in ``max_epoch``. open_layers (str or list, optional): layers (attribute names) open for training. start_eval (int, optional): from which epoch to start evaluation. Default is 0. @@ -263,15 +263,8 @@ time_start = time.time() print('=> Start training') - if fixbase_epoch>0 and (open_layers is not None): - print('Pretrain open layers ({}) for {} epochs'.format(open_layers, fixbase_epoch)) - for epoch in range(fixbase_epoch): - self.train(epoch, trainloader, fixbase=True, open_layers=open_layers, - print_freq=print_freq) - print('Done. From now on all layers are open to train for {} epochs'.format(max_epoch)) - for epoch in range(start_epoch, max_epoch): - self.train(epoch, trainloader, print_freq=print_freq) + self.train(epoch, max_epoch, trainloader, fixbase_epoch, open_layers, print_freq) if (epoch+1)>start_eval and eval_freq>0 and (epoch+1)%eval_freq==0 and (epoch+1)!=max_epoch: rank1 = self.test( @@ -362,7 +355,7 @@ for name in targets: domain = 'source' if name in self.datamanager.sources else 'target' - print('\n##### Evaluating {} ({}) #####'.format(name, domain)) + print('##### Evaluating {} ({}) #####'.format(name, domain)) queryloader = testloader[name]['query'] galleryloader = testloader[name]['gallery'] rank1 = self._evaluate( diff --git a/_modules/torchreid/engine/image/softmax.html b/_modules/torchreid/engine/image/softmax.html index 2649af2..38fe2d3 100644 --- a/_modules/torchreid/engine/image/softmax.html +++ b/_modules/torchreid/engine/image/softmax.html @@ -8,7 +8,7 @@ - torchreid.engine.image.softmax — torchreid 0.7.6 documentation + torchreid.engine.image.softmax — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -182,7 +182,7 @@
    [docs]class ImageSoftmaxEngine(engine.Engine): - """Softmax-loss engine for image-reid. + r"""Softmax-loss engine for image-reid. Args: datamanager (DataManager): an instance of ``torchreid.data.ImageDataManager`` @@ -239,24 +239,15 @@ label_smooth=label_smooth ) -
    [docs] def train(self, epoch, trainloader, fixbase=False, open_layers=None, print_freq=10): - """Trains the model for one epoch on source datasets using softmax loss. - - Args: - epoch (int): current epoch. - trainloader (Dataloader): training dataloader. - fixbase (bool, optional): whether to fix base layers. Default is False. - open_layers (str or list, optional): layers open for training. - print_freq (int, optional): print frequency. Default is 10. - """ +
    [docs] def train(self, epoch, max_epoch, trainloader, fixbase_epoch=0, open_layers=None, print_freq=10): losses = AverageMeter() accs = AverageMeter() batch_time = AverageMeter() data_time = AverageMeter() self.model.train() - - if fixbase and (open_layers is not None): + if (epoch+1)<=fixbase_epoch and open_layers is not None: + print('* Only train {} (epoch: {}/{})'.format(open_layers, epoch+1, fixbase_epoch)) open_specified_layers(self.model, open_layers) else: open_all_layers(self.model) @@ -282,20 +273,30 @@ accs.update(metrics.accuracy(outputs, pids)[0].item()) if (batch_idx+1) % print_freq == 0: - print('Epoch: [{0}][{1}/{2}]\t' + # estimate remaining time + num_batches = len(trainloader) + eta_seconds = batch_time.avg * (num_batches-(batch_idx+1) + (max_epoch-(epoch+1))*num_batches) + eta_str = str(datetime.timedelta(seconds=int(eta_seconds))) + print('Epoch: [{0}/{1}][{2}/{3}]\t' 'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t' 'Data {data_time.val:.3f} ({data_time.avg:.3f})\t' 'Loss {loss.val:.4f} ({loss.avg:.4f})\t' - 'Acc {acc.val:.2f} ({acc.avg:.2f})\t'.format( - epoch + 1, batch_idx + 1, len(trainloader), + 'Acc {acc.val:.2f} ({acc.avg:.2f})\t' + 'Lr {lr:.6f}\t' + 'Eta {eta}'.format( + epoch+1, max_epoch, batch_idx+1, len(trainloader), batch_time=batch_time, data_time=data_time, loss=losses, - acc=accs)) + acc=accs, + lr=self.optimizer.param_groups[0]['lr'], + eta=eta_str + ) + ) end = time.time() - if (self.scheduler is not None) and (not fixbase): + if self.scheduler is not None: self.scheduler.step()
    diff --git a/_modules/torchreid/engine/image/triplet.html b/_modules/torchreid/engine/image/triplet.html index f61c764..f2f5885 100644 --- a/_modules/torchreid/engine/image/triplet.html +++ b/_modules/torchreid/engine/image/triplet.html @@ -8,7 +8,7 @@ - torchreid.engine.image.triplet — torchreid 0.7.6 documentation + torchreid.engine.image.triplet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -182,7 +182,7 @@
    [docs]class ImageTripletEngine(engine.Engine): - """Triplet-loss engine for image-reid. + r"""Triplet-loss engine for image-reid. Args: datamanager (DataManager): an instance of ``torchreid.data.ImageDataManager`` @@ -250,16 +250,7 @@ label_smooth=label_smooth ) -
    [docs] def train(self, epoch, trainloader, fixbase=False, open_layers=None, print_freq=10): - """Trains the model for one epoch on source datasets using hard mining triplet loss. - - Args: - epoch (int): current epoch. - trainloader (Dataloader): training dataloader. - fixbase (bool, optional): whether to fix base layers. Default is False. - open_layers (str or list, optional): layers open for training. - print_freq (int, optional): print frequency. Default is 10. - """ +
    [docs] def train(self, epoch, max_epoch, trainloader, fixbase_epoch=0, open_layers=None, print_freq=10): losses_t = AverageMeter() losses_x = AverageMeter() accs = AverageMeter() @@ -267,8 +258,8 @@ data_time = AverageMeter() self.model.train() - - if fixbase and (open_layers is not None): + if (epoch+1)<=fixbase_epoch and open_layers is not None: + print('* Only train {} (epoch: {}/{})'.format(open_layers, epoch+1, fixbase_epoch)) open_specified_layers(self.model, open_layers) else: open_all_layers(self.model) @@ -297,22 +288,32 @@ accs.update(metrics.accuracy(outputs, pids)[0].item()) if (batch_idx+1) % print_freq == 0: - print('Epoch: [{0}][{1}/{2}]\t' + # estimate remaining time + num_batches = len(trainloader) + eta_seconds = batch_time.avg * (num_batches-(batch_idx+1) + (max_epoch-(epoch+1))*num_batches) + eta_str = str(datetime.timedelta(seconds=int(eta_seconds))) + print('Epoch: [{0}/{1}][{2}/{3}]\t' 'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t' 'Data {data_time.val:.3f} ({data_time.avg:.3f})\t' - 'Triplet {loss_t.val:.4f} ({loss_t.avg:.4f})\t' - 'Softmax {loss_x.val:.4f} ({loss_x.avg:.4f})\t' - 'Acc {acc.val:.2f} ({acc.avg:.2f})\t'.format( - epoch + 1, batch_idx + 1, len(trainloader), + 'Loss_t {loss_t.val:.4f} ({loss_t.avg:.4f})\t' + 'Loss_x {loss_x.val:.4f} ({loss_x.avg:.4f})\t' + 'Acc {acc.val:.2f} ({acc.avg:.2f})\t' + 'Lr {lr:.6f}\t' + 'Eta {eta}'.format( + epoch+1, max_epoch, batch_idx+1, len(trainloader), batch_time=batch_time, data_time=data_time, loss_t=losses_t, loss_x=losses_x, - acc=accs)) + acc=accs, + lr=self.optimizer.param_groups[0]['lr'], + eta=eta_str + ) + ) end = time.time() - if (self.scheduler is not None) and (not fixbase): + if self.scheduler is not None: self.scheduler.step()
    diff --git a/_modules/torchreid/engine/video/softmax.html b/_modules/torchreid/engine/video/softmax.html index e6e532d..d057512 100644 --- a/_modules/torchreid/engine/video/softmax.html +++ b/_modules/torchreid/engine/video/softmax.html @@ -8,7 +8,7 @@ - torchreid.engine.video.softmax — torchreid 0.7.6 documentation + torchreid.engine.video.softmax — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/engine/video/triplet.html b/_modules/torchreid/engine/video/triplet.html index 4c8587e..0308b39 100644 --- a/_modules/torchreid/engine/video/triplet.html +++ b/_modules/torchreid/engine/video/triplet.html @@ -8,7 +8,7 @@ - torchreid.engine.video.triplet — torchreid 0.7.6 documentation + torchreid.engine.video.triplet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/losses/cross_entropy_loss.html b/_modules/torchreid/losses/cross_entropy_loss.html index f46bc80..9bd4d61 100644 --- a/_modules/torchreid/losses/cross_entropy_loss.html +++ b/_modules/torchreid/losses/cross_entropy_loss.html @@ -8,7 +8,7 @@ - torchreid.losses.cross_entropy_loss — torchreid 0.7.6 documentation + torchreid.losses.cross_entropy_loss — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/losses/hard_mine_triplet_loss.html b/_modules/torchreid/losses/hard_mine_triplet_loss.html index 860ea27..6c54935 100644 --- a/_modules/torchreid/losses/hard_mine_triplet_loss.html +++ b/_modules/torchreid/losses/hard_mine_triplet_loss.html @@ -8,7 +8,7 @@ - torchreid.losses.hard_mine_triplet_loss — torchreid 0.7.6 documentation + torchreid.losses.hard_mine_triplet_loss — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/metrics/accuracy.html b/_modules/torchreid/metrics/accuracy.html index 9c84bde..dec1c3f 100644 --- a/_modules/torchreid/metrics/accuracy.html +++ b/_modules/torchreid/metrics/accuracy.html @@ -8,7 +8,7 @@ - torchreid.metrics.accuracy — torchreid 0.7.6 documentation + torchreid.metrics.accuracy — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/metrics/distance.html b/_modules/torchreid/metrics/distance.html index e920466..32882f2 100644 --- a/_modules/torchreid/metrics/distance.html +++ b/_modules/torchreid/metrics/distance.html @@ -8,7 +8,7 @@ - torchreid.metrics.distance — torchreid 0.7.6 documentation + torchreid.metrics.distance — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/metrics/rank.html b/_modules/torchreid/metrics/rank.html index 4eaf73f..1e9c193 100644 --- a/_modules/torchreid/metrics/rank.html +++ b/_modules/torchreid/metrics/rank.html @@ -8,7 +8,7 @@ - torchreid.metrics.rank — torchreid 0.7.6 documentation + torchreid.metrics.rank — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/__init__.html b/_modules/torchreid/models/__init__.html index d0a4338..ff6c8ac 100644 --- a/_modules/torchreid/models/__init__.html +++ b/_modules/torchreid/models/__init__.html @@ -8,7 +8,7 @@ - torchreid.models.__init__ — torchreid 0.7.6 documentation + torchreid.models.__init__ — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -171,7 +171,6 @@ from .resnet import * from .resnetmid import * -from .resnext import * from .senet import * from .densenet import * from .inceptionresnetv2 import * @@ -182,6 +181,7 @@ from .mobilenetv2 import * from .shufflenet import * from .squeezenet import * +from .shufflenetv2 import * from .mudeep import * from .hacnn import * @@ -196,9 +196,9 @@ 'resnet50': resnet50, 'resnet101': resnet101, 'resnet152': resnet152, - 'resnet50_fc512': resnet50_fc512, 'resnext50_32x4d': resnext50_32x4d, - 'resnext50_32x4d_fc512': resnext50_32x4d_fc512, + 'resnext101_32x8d': resnext101_32x8d, + 'resnet50_fc512': resnet50_fc512, 'se_resnet50': se_resnet50, 'se_resnet50_fc512': se_resnet50_fc512, 'se_resnet101': se_resnet101, @@ -220,6 +220,10 @@ 'squeezenet1_0': squeezenet1_0, 'squeezenet1_0_fc512': squeezenet1_0_fc512, 'squeezenet1_1': squeezenet1_1, + 'shufflenet_v2_x0_5': shufflenet_v2_x0_5, + 'shufflenet_v2_x1_0': shufflenet_v2_x1_0, + 'shufflenet_v2_x1_5': shufflenet_v2_x1_5, + 'shufflenet_v2_x2_0': shufflenet_v2_x2_0, # reid-specific models 'mudeep': MuDeep, 'resnet50mid': resnet50mid, diff --git a/_modules/torchreid/models/densenet.html b/_modules/torchreid/models/densenet.html index 875e344..df7f3fb 100644 --- a/_modules/torchreid/models/densenet.html +++ b/_modules/torchreid/models/densenet.html @@ -8,7 +8,7 @@ - torchreid.models.densenet — torchreid 0.7.6 documentation + torchreid.models.densenet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -165,7 +165,10 @@

    Source code for torchreid.models.densenet

    -from __future__ import absolute_import
    +"""
    +Code source: https://github.com/pytorch/vision
    +"""
    +from __future__ import absolute_import
     from __future__ import division
     
     __all__ = ['densenet121', 'densenet169', 'densenet201', 'densenet161', 'densenet121_fc512']
    diff --git a/_modules/torchreid/models/hacnn.html b/_modules/torchreid/models/hacnn.html
    index fd21a28..511a4b1 100644
    --- a/_modules/torchreid/models/hacnn.html
    +++ b/_modules/torchreid/models/hacnn.html
    @@ -8,7 +8,7 @@
       
       
       
    -  torchreid.models.hacnn — torchreid 0.7.6 documentation
    +  torchreid.models.hacnn — torchreid 0.7.7 documentation
       
     
       
    @@ -59,7 +59,7 @@
                 
                 
                   
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/inceptionresnetv2.html b/_modules/torchreid/models/inceptionresnetv2.html index d0a4fe1..a19f22f 100644 --- a/_modules/torchreid/models/inceptionresnetv2.html +++ b/_modules/torchreid/models/inceptionresnetv2.html @@ -8,7 +8,7 @@ - torchreid.models.inceptionresnetv2 — torchreid 0.7.6 documentation + torchreid.models.inceptionresnetv2 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/inceptionv4.html b/_modules/torchreid/models/inceptionv4.html index 3b185f4..5612e02 100644 --- a/_modules/torchreid/models/inceptionv4.html +++ b/_modules/torchreid/models/inceptionv4.html @@ -8,7 +8,7 @@ - torchreid.models.inceptionv4 — torchreid 0.7.6 documentation + torchreid.models.inceptionv4 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/mlfn.html b/_modules/torchreid/models/mlfn.html index 345b606..edad60e 100644 --- a/_modules/torchreid/models/mlfn.html +++ b/_modules/torchreid/models/mlfn.html @@ -8,7 +8,7 @@ - torchreid.models.mlfn — torchreid 0.7.6 documentation + torchreid.models.mlfn — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/mobilenetv2.html b/_modules/torchreid/models/mobilenetv2.html index 4283987..67ea4a1 100644 --- a/_modules/torchreid/models/mobilenetv2.html +++ b/_modules/torchreid/models/mobilenetv2.html @@ -8,7 +8,7 @@ - torchreid.models.mobilenetv2 — torchreid 0.7.6 documentation + torchreid.models.mobilenetv2 — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/mudeep.html b/_modules/torchreid/models/mudeep.html index 64555b8..78ebb2e 100644 --- a/_modules/torchreid/models/mudeep.html +++ b/_modules/torchreid/models/mudeep.html @@ -8,7 +8,7 @@ - torchreid.models.mudeep — torchreid 0.7.6 documentation + torchreid.models.mudeep — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/nasnet.html b/_modules/torchreid/models/nasnet.html index c6e3af3..44edac2 100644 --- a/_modules/torchreid/models/nasnet.html +++ b/_modules/torchreid/models/nasnet.html @@ -8,7 +8,7 @@ - torchreid.models.nasnet — torchreid 0.7.6 documentation + torchreid.models.nasnet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/pcb.html b/_modules/torchreid/models/pcb.html index 3ef2582..3073829 100644 --- a/_modules/torchreid/models/pcb.html +++ b/_modules/torchreid/models/pcb.html @@ -8,7 +8,7 @@ - torchreid.models.pcb — torchreid 0.7.6 documentation + torchreid.models.pcb — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/resnet.html b/_modules/torchreid/models/resnet.html index 99e3706..45418de 100644 --- a/_modules/torchreid/models/resnet.html +++ b/_modules/torchreid/models/resnet.html @@ -8,7 +8,7 @@ - torchreid.models.resnet — torchreid 0.7.6 documentation + torchreid.models.resnet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -165,10 +165,14 @@

    Source code for torchreid.models.resnet

    -from __future__ import absolute_import
    +"""
    +Code source: https://github.com/pytorch/vision
    +"""
    +from __future__ import absolute_import
     from __future__ import division
     
    -__all__ = ['resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'resnet50_fc512']
    +__all__ = ['resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'resnext50_32x4d',
    +           'resnext101_32x8d', 'resnet50_fc512']
     
     import torch
     from torch import nn
    @@ -183,30 +187,45 @@
         'resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth',
         'resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth',
         'resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth',
    +    'resnext50_32x4d': 'https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth',
    +    'resnext101_32x8d': 'https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth',
     }
     
     
    -def conv3x3(in_planes, out_planes, stride=1):
    +def conv3x3(in_planes, out_planes, stride=1, groups=1, dilation=1):
         """3x3 convolution with padding"""
         return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
    -                     padding=1, bias=False)
    +                     padding=dilation, groups=groups, bias=False, dilation=dilation)
    +
    +
    +def conv1x1(in_planes, out_planes, stride=1):
    +    """1x1 convolution"""
    +    return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False)
     
     
     class BasicBlock(nn.Module):
         expansion = 1
     
    -    def __init__(self, inplanes, planes, stride=1, downsample=None):
    +    def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
    +                 base_width=64, dilation=1, norm_layer=None):
             super(BasicBlock, self).__init__()
    +        if norm_layer is None:
    +            norm_layer = nn.BatchNorm2d
    +        if groups != 1 or base_width != 64:
    +            raise ValueError('BasicBlock only supports groups=1 and base_width=64')
    +        if dilation > 1:
    +            raise NotImplementedError("Dilation > 1 not supported in BasicBlock")
    +        # Both self.conv1 and self.downsample layers downsample the input when stride != 1
             self.conv1 = conv3x3(inplanes, planes, stride)
    -        self.bn1 = nn.BatchNorm2d(planes)
    +        self.bn1 = norm_layer(planes)
             self.relu = nn.ReLU(inplace=True)
             self.conv2 = conv3x3(planes, planes)
    -        self.bn2 = nn.BatchNorm2d(planes)
    +        self.bn2 = norm_layer(planes)
             self.downsample = downsample
             self.stride = stride
     
         def forward(self, x):
    -        residual = x
    +        identity = x
     
             out = self.conv1(x)
             out = self.bn1(out)
    @@ -216,9 +235,9 @@
             out = self.bn2(out)
     
             if self.downsample is not None:
    -            residual = self.downsample(x)
    +            identity = self.downsample(x)
     
    -        out += residual
    +        out += identity
             out = self.relu(out)
     
             return out
    @@ -227,21 +246,25 @@
     class Bottleneck(nn.Module):
         expansion = 4
     
    -    def __init__(self, inplanes, planes, stride=1, downsample=None):
    +    def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1,
    +                 base_width=64, dilation=1, norm_layer=None):
             super(Bottleneck, self).__init__()
    -        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
    -        self.bn1 = nn.BatchNorm2d(planes)
    -        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
    -                               padding=1, bias=False)
    -        self.bn2 = nn.BatchNorm2d(planes)
    -        self.conv3 = nn.Conv2d(planes, planes * self.expansion, kernel_size=1, bias=False)
    -        self.bn3 = nn.BatchNorm2d(planes * self.expansion)
    +        if norm_layer is None:
    +            norm_layer = nn.BatchNorm2d
    +        width = int(planes * (base_width / 64.)) * groups
    +        # Both self.conv2 and self.downsample layers downsample the input when stride != 1
    +        self.conv1 = conv1x1(inplanes, width)
    +        self.bn1 = norm_layer(width)
    +        self.conv2 = conv3x3(width, width, stride, groups, dilation)
    +        self.bn2 = norm_layer(width)
    +        self.conv3 = conv1x1(width, planes * self.expansion)
    +        self.bn3 = norm_layer(planes * self.expansion)
             self.relu = nn.ReLU(inplace=True)
             self.downsample = downsample
             self.stride = stride
     
         def forward(self, x):
    -        residual = x
    +        identity = x
     
             out = self.conv1(x)
             out = self.bn1(out)
    @@ -255,9 +278,9 @@
             out = self.bn3(out)
     
             if self.downsample is not None:
    -            residual = self.downsample(x)
    +            identity = self.downsample(x)
     
    -        out += residual
    +        out += identity
             out = self.relu(out)
     
             return out
    @@ -267,7 +290,8 @@
         """Residual network.
         
         Reference:
    -        He et al. Deep Residual Learning for Image Recognition. CVPR 2016.
    +        - He et al. Deep Residual Learning for Image Recognition. CVPR 2016.
    +        - Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR 2017.
     
         Public keys:
             - ``resnet18``: ResNet18.
    @@ -275,49 +299,80 @@
             - ``resnet50``: ResNet50.
             - ``resnet101``: ResNet101.
             - ``resnet152``: ResNet152.
    +        - ``resnext50_32x4d``: ResNeXt50.
    +        - ``resnext101_32x8d``: ResNeXt101.
             - ``resnet50_fc512``: ResNet50 + FC.
         """
    -    
    -    def __init__(self, num_classes, loss, block, layers,
    -                 last_stride=2,
    -                 fc_dims=None,
    -                 dropout_p=None,
    -                 **kwargs):
    -        self.inplanes = 64
    +
    +    def __init__(self, num_classes, loss, block, layers, zero_init_residual=False,
    +                 groups=1, width_per_group=64, replace_stride_with_dilation=None,
    +                 norm_layer=None, last_stride=2, fc_dims=None, dropout_p=None, **kwargs):
             super(ResNet, self).__init__()
    +        if norm_layer is None:
    +            norm_layer = nn.BatchNorm2d
    +        self._norm_layer = norm_layer
             self.loss = loss
             self.feature_dim = 512 * block.expansion
    -        
    -        # backbone network
    -        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False)
    -        self.bn1 = nn.BatchNorm2d(64)
    +        self.inplanes = 64
    +        self.dilation = 1
    +        if replace_stride_with_dilation is None:
    +            # each element in the tuple indicates if we should replace
    +            # the 2x2 stride with a dilated convolution instead
    +            replace_stride_with_dilation = [False, False, False]
    +        if len(replace_stride_with_dilation) != 3:
    +            raise ValueError("replace_stride_with_dilation should be None "
    +                             "or a 3-element tuple, got {}".format(replace_stride_with_dilation))
    +        self.groups = groups
    +        self.base_width = width_per_group
    +        self.conv1 = nn.Conv2d(3, self.inplanes, kernel_size=7, stride=2, padding=3,
    +                               bias=False)
    +        self.bn1 = norm_layer(self.inplanes)
             self.relu = nn.ReLU(inplace=True)
             self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
             self.layer1 = self._make_layer(block, 64, layers[0])
    -        self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
    -        self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
    -        self.layer4 = self._make_layer(block, 512, layers[3], stride=last_stride)
    -        
    -        self.global_avgpool = nn.AdaptiveAvgPool2d(1)
    +        self.layer2 = self._make_layer(block, 128, layers[1], stride=2,
    +                                       dilate=replace_stride_with_dilation[0])
    +        self.layer3 = self._make_layer(block, 256, layers[2], stride=2,
    +                                       dilate=replace_stride_with_dilation[1])
    +        self.layer4 = self._make_layer(block, 512, layers[3], stride=last_stride,
    +                                       dilate=replace_stride_with_dilation[2])
    +        self.global_avgpool = nn.AdaptiveAvgPool2d((1, 1))
             self.fc = self._construct_fc_layer(fc_dims, 512 * block.expansion, dropout_p)
             self.classifier = nn.Linear(self.feature_dim, num_classes)
     
             self._init_params()
     
    -    def _make_layer(self, block, planes, blocks, stride=1):
    +        # Zero-initialize the last BN in each residual branch,
    +        # so that the residual branch starts with zeros, and each residual block behaves like an identity.
    +        # This improves the model by 0.2~0.3% according to https://arxiv.org/abs/1706.02677
    +        if zero_init_residual:
    +            for m in self.modules():
    +                if isinstance(m, Bottleneck):
    +                    nn.init.constant_(m.bn3.weight, 0)
    +                elif isinstance(m, BasicBlock):
    +                    nn.init.constant_(m.bn2.weight, 0)
    +
    +    def _make_layer(self, block, planes, blocks, stride=1, dilate=False):
    +        norm_layer = self._norm_layer
             downsample = None
    +        previous_dilation = self.dilation
    +        if dilate:
    +            self.dilation *= stride
    +            stride = 1
             if stride != 1 or self.inplanes != planes * block.expansion:
                 downsample = nn.Sequential(
    -                nn.Conv2d(self.inplanes, planes * block.expansion,
    -                          kernel_size=1, stride=stride, bias=False),
    -                nn.BatchNorm2d(planes * block.expansion),
    +                conv1x1(self.inplanes, planes * block.expansion, stride),
    +                norm_layer(planes * block.expansion),
                 )
     
             layers = []
    -        layers.append(block(self.inplanes, planes, stride, downsample))
    +        layers.append(block(self.inplanes, planes, stride, downsample, self.groups,
    +                            self.base_width, previous_dilation, norm_layer))
             self.inplanes = planes * block.expansion
    -        for i in range(1, blocks):
    -            layers.append(block(self.inplanes, planes))
    +        for _ in range(1, blocks):
    +            layers.append(block(self.inplanes, planes, groups=self.groups,
    +                                base_width=self.base_width, dilation=self.dilation,
    +                                norm_layer=norm_layer))
     
             return nn.Sequential(*layers)
     
    @@ -409,17 +464,7 @@
         model.load_state_dict(model_dict)
     
     
    -"""
    -Residual network configurations:
    ---
    -resnet18: block=BasicBlock, layers=[2, 2, 2, 2]
    -resnet34: block=BasicBlock, layers=[3, 4, 6, 3]
    -resnet50: block=Bottleneck, layers=[3, 4, 6, 3]
    -resnet101: block=Bottleneck, layers=[3, 4, 23, 3]
    -resnet152: block=Bottleneck, layers=[3, 8, 36, 3]
    -"""
    -
    -
    +"""ResNet"""
     def resnet18(num_classes, loss='softmax', pretrained=True, **kwargs):
         model = ResNet(
             num_classes=num_classes,
    @@ -500,8 +545,45 @@
         return model
     
     
    +"""ResNeXt"""
    +def resnext50_32x4d(num_classes, loss='softmax', pretrained=True, **kwargs):
    +    model = ResNet(
    +        num_classes=num_classes,
    +        loss=loss,
    +        block=Bottleneck,
    +        layers=[3, 4, 6, 3],
    +        last_stride=2,
    +        fc_dims=None,
    +        dropout_p=None,
    +        groups=32,
    +        width_per_group=4,
    +        **kwargs
    +    )
    +    if pretrained:
    +        init_pretrained_weights(model, model_urls['resnext50_32x4d'])
    +    return model
    +
    +
    +def resnext101_32x8d(num_classes, loss='softmax', pretrained=True, **kwargs):
    +    model = ResNet(
    +        num_classes=num_classes,
    +        loss=loss,
    +        block=Bottleneck,
    +        layers=[3, 4, 23, 3],
    +        last_stride=2,
    +        fc_dims=None,
    +        dropout_p=None,
    +        groups=32,
    +        width_per_group=8,
    +        **kwargs
    +    )
    +    if pretrained:
    +        init_pretrained_weights(model, model_urls['resnext101_32x8d'])
    +    return model
    +
    +
     """
    -resnet + fc
    +ResNet + FC
     """
     def resnet50_fc512(num_classes, loss='softmax', pretrained=True, **kwargs):
         model = ResNet(
    diff --git a/_modules/torchreid/models/resnetmid.html b/_modules/torchreid/models/resnetmid.html
    index 0e60e6f..6412fb4 100644
    --- a/_modules/torchreid/models/resnetmid.html
    +++ b/_modules/torchreid/models/resnetmid.html
    @@ -8,7 +8,7 @@
       
       
       
    -  torchreid.models.resnetmid — torchreid 0.7.6 documentation
    +  torchreid.models.resnetmid — torchreid 0.7.7 documentation
       
     
       
    @@ -59,7 +59,7 @@
                 
                 
                   
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/resnext.html b/_modules/torchreid/models/resnext.html deleted file mode 100644 index 336955c..0000000 --- a/_modules/torchreid/models/resnext.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - - - - - torchreid.models.resnext — torchreid 0.7.6 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - - - -
    - -
    - - - - - - - - - - - - - - - - - -
    - -
      - -
    • Docs »
    • - -
    • Module code »
    • - -
    • torchreid.models.resnext
    • - - -
    • - -
    • - -
    - - -
    -
    -
    -
    - -

    Source code for torchreid.models.resnext

    -from __future__ import absolute_import
    -from __future__ import division
    -
    -__all__ = ['resnext50_32x4d', 'resnext50_32x4d_fc512']
    -
    -import math
    -
    -import torch
    -from torch import nn
    -from torch.nn import functional as F
    -import torchvision
    -import torch.utils.model_zoo as model_zoo
    -
    -
    -model_urls = {
    -    # top1 = 76.3
    -    'resnext50_32x4d': 'http://www.eecs.qmul.ac.uk/~kz303/deep-person-reid/model-zoo/imagenet-pretrained/resnext50_32x4d-453b60f8.pth',
    -}
    -
    -
    -class ResNeXtBottleneck(nn.Module):
    -    expansion = 4
    -
    -    def __init__(self, inplanes, planes, groups=32, base_width=4, stride=1, downsample=None):
    -        super(ResNeXtBottleneck, self).__init__()
    -        width = int(math.floor(planes * (base_width / 64.)) * groups)
    -        self.conv1 = nn.Conv2d(inplanes, width, kernel_size=1, bias=False, stride=1)
    -        self.bn1 = nn.BatchNorm2d(width)
    -        self.conv2 = nn.Conv2d(width, width, kernel_size=3, stride=stride, padding=1, groups=groups, bias=False)
    -        self.bn2 = nn.BatchNorm2d(width)
    -        self.conv3 = nn.Conv2d(width, planes * self.expansion, kernel_size=1, bias=False)
    -        self.bn3 = nn.BatchNorm2d(planes * self.expansion)
    -        self.relu = nn.ReLU(inplace=True)
    -        self.downsample = downsample
    -        self.stride = stride
    -
    -    def forward(self, x):
    -        residual = x
    -
    -        out = self.conv1(x)
    -        out = self.bn1(out)
    -        out = self.relu(out)
    -
    -        out = self.conv2(out)
    -        out = self.bn2(out)
    -        out = self.relu(out)
    -
    -        out = self.conv3(out)
    -        out = self.bn3(out)
    -
    -        if self.downsample is not None:
    -            residual = self.downsample(x)
    -
    -        out += residual
    -        out = self.relu(out)
    -
    -        return out
    -
    -
    -
    [docs]class ResNeXt(nn.Module): - """ResNeXt. - - Reference: - Xie et al. Aggregated Residual Transformations for Deep - Neural Networks. CVPR 2017. - - Public keys: - - ``resnext50_32x4d``: ResNeXt50 (groups=32, width=4). - - ``resnext50_32x4d_fc512`` ResNeXt50 (groups=32, width=4) + FC. - """ - - def __init__(self, num_classes, loss, block, layers, - groups=32, - base_width=4, - last_stride=2, - fc_dims=None, - dropout_p=None, - **kwargs): - self.inplanes = 64 - super(ResNeXt, self).__init__() - self.loss = loss - self.feature_dim = 512 * block.expansion - - # backbone network - self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False) - self.bn1 = nn.BatchNorm2d(64) - self.relu = nn.ReLU(inplace=True) - self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) - self.layer1 = self._make_layer(block, 64, layers[0], groups, base_width) - self.layer2 = self._make_layer(block, 128, layers[1], groups, base_width, stride=2) - self.layer3 = self._make_layer(block, 256, layers[2], groups, base_width, stride=2) - self.layer4 = self._make_layer(block, 512, layers[3], groups, base_width, stride=last_stride) - - self.global_avgpool = nn.AdaptiveAvgPool2d(1) - self.fc = self._construct_fc_layer(fc_dims, 512 * block.expansion, dropout_p) - self.classifier = nn.Linear(self.feature_dim, num_classes) - - self._init_params() - - def _make_layer(self, block, planes, blocks, groups, base_width, stride=1): - downsample = None - if stride != 1 or self.inplanes != planes * block.expansion: - downsample = nn.Sequential( - nn.Conv2d(self.inplanes, planes * block.expansion, - kernel_size=1, stride=stride, bias=False), - nn.BatchNorm2d(planes * block.expansion), - ) - - layers = [] - layers.append(block(self.inplanes, planes, groups, base_width, stride, downsample)) - self.inplanes = planes * block.expansion - for i in range(1, blocks): - layers.append(block(self.inplanes, planes, groups, base_width)) - - return nn.Sequential(*layers) - - def _construct_fc_layer(self, fc_dims, input_dim, dropout_p=None): - """Constructs fully connected layer. - - Args: - fc_dims (list or tuple): dimensions of fc layers, if None, no fc layers are constructed - input_dim (int): input dimension - dropout_p (float): dropout probability, if None, dropout is unused - """ - if fc_dims is None: - self.feature_dim = input_dim - return None - - assert isinstance(fc_dims, (list, tuple)), 'fc_dims must be either list or tuple, but got {}'.format(type(fc_dims)) - - layers = [] - for dim in fc_dims: - layers.append(nn.Linear(input_dim, dim)) - layers.append(nn.BatchNorm1d(dim)) - layers.append(nn.ReLU(inplace=True)) - if dropout_p is not None: - layers.append(nn.Dropout(p=dropout_p)) - input_dim = dim - - self.feature_dim = fc_dims[-1] - - return nn.Sequential(*layers) - - def _init_params(self): - for m in self.modules(): - if isinstance(m, nn.Conv2d): - nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') - if m.bias is not None: - nn.init.constant_(m.bias, 0) - elif isinstance(m, nn.BatchNorm2d): - nn.init.constant_(m.weight, 1) - nn.init.constant_(m.bias, 0) - elif isinstance(m, nn.BatchNorm1d): - nn.init.constant_(m.weight, 1) - nn.init.constant_(m.bias, 0) - elif isinstance(m, nn.Linear): - nn.init.normal_(m.weight, 0, 0.01) - if m.bias is not None: - nn.init.constant_(m.bias, 0) - - def featuremaps(self, x): - x = self.conv1(x) - x = self.bn1(x) - x = self.relu(x) - x = self.maxpool(x) - x = self.layer1(x) - x = self.layer2(x) - x = self.layer3(x) - x = self.layer4(x) - return x - - def forward(self, x): - f = self.featuremaps(x) - v = self.global_avgpool(f) - v = v.view(v.size(0), -1) - - if self.fc is not None: - v = self.fc(v) - - if not self.training: - return v - - y = self.classifier(v) - - if self.loss == 'softmax': - return y - elif self.loss == 'triplet': - return y, v - else: - raise KeyError("Unsupported loss: {}".format(self.loss))
    - - -def init_pretrained_weights(model, model_url): - """Initializes model with pretrained weights. - - Layers that don't match with pretrained layers in name or size are kept unchanged. - """ - pretrain_dict = model_zoo.load_url(model_url) - model_dict = model.state_dict() - pretrain_dict = {k: v for k, v in pretrain_dict.items() if k in model_dict and model_dict[k].size() == v.size()} - model_dict.update(pretrain_dict) - model.load_state_dict(model_dict) - - -def resnext50_32x4d(num_classes, loss='softmax', pretrained=True, **kwargs): - model = ResNeXt( - num_classes=num_classes, - loss=loss, - block=ResNeXtBottleneck, - layers=[3, 4, 6, 3], - groups=32, - base_width=4, - last_stride=2, - fc_dims=None, - dropout_p=None, - **kwargs - ) - if pretrained: - init_pretrained_weights(model, model_urls['resnext50_32x4d']) - return model - - -def resnext50_32x4d_fc512(num_classes, loss='softmax', pretrained=True, **kwargs): - model = ResNeXt( - num_classes=num_classes, - loss=loss, - block=ResNeXtBottleneck, - layers=[3, 4, 6, 3], - groups=32, - base_width=4, - last_stride=1, - fc_dims=[512], - dropout_p=None, - **kwargs - ) - if pretrained: - init_pretrained_weights(model, model_urls['resnext50_32x4d']) - return model -
    - -
    - -
    - - -
    -
    - -
    - -
    - - - - - - - - - - - - \ No newline at end of file diff --git a/_modules/torchreid/models/senet.html b/_modules/torchreid/models/senet.html index 03a414e..65de3e9 100644 --- a/_modules/torchreid/models/senet.html +++ b/_modules/torchreid/models/senet.html @@ -8,7 +8,7 @@ - torchreid.models.senet — torchreid 0.7.6 documentation + torchreid.models.senet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/shufflenet.html b/_modules/torchreid/models/shufflenet.html index b644bca..bf63502 100644 --- a/_modules/torchreid/models/shufflenet.html +++ b/_modules/torchreid/models/shufflenet.html @@ -8,7 +8,7 @@ - torchreid.models.shufflenet — torchreid 0.7.6 documentation + torchreid.models.shufflenet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/models/shufflenetv2.html b/_modules/torchreid/models/shufflenetv2.html new file mode 100644 index 0000000..3ad9e5b --- /dev/null +++ b/_modules/torchreid/models/shufflenetv2.html @@ -0,0 +1,419 @@ + + + + + + + + + + + torchreid.models.shufflenetv2 — torchreid 0.7.7 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
      + +
    • Docs »
    • + +
    • Module code »
    • + +
    • torchreid.models.shufflenetv2
    • + + +
    • + +
    • + +
    + + +
    +
    +
    +
    + +

    Source code for torchreid.models.shufflenetv2

    +"""
    +Code source: https://github.com/pytorch/vision
    +"""
    +from __future__ import absolute_import
    +from __future__ import division
    +
    +__all__ = ['shufflenet_v2_x0_5', 'shufflenet_v2_x1_0', 'shufflenet_v2_x1_5', 'shufflenet_v2_x2_0']
    +
    +import torch
    +from torch import nn
    +from torch.nn import functional as F
    +import torchvision
    +import torch.utils.model_zoo as model_zoo
    +
    +
    +model_urls = {
    +    'shufflenetv2_x0.5': 'https://download.pytorch.org/models/shufflenetv2_x0.5-f707e7126e.pth',
    +    'shufflenetv2_x1.0': 'https://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pth',
    +    'shufflenetv2_x1.5': None,
    +    'shufflenetv2_x2.0': None,
    +}
    +
    +
    +def channel_shuffle(x, groups):
    +    batchsize, num_channels, height, width = x.data.size()
    +    channels_per_group = num_channels // groups
    +
    +    # reshape
    +    x = x.view(batchsize, groups,
    +               channels_per_group, height, width)
    +
    +    x = torch.transpose(x, 1, 2).contiguous()
    +
    +    # flatten
    +    x = x.view(batchsize, -1, height, width)
    +
    +    return x
    +
    +
    +class InvertedResidual(nn.Module):
    +    
    +    def __init__(self, inp, oup, stride):
    +        super(InvertedResidual, self).__init__()
    +
    +        if not (1 <= stride <= 3):
    +            raise ValueError('illegal stride value')
    +        self.stride = stride
    +
    +        branch_features = oup // 2
    +        assert (self.stride != 1) or (inp == branch_features << 1)
    +
    +        if self.stride > 1:
    +            self.branch1 = nn.Sequential(
    +                self.depthwise_conv(inp, inp, kernel_size=3, stride=self.stride, padding=1),
    +                nn.BatchNorm2d(inp),
    +                nn.Conv2d(inp, branch_features, kernel_size=1, stride=1, padding=0, bias=False),
    +                nn.BatchNorm2d(branch_features),
    +                nn.ReLU(inplace=True),
    +            )
    +
    +        self.branch2 = nn.Sequential(
    +            nn.Conv2d(inp if (self.stride > 1) else branch_features,
    +                      branch_features, kernel_size=1, stride=1, padding=0, bias=False),
    +            nn.BatchNorm2d(branch_features),
    +            nn.ReLU(inplace=True),
    +            self.depthwise_conv(branch_features, branch_features, kernel_size=3, stride=self.stride, padding=1),
    +            nn.BatchNorm2d(branch_features),
    +            nn.Conv2d(branch_features, branch_features, kernel_size=1, stride=1, padding=0, bias=False),
    +            nn.BatchNorm2d(branch_features),
    +            nn.ReLU(inplace=True),
    +        )
    +
    +    @staticmethod
    +    def depthwise_conv(i, o, kernel_size, stride=1, padding=0, bias=False):
    +        return nn.Conv2d(i, o, kernel_size, stride, padding, bias=bias, groups=i)
    +
    +    def forward(self, x):
    +        if self.stride == 1:
    +            x1, x2 = x.chunk(2, dim=1)
    +            out = torch.cat((x1, self.branch2(x2)), dim=1)
    +        else:
    +            out = torch.cat((self.branch1(x), self.branch2(x)), dim=1)
    +
    +        out = channel_shuffle(out, 2)
    +
    +        return out
    +
    +
    +
    [docs]class ShuffleNetV2(nn.Module): + """ShuffleNetV2. + + Reference: + Ma et al. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design. ECCV 2018. + + Public keys: + - ``shufflenet_v2_x0_5``: ShuffleNetV2 x0.5. + - ``shufflenet_v2_x1_0``: ShuffleNetV2 x1.0. + - ``shufflenet_v2_x1_5``: ShuffleNetV2 x1.5. + - ``shufflenet_v2_x2_0``: ShuffleNetV2 x2.0. + """ + + def __init__(self, num_classes, loss, stages_repeats, stages_out_channels, **kwargs): + super(ShuffleNetV2, self).__init__() + self.loss = loss + + if len(stages_repeats) != 3: + raise ValueError('expected stages_repeats as list of 3 positive ints') + if len(stages_out_channels) != 5: + raise ValueError('expected stages_out_channels as list of 5 positive ints') + self._stage_out_channels = stages_out_channels + + input_channels = 3 + output_channels = self._stage_out_channels[0] + self.conv1 = nn.Sequential( + nn.Conv2d(input_channels, output_channels, 3, 2, 1, bias=False), + nn.BatchNorm2d(output_channels), + nn.ReLU(inplace=True), + ) + input_channels = output_channels + + self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) + + stage_names = ['stage{}'.format(i) for i in [2, 3, 4]] + for name, repeats, output_channels in zip( + stage_names, stages_repeats, self._stage_out_channels[1:]): + seq = [InvertedResidual(input_channels, output_channels, 2)] + for i in range(repeats - 1): + seq.append(InvertedResidual(output_channels, output_channels, 1)) + setattr(self, name, nn.Sequential(*seq)) + input_channels = output_channels + + output_channels = self._stage_out_channels[-1] + self.conv5 = nn.Sequential( + nn.Conv2d(input_channels, output_channels, 1, 1, 0, bias=False), + nn.BatchNorm2d(output_channels), + nn.ReLU(inplace=True), + ) + self.global_avgpool = nn.AdaptiveAvgPool2d((1, 1)) + + self.classifier = nn.Linear(output_channels, num_classes) + + def featuremaps(self, x): + x = self.conv1(x) + x = self.maxpool(x) + x = self.stage2(x) + x = self.stage3(x) + x = self.stage4(x) + x = self.conv5(x) + return x + + def forward(self, x): + f = self.featuremaps(x) + v = self.global_avgpool(f) + v = v.view(v.size(0), -1) + + if not self.training: + return v + + y = self.classifier(v) + + if self.loss == 'softmax': + return y + elif self.loss == 'triplet': + return y, v + else: + raise KeyError("Unsupported loss: {}".format(self.loss))
    + + +def init_pretrained_weights(model, model_url): + """Initializes model with pretrained weights. + + Layers that don't match with pretrained layers in name or size are kept unchanged. + """ + if model_url is None: + import warnings + warnings.warn('ImageNet pretrained weights are unavailable for this model') + return + pretrain_dict = model_zoo.load_url(model_url) + model_dict = model.state_dict() + pretrain_dict = {k: v for k, v in pretrain_dict.items() if k in model_dict and model_dict[k].size() == v.size()} + model_dict.update(pretrain_dict) + model.load_state_dict(model_dict) + + +def shufflenet_v2_x0_5(num_classes, loss='softmax', pretrained=True, **kwargs): + model = ShuffleNetV2(num_classes, loss, [4, 8, 4], [24, 48, 96, 192, 1024], **kwargs) + if pretrained: + init_pretrained_weights(model, model_urls['shufflenetv2_x0.5']) + return model + + +def shufflenet_v2_x1_0(num_classes, loss='softmax', pretrained=True, **kwargs): + model = ShuffleNetV2(num_classes, loss, [4, 8, 4], [24, 116, 232, 464, 1024], **kwargs) + if pretrained: + init_pretrained_weights(model, model_urls['shufflenetv2_x1.0']) + return model + + +def shufflenet_v2_x1_5(num_classes, loss='softmax', pretrained=True, **kwargs): + model = ShuffleNetV2(num_classes, loss, [4, 8, 4], [24, 176, 352, 704, 1024], **kwargs) + if pretrained: + init_pretrained_weights(model, model_urls['shufflenetv2_x1.5']) + return model + + +def shufflenet_v2_x2_0(num_classes, loss='softmax', pretrained=True, **kwargs): + model = ShuffleNetV2(num_classes, loss, [4, 8, 4], [24, 244, 488, 976, 2048], **kwargs) + if pretrained: + init_pretrained_weights(model, model_urls['shufflenetv2_x2.0']) + return model +
    + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/_modules/torchreid/models/squeezenet.html b/_modules/torchreid/models/squeezenet.html index a7a5a1e..5b93d03 100644 --- a/_modules/torchreid/models/squeezenet.html +++ b/_modules/torchreid/models/squeezenet.html @@ -8,7 +8,7 @@ - torchreid.models.squeezenet — torchreid 0.7.6 documentation + torchreid.models.squeezenet — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -165,7 +165,10 @@

    Source code for torchreid.models.squeezenet

    -from __future__ import absolute_import
    +"""
    +Code source: https://github.com/pytorch/vision
    +"""
    +from __future__ import absolute_import
     from __future__ import division
     
     __all__ = [
    diff --git a/_modules/torchreid/models/xception.html b/_modules/torchreid/models/xception.html
    index 5d08f36..7f85a86 100644
    --- a/_modules/torchreid/models/xception.html
    +++ b/_modules/torchreid/models/xception.html
    @@ -8,7 +8,7 @@
       
       
       
    -  torchreid.models.xception — torchreid 0.7.6 documentation
    +  torchreid.models.xception — torchreid 0.7.7 documentation
       
     
       
    @@ -59,7 +59,7 @@
                 
                 
                   
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/optim/lr_scheduler.html b/_modules/torchreid/optim/lr_scheduler.html index 9bdf9f0..a1d8705 100644 --- a/_modules/torchreid/optim/lr_scheduler.html +++ b/_modules/torchreid/optim/lr_scheduler.html @@ -8,7 +8,7 @@ - torchreid.optim.lr_scheduler — torchreid 0.7.6 documentation + torchreid.optim.lr_scheduler — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/optim/optimizer.html b/_modules/torchreid/optim/optimizer.html index d9173b2..8dcb348 100644 --- a/_modules/torchreid/optim/optimizer.html +++ b/_modules/torchreid/optim/optimizer.html @@ -8,7 +8,7 @@ - torchreid.optim.optimizer — torchreid 0.7.6 documentation + torchreid.optim.optimizer — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/utils/avgmeter.html b/_modules/torchreid/utils/avgmeter.html index 774eade..6829733 100644 --- a/_modules/torchreid/utils/avgmeter.html +++ b/_modules/torchreid/utils/avgmeter.html @@ -8,7 +8,7 @@ - torchreid.utils.avgmeter — torchreid 0.7.6 documentation + torchreid.utils.avgmeter — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/utils/loggers.html b/_modules/torchreid/utils/loggers.html index 39ef183..3c14be2 100644 --- a/_modules/torchreid/utils/loggers.html +++ b/_modules/torchreid/utils/loggers.html @@ -8,7 +8,7 @@ - torchreid.utils.loggers — torchreid 0.7.6 documentation + torchreid.utils.loggers — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/utils/model_complexity.html b/_modules/torchreid/utils/model_complexity.html index ee93c6f..6042abb 100644 --- a/_modules/torchreid/utils/model_complexity.html +++ b/_modules/torchreid/utils/model_complexity.html @@ -8,7 +8,7 @@ - torchreid.utils.model_complexity — torchreid 0.7.6 documentation + torchreid.utils.model_complexity — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/utils/reidtools.html b/_modules/torchreid/utils/reidtools.html index 23b9b8d..bd6c701 100644 --- a/_modules/torchreid/utils/reidtools.html +++ b/_modules/torchreid/utils/reidtools.html @@ -8,7 +8,7 @@ - torchreid.utils.reidtools — torchreid 0.7.6 documentation + torchreid.utils.reidtools — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_modules/torchreid/utils/tools.html b/_modules/torchreid/utils/tools.html index c44220b..ea4211c 100644 --- a/_modules/torchreid/utils/tools.html +++ b/_modules/torchreid/utils/tools.html @@ -8,7 +8,7 @@ - torchreid.utils.tools — torchreid 0.7.6 documentation + torchreid.utils.tools — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    @@ -170,7 +170,7 @@ from __future__ import division __all__ = ['mkdir_if_missing', 'check_isfile', 'read_json', 'write_json', - 'set_random_seed', 'download_url', 'read_image'] + 'set_random_seed', 'download_url', 'read_image', 'collect_env_info'] import sys import os @@ -182,6 +182,7 @@ import warnings import random import numpy as np +import PIL from PIL import Image import torch @@ -281,6 +282,17 @@ print('IOError incurred when reading "{}". Will redo. Don\'t worry. Just chill.'.format(img_path)) pass return img
    + + +
    [docs]def collect_env_info(): + """Returns env info as a string. + + Code source: github.com/facebookresearch/maskrcnn-benchmark + """ + from torch.utils.collect_env import get_pretty_env_info + env_str = get_pretty_env_info() + env_str += '\n Pillow ({})'.format(PIL.__version__) + return env_str
    diff --git a/_modules/torchreid/utils/torchtools.html b/_modules/torchreid/utils/torchtools.html index 28dd621..0e7fad9 100644 --- a/_modules/torchreid/utils/torchtools.html +++ b/_modules/torchreid/utils/torchtools.html @@ -8,7 +8,7 @@ - torchreid.utils.torchtools — torchreid 0.7.6 documentation + torchreid.utils.torchtools — torchreid 0.7.7 documentation @@ -59,7 +59,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/_sources/pkg/models.rst.txt b/_sources/pkg/models.rst.txt index 81be2bb..c8110ea 100644 --- a/_sources/pkg/models.rst.txt +++ b/_sources/pkg/models.rst.txt @@ -14,7 +14,6 @@ ImageNet Classification Models ------------------------------- .. autoclass:: torchreid.models.resnet.ResNet -.. autoclass:: torchreid.models.resnext.ResNeXt .. autoclass:: torchreid.models.senet.SENet .. autoclass:: torchreid.models.densenet.DenseNet .. autoclass:: torchreid.models.inceptionresnetv2.InceptionResNetV2 @@ -29,6 +28,7 @@ Lightweight Models .. autoclass:: torchreid.models.mobilenetv2.MobileNetV2 .. autoclass:: torchreid.models.shufflenet.ShuffleNet .. autoclass:: torchreid.models.squeezenet.SqueezeNet +.. autoclass:: torchreid.models.shufflenetv2.ShuffleNetV2 ReID-specific Models diff --git a/_static/documentation_options.js b/_static/documentation_options.js index 9fb6716..bb72704 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.7.6', + VERSION: '0.7.7', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', diff --git a/datasets.html b/datasets.html index e81a1a7..e00191d 100644 --- a/datasets.html +++ b/datasets.html @@ -8,7 +8,7 @@ - Datasets — torchreid 0.7.6 documentation + Datasets — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/evaluation.html b/evaluation.html index ea9eed7..3a560bb 100644 --- a/evaluation.html +++ b/evaluation.html @@ -8,7 +8,7 @@ - Evaluation — torchreid 0.7.6 documentation + Evaluation — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/genindex.html b/genindex.html index e16da2a..b1b5a71 100644 --- a/genindex.html +++ b/genindex.html @@ -9,7 +9,7 @@ - Index — torchreid 0.7.6 documentation + Index — torchreid 0.7.7 documentation @@ -60,7 +60,7 @@
    - 0.7.6 + 0.7.7
    @@ -227,6 +227,8 @@
  • check_before_run() (torchreid.data.datasets.dataset.Dataset method)
  • check_isfile() (in module torchreid.utils.tools) +
  • +
  • collect_env_info() (in module torchreid.utils.tools)
  • ColorAugmentation (class in torchreid.data.transforms)
  • @@ -236,10 +238,10 @@
  • (torchreid.data.datasets.video.mars.Mars method)
  • -
  • compute_distance_matrix() (in module torchreid.metrics.distance) -
    • ShuffleNet (class in torchreid.models.shufflenet) +
    • +
    • ShuffleNetV2 (class in torchreid.models.shufflenetv2)
    • SqueezeNet (class in torchreid.models.squeezenet)
    • diff --git a/index.html b/index.html index 4581576..8a6d9d6 100644 --- a/index.html +++ b/index.html @@ -8,7 +8,7 @@ - Torchreid — torchreid 0.7.6 documentation + Torchreid — torchreid 0.7.7 documentation @@ -60,7 +60,7 @@
      - 0.7.6 + 0.7.7
      diff --git a/objects.inv b/objects.inv index 430262ecd864a6d7ecf873d6af10ee1699d20860..17f80251cf26ed180895cafa9902a7f231d1b3dc 100644 GIT binary patch delta 1762 zcmV<81|9jg4#*CWK>;_BLOp+P<2De-@BS15+H2TNc8dbNxv|?d8Ye-Vro~PE{Q}@f3m1J0m=(30UI0NM+jU~q{YVAz7W-0@WB0A~%cKDnyT3fP0XaKaaD9S{hn*z~1r%m6yMa zBF&J{a%_utq^}!*Ae5>NW zzRb;~FQa<+L2q>KOgj*v>qfy09dyGX)k}?SB*icGfV8q7JO}4JV3<(JiCR?EN$$~p z2om}_&{wFf;*OSewD0Hox z=Cc4+4@DG?Iq2?Qvq5qeuwloH~)A*NVayo3o;RH0|V6&gT; zGEo~$z-nXgUx_)SfnfFa+XsxDc1Li)S&7xa)v$j7GFS@P8@~!v&)*Qz1ynC}(|S&c zgL|7}ie~tLiDd~NSgKEUxvpmFo7>Z(-n)byPVyXmonGJG4)!G~CJHT=gHR$4S7=eU zJb+MYp050vhc7Md>C0da%{Dn&-uyniSCp+u2DU#-bMMy^TBZO6T9z|)8SI^7J*4P% zx>A4NKD9aqLyBaL?yr9v>}Tf_*-7;DrmDdLmiE{?h+(68HTU^`u`4&5%mVCf7)8ZF z%kc;Vl|})+TRryHN6$;O7SKP{&BqB$*;AD9SR^~p8SeBHYE52Gf~SZo5B90O4CZjp z0nK0X-CI!OU#aQvJ}RY@M2#ChsPm^hqr`tceqBk|9Ze6w)ee1Gv)n0iQ0EvK+iu}Z zIp$*uDsOaSu6|#wkG=bm0B`>)G#vNLiG-mXvnXP{?aJVV$fM`j_A$*y?i{}tckd|F zx012UciJ0&b^H<~&Q$c9U6R_jsYG06QViD=qQ`2nKc*A0sa{(i->=3v%OH{JfOUUR zd!`NZcmV zM!hZNq>0VGPaCjNFYqS;?ALOp+T+cpr#@A?#+X|G0OC!NmZ=2~i_sbzaC*UjX@fykAF ziXa#Ol&yUF;K2t-$qxd&m=w7C(;vWM39Kv`PqrLLic&1G`9pDzH^8If@R_o-%pm#@ z6}!!E#$YRH_KR&k`!zb7$QS+5RNXIHR+3>MqVpc={S1_sG?pBbJWhWw6&i`9 z*%fSfob(_l*+R05SFnF(9AaMP!xzM9ETb!uLyWU*Bx1^*a-9_1xflVvQMo{8vpPMF zh^$lN2*?6+VWWE_pxCmfSd^4veh5T1i7+@OUDB8en+zMQ&?Swb&}1!?l-u2h^RVRL zlF-$^U;eSc;axoeLInpEfe?!#BQm_JA4luzN2~B-NLSNx2ULI3L>r7D%;lk}`mlId zTydCBLqu-)IN~%1{e2%MhGcbS3shr3h+NO7%Md+k0q#Ja|31zdYH4WE0ej06RG$Aa ziZnw)i{;|M0(~VFBZZUZpu50u5|9fRYxOlSwA6R^f$MHhihxsHAA}y~cX02g$81EK zkJw3Mld^x*yUu^~EZVH^{WvmfmQ5FrVZziJ7h{Oh9GxXZs2BqoVb^SldRbn4 zI6ohwi#5wE^BVf@t_nC) zG_x(&72AK6=c0X?NUi%P%+sUUc@w@>UNP10z-mCl`hOaSs`>Hi{@X~8-YYXs5`l1% zlpH6AqYl>wFZZ~Q=&*X}w?jLPNr{j+Par@^jnLbgqLdKV4Kc;a;yFy1q6$3=uFwD) zl!@A40#+M??$Y3dCuly=dJ%2?=7f`*_P3tKo z4(@f1DVpIuCYB|9V5vUY<+_@wZ*Go@dT$c8ILUMLmfxq zmrH;3?Uz=^U`Uay(B0LagZ=D$B0Gtm-c&VMz``DThclil315e6u&ZJ@^U*K1<$9f2 zfW7sid@lihSc<*%p*&YB0DY})-cMl4o}!G$BH4n@YsY6#Yw~jHJ4RI5uTSmeEr)vw zX#SEP-hvwcN==9NUMZy{YTWQ%ojTi5<9u)7-x@cM5-!*NfXNEpg7iz3#Wtqh)tJa~?6AJc5#PVswj_l81! zD;djtr@ir4hb~d#Ohv!h8>!uzN}XjU#c)j_daM@v6FL#=>Sg8e{q3*YCC_{rbeDe; z9+R~?ort=AAS3^LPeVx?dt zm*K2}gQ1vn?k(ijE*&k0`FlE z>+-+Z@^&$c?`QLABxL$IWl3~)9=U(*#yYxu0>LPp=^s!gi`(h!I{tQh>-sc})?r}| zR^J$#)a7^AxGBjS+v@)h#H2bOYQ2te+iJ~c&F9Gma+0U;Y|JyfQeUYY>Q-w$*SC|_ ztfD#=5A~2v)FL{;D-LJ%gQjzO4O((t{&nGMH}q(%L*+@yakxb)qe zGECGj?@XL?b>GiDZbwH)_DQ=hJ#uV!t5JWiJ88CSeXn*87xlJ+lO{I%K5f88y}+Lc zz^b7;Q?||8FYWU?mG;|36E`!}&TglC-&md*%ih$r9A^SMB)1savMTGNIc<5)%yxKg ziLK>T)<=`w^4ux!06R67mRLpGABTa%Y=fbTbPg{L(OMtHN6TxYq=R$z`Yp}c_T#2y nwb9dIISH?2S=)X*l>&IYDM{K{mTjwzsxR#6OtQ&O4J=GV5V~x> diff --git a/pkg/data.html b/pkg/data.html index 8942fac..bb7c628 100644 --- a/pkg/data.html +++ b/pkg/data.html @@ -8,7 +8,7 @@ - torchreid.data — torchreid 0.7.6 documentation + torchreid.data — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
      - 0.7.6 + 0.7.7
      diff --git a/pkg/engine.html b/pkg/engine.html index fad8fd3..27d9f45 100644 --- a/pkg/engine.html +++ b/pkg/engine.html @@ -8,7 +8,7 @@ - torchreid.engine — torchreid 0.7.6 documentation + torchreid.engine — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
      - 0.7.6 + 0.7.7
      @@ -210,7 +210,7 @@ or torchreid.data.V
    • max_epoch (int) – maximum epoch.
    • start_epoch (int, optional) – starting epoch. Default is 0.
    • fixbase_epoch (int, optional) – number of epochs to train open_layers (new layers) -while keeping base layers frozen. Default is 0. fixbase_epoch is not counted +while keeping base layers frozen. Default is 0. fixbase_epoch is counted in max_epoch.
    • open_layers (str or list, optional) – layers (attribute names) open for training.
    • start_eval (int, optional) – from which epoch to start evaluation. Default is 0.
    • @@ -363,23 +363,17 @@ or torchreid.data.V
    -train(epoch, trainloader, fixbase=False, open_layers=None, print_freq=10)[source]
    -

    Trains the model for one epoch on source datasets using softmax loss.

    - --- - - - -
    Parameters:
      -
    • epoch (int) – current epoch.
    • -
    • trainloader (Dataloader) – training dataloader.
    • -
    • fixbase (bool, optional) – whether to fix base layers. Default is False.
    • -
    • open_layers (str or list, optional) – layers open for training.
    • -
    • print_freq (int, optional) – print frequency. Default is 10.
    • -
    -
    +train(epoch, max_epoch, trainloader, fixbase_epoch=0, open_layers=None, print_freq=10)[source] +

    Performs training on source datasets for one epoch.

    +

    This will be called every epoch in run(), e.g.

    +
    for epoch in range(start_epoch, max_epoch):
    +    self.train(some_arguments)
    +
    +
    +
    +

    Note

    +

    This needs to be implemented in subclasses.

    +
    @@ -448,23 +442,17 @@ or torchreid.data.V
    -train(epoch, trainloader, fixbase=False, open_layers=None, print_freq=10)[source]
    -

    Trains the model for one epoch on source datasets using hard mining triplet loss.

    - --- - - - -
    Parameters:
      -
    • epoch (int) – current epoch.
    • -
    • trainloader (Dataloader) – training dataloader.
    • -
    • fixbase (bool, optional) – whether to fix base layers. Default is False.
    • -
    • open_layers (str or list, optional) – layers open for training.
    • -
    • print_freq (int, optional) – print frequency. Default is 10.
    • -
    -
    +train(epoch, max_epoch, trainloader, fixbase_epoch=0, open_layers=None, print_freq=10)[source] +

    Performs training on source datasets for one epoch.

    +

    This will be called every epoch in run(), e.g.

    +
    for epoch in range(start_epoch, max_epoch):
    +    self.train(some_arguments)
    +
    +
    +
    +

    Note

    +

    This needs to be implemented in subclasses.

    +
    diff --git a/pkg/losses.html b/pkg/losses.html index 5aaafee..b374f38 100644 --- a/pkg/losses.html +++ b/pkg/losses.html @@ -8,7 +8,7 @@ - torchreid.losses — torchreid 0.7.6 documentation + torchreid.losses — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/pkg/metrics.html b/pkg/metrics.html index 4a1d3e6..eac95e9 100644 --- a/pkg/metrics.html +++ b/pkg/metrics.html @@ -8,7 +8,7 @@ - torchreid.metrics — torchreid 0.7.6 documentation + torchreid.metrics — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/pkg/models.html b/pkg/models.html index 73c9c30..55d2542 100644 --- a/pkg/models.html +++ b/pkg/models.html @@ -8,7 +8,7 @@ - torchreid.models — torchreid 0.7.6 documentation + torchreid.models — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    @@ -231,11 +231,15 @@ Default is True.

    ImageNet Classification Models

    -class torchreid.models.resnet.ResNet(num_classes, loss, block, layers, last_stride=2, fc_dims=None, dropout_p=None, **kwargs)[source]
    +class torchreid.models.resnet.ResNet(num_classes, loss, block, layers, zero_init_residual=False, groups=1, width_per_group=64, replace_stride_with_dilation=None, norm_layer=None, last_stride=2, fc_dims=None, dropout_p=None, **kwargs)[source]

    Residual network.

    Reference:
    -
    He et al. Deep Residual Learning for Image Recognition. CVPR 2016.
    +
      +
    • He et al. Deep Residual Learning for Image Recognition. CVPR 2016.
    • +
    • Xie et al. Aggregated Residual Transformations for Deep Neural Networks. CVPR 2017.
    • +
    +
    Public keys:
    • resnet18: ResNet18.
    • @@ -243,29 +247,14 @@ Default is True.
    • resnet50: ResNet50.
    • resnet101: ResNet101.
    • resnet152: ResNet152.
    • +
    • resnext50_32x4d: ResNeXt50.
    • +
    • resnext101_32x8d: ResNeXt101.
    • resnet50_fc512: ResNet50 + FC.
    -
    -
    -class torchreid.models.resnext.ResNeXt(num_classes, loss, block, layers, groups=32, base_width=4, last_stride=2, fc_dims=None, dropout_p=None, **kwargs)[source]
    -

    ResNeXt.

    -
    -
    Reference:
    -
    Xie et al. Aggregated Residual Transformations for Deep -Neural Networks. CVPR 2017.
    -
    Public keys:
    -
      -
    • resnext50_32x4d: ResNeXt50 (groups=32, width=4).
    • -
    • resnext50_32x4d_fc512 ResNeXt50 (groups=32, width=4) + FC.
    • -
    -
    -
    -
    -
    class torchreid.models.senet.SENet(num_classes, loss, block, layers, groups, reduction, dropout_p=0.2, inplanes=128, input_3x3=True, downsample_kernel_size=3, downsample_padding=1, last_stride=2, fc_dims=None, **kwargs)[source]
    @@ -424,6 +413,24 @@ and< 0.5 MB model size. arXiv:1602.07360.
    +
    +
    +class torchreid.models.shufflenetv2.ShuffleNetV2(num_classes, loss, stages_repeats, stages_out_channels, **kwargs)[source]
    +

    ShuffleNetV2.

    +
    +
    Reference:
    +
    Ma et al. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design. ECCV 2018.
    +
    Public keys:
    +
      +
    • shufflenet_v2_x0_5: ShuffleNetV2 x0.5.
    • +
    • shufflenet_v2_x1_0: ShuffleNetV2 x1.0.
    • +
    • shufflenet_v2_x1_5: ShuffleNetV2 x1.5.
    • +
    • shufflenet_v2_x2_0: ShuffleNetV2 x2.0.
    • +
    +
    +
    +
    +

    ReID-specific Models

    diff --git a/pkg/optim.html b/pkg/optim.html index 9bbff75..f9e22ba 100644 --- a/pkg/optim.html +++ b/pkg/optim.html @@ -8,7 +8,7 @@ - torchreid.optim — torchreid 0.7.6 documentation + torchreid.optim — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/pkg/utils.html b/pkg/utils.html index d6a6327..1a44f9a 100644 --- a/pkg/utils.html +++ b/pkg/utils.html @@ -8,7 +8,7 @@ - torchreid.utils — torchreid 0.7.6 documentation + torchreid.utils — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7
    @@ -382,6 +382,13 @@ to show the summarized results, which are convenient for analysis.

    +
    +
    +torchreid.utils.tools.collect_env_info()[source]
    +

    Returns env info as a string.

    +

    Code source: github.com/facebookresearch/maskrcnn-benchmark

    +
    +

    ReID Tools

    diff --git a/py-modindex.html b/py-modindex.html index 84f9a87..c0a7133 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -8,7 +8,7 @@ - Python Module Index — torchreid 0.7.6 documentation + Python Module Index — torchreid 0.7.7 documentation @@ -62,7 +62,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/search.html b/search.html index 1aaeefb..278e33f 100644 --- a/search.html +++ b/search.html @@ -8,7 +8,7 @@ - Search — torchreid 0.7.6 documentation + Search — torchreid 0.7.7 documentation @@ -60,7 +60,7 @@
    - 0.7.6 + 0.7.7
    diff --git a/searchindex.js b/searchindex.js index 462d226..aa303bf 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["AWESOME_REID","MODEL_ZOO","datasets","evaluation","index","pkg/data","pkg/engine","pkg/losses","pkg/metrics","pkg/models","pkg/optim","pkg/utils","user_guide"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:54},filenames:["AWESOME_REID.md","MODEL_ZOO.md","datasets.rst","evaluation.rst","index.rst","pkg/data.rst","pkg/engine.rst","pkg/losses.rst","pkg/metrics.rst","pkg/models.rst","pkg/optim.rst","pkg/utils.rst","user_guide.rst"],objects:{"torchreid.data":{datamanager:[5,0,0,"-"],sampler:[5,0,0,"-"],transforms:[5,0,0,"-"]},"torchreid.data.datamanager":{DataManager:[5,1,1,""],ImageDataManager:[5,1,1,""],VideoDataManager:[5,1,1,""]},"torchreid.data.datamanager.DataManager":{num_train_cams:[5,2,1,""],num_train_pids:[5,2,1,""],return_dataloaders:[5,3,1,""],return_testdataset_by_name:[5,3,1,""]},"torchreid.data.datasets":{__init__:[5,0,0,"-"],dataset:[5,0,0,"-"]},"torchreid.data.datasets.__init__":{init_image_dataset:[5,4,1,""],init_video_dataset:[5,4,1,""],register_image_dataset:[5,4,1,""],register_video_dataset:[5,4,1,""]},"torchreid.data.datasets.dataset":{Dataset:[5,1,1,""],ImageDataset:[5,1,1,""],VideoDataset:[5,1,1,""]},"torchreid.data.datasets.dataset.Dataset":{check_before_run:[5,3,1,""],combine_all:[5,3,1,""],download_dataset:[5,3,1,""],get_num_cams:[5,3,1,""],get_num_pids:[5,3,1,""],parse_data:[5,3,1,""],show_summary:[5,3,1,""]},"torchreid.data.datasets.dataset.ImageDataset":{show_summary:[5,3,1,""]},"torchreid.data.datasets.dataset.VideoDataset":{show_summary:[5,3,1,""]},"torchreid.data.datasets.image":{cuhk01:[5,0,0,"-"],cuhk03:[5,0,0,"-"],dukemtmcreid:[5,0,0,"-"],grid:[5,0,0,"-"],ilids:[5,0,0,"-"],market1501:[5,0,0,"-"],msmt17:[5,0,0,"-"],prid:[5,0,0,"-"],sensereid:[5,0,0,"-"],viper:[5,0,0,"-"]},"torchreid.data.datasets.image.cuhk01":{CUHK01:[5,1,1,""]},"torchreid.data.datasets.image.cuhk01.CUHK01":{prepare_split:[5,3,1,""]},"torchreid.data.datasets.image.cuhk03":{CUHK03:[5,1,1,""]},"torchreid.data.datasets.image.dukemtmcreid":{DukeMTMCreID:[5,1,1,""]},"torchreid.data.datasets.image.grid":{GRID:[5,1,1,""]},"torchreid.data.datasets.image.ilids":{iLIDS:[5,1,1,""]},"torchreid.data.datasets.image.market1501":{Market1501:[5,1,1,""]},"torchreid.data.datasets.image.msmt17":{MSMT17:[5,1,1,""]},"torchreid.data.datasets.image.prid":{PRID:[5,1,1,""]},"torchreid.data.datasets.image.sensereid":{SenseReID:[5,1,1,""]},"torchreid.data.datasets.image.viper":{VIPeR:[5,1,1,""]},"torchreid.data.datasets.video":{dukemtmcvidreid:[5,0,0,"-"],ilidsvid:[5,0,0,"-"],mars:[5,0,0,"-"],prid2011:[5,0,0,"-"]},"torchreid.data.datasets.video.dukemtmcvidreid":{DukeMTMCVidReID:[5,1,1,""]},"torchreid.data.datasets.video.ilidsvid":{iLIDSVID:[5,1,1,""]},"torchreid.data.datasets.video.mars":{Mars:[5,1,1,""]},"torchreid.data.datasets.video.mars.Mars":{combine_all:[5,3,1,""]},"torchreid.data.datasets.video.prid2011":{PRID2011:[5,1,1,""]},"torchreid.data.sampler":{RandomIdentitySampler:[5,1,1,""],build_train_sampler:[5,4,1,""]},"torchreid.data.transforms":{ColorAugmentation:[5,1,1,""],Random2DTranslation:[5,1,1,""],RandomErasing:[5,1,1,""],build_transforms:[5,4,1,""]},"torchreid.engine.engine":{Engine:[6,1,1,""]},"torchreid.engine.engine.Engine":{run:[6,3,1,""],test:[6,3,1,""],train:[6,3,1,""]},"torchreid.engine.image.softmax":{ImageSoftmaxEngine:[6,1,1,""]},"torchreid.engine.image.softmax.ImageSoftmaxEngine":{train:[6,3,1,""]},"torchreid.engine.image.triplet":{ImageTripletEngine:[6,1,1,""]},"torchreid.engine.image.triplet.ImageTripletEngine":{train:[6,3,1,""]},"torchreid.engine.video.softmax":{VideoSoftmaxEngine:[6,1,1,""]},"torchreid.engine.video.triplet":{VideoTripletEngine:[6,1,1,""]},"torchreid.losses":{cross_entropy_loss:[7,0,0,"-"],hard_mine_triplet_loss:[7,0,0,"-"]},"torchreid.losses.cross_entropy_loss":{CrossEntropyLoss:[7,1,1,""]},"torchreid.losses.cross_entropy_loss.CrossEntropyLoss":{forward:[7,3,1,""]},"torchreid.losses.hard_mine_triplet_loss":{TripletLoss:[7,1,1,""]},"torchreid.losses.hard_mine_triplet_loss.TripletLoss":{forward:[7,3,1,""]},"torchreid.metrics":{accuracy:[8,0,0,"-"],distance:[8,0,0,"-"],rank:[8,0,0,"-"]},"torchreid.metrics.accuracy":{accuracy:[8,4,1,""]},"torchreid.metrics.distance":{compute_distance_matrix:[8,4,1,""],cosine_distance:[8,4,1,""],euclidean_squared_distance:[8,4,1,""]},"torchreid.metrics.rank":{evaluate_rank:[8,4,1,""]},"torchreid.models":{__init__:[9,0,0,"-"]},"torchreid.models.__init__":{build_model:[9,4,1,""],show_avai_models:[9,4,1,""]},"torchreid.models.densenet":{DenseNet:[9,1,1,""]},"torchreid.models.hacnn":{HACNN:[9,1,1,""]},"torchreid.models.inceptionresnetv2":{InceptionResNetV2:[9,1,1,""]},"torchreid.models.inceptionv4":{InceptionV4:[9,1,1,""]},"torchreid.models.mlfn":{MLFN:[9,1,1,""]},"torchreid.models.mobilenetv2":{MobileNetV2:[9,1,1,""]},"torchreid.models.mudeep":{MuDeep:[9,1,1,""]},"torchreid.models.nasnet":{NASNetAMobile:[9,1,1,""]},"torchreid.models.pcb":{PCB:[9,1,1,""]},"torchreid.models.resnet":{ResNet:[9,1,1,""]},"torchreid.models.resnetmid":{ResNetMid:[9,1,1,""]},"torchreid.models.resnext":{ResNeXt:[9,1,1,""]},"torchreid.models.senet":{SENet:[9,1,1,""]},"torchreid.models.shufflenet":{ShuffleNet:[9,1,1,""]},"torchreid.models.squeezenet":{SqueezeNet:[9,1,1,""]},"torchreid.models.xception":{Xception:[9,1,1,""]},"torchreid.optim":{lr_scheduler:[10,0,0,"-"],optimizer:[10,0,0,"-"]},"torchreid.optim.lr_scheduler":{build_lr_scheduler:[10,4,1,""]},"torchreid.optim.optimizer":{build_optimizer:[10,4,1,""]},"torchreid.utils":{avgmeter:[11,0,0,"-"],loggers:[11,0,0,"-"],model_complexity:[11,0,0,"-"],reidtools:[11,0,0,"-"],tools:[11,0,0,"-"],torchtools:[11,0,0,"-"]},"torchreid.utils.avgmeter":{AverageMeter:[11,1,1,""]},"torchreid.utils.loggers":{Logger:[11,1,1,""],RankLogger:[11,1,1,""]},"torchreid.utils.loggers.RankLogger":{show_summary:[11,3,1,""],write:[11,3,1,""]},"torchreid.utils.model_complexity":{compute_model_complexity:[11,4,1,""]},"torchreid.utils.reidtools":{visualize_ranked_results:[11,4,1,""]},"torchreid.utils.tools":{check_isfile:[11,4,1,""],download_url:[11,4,1,""],mkdir_if_missing:[11,4,1,""],read_image:[11,4,1,""],read_json:[11,4,1,""],write_json:[11,4,1,""]},"torchreid.utils.torchtools":{count_num_param:[11,4,1,""],load_checkpoint:[11,4,1,""],load_pretrained_weights:[11,4,1,""],open_all_layers:[11,4,1,""],open_specified_layers:[11,4,1,""],resume_from_checkpoint:[11,4,1,""],save_checkpoint:[11,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method","4":"py:function"},terms:{"0b56ofsrvi8hubvjltzkwv2vaowm":5,"10x":8,"500k":[2,5],"50x":9,"abstract":5,"case":[2,5],"class":[5,6,7,9,11,12],"default":[2,4,5,6,7,8,9,10,11,12],"float":[5,6,7,10,11],"function":[5,6,7,8,9,10,11,12],"import":[4,5,6,7,8,9,11,12],"int":[5,6,7,8,9,10,11,12],"new":[2,5,6,10,12],"public":[2,4,5,9,12],"return":[5,8,9,11],"super":12,"true":[2,4,5,6,7,8,9,10,11,12],"while":[3,5,6,10,11,12],Added:4,For:[4,8,12],IDs:5,NAS:9,Not:0,One:[0,5],Such:5,The:[2,3,4,6,9,12],With:7,__future__:12,__getitem__:5,__init__:[5,9,12],_extract_featur:6,_parse_data_for_ev:6,aaai:9,absolut:12,absolute_import:12,abspath:12,access:4,accordingli:2,accuraci:[9,11],accv:5,across:0,activ:[2,4,5],actual:[11,12],adam:[4,6,10],adam_beta1:10,adam_beta2:10,adapt:0,add:[4,5],added:4,addit:2,adopt:[2,12],advanc:4,after:11,aggreg:9,alexnet:9,all:[5,11,12],allow:10,also:[2,4,10,12],alter:5,analysi:[5,11],andrea:4,anoth:12,app:4,appear:5,appli:[7,12],approach:0,architectur:[7,9],area:5,arg:11,argument:[2,3,12],arrai:8,art:4,articl:4,arxiv:[4,7,9],aspect:5,associ:5,asterisk:1,attent:[0,9],attribut:[2,6,10],augment:[1,5],author:4,autom:2,automat:[2,4,11,12],avail:9,averag:6,averagemet:11,avg:6,avgmet:11,avoid:12,awar:0,back:[0,12],backbon:0,background:5,base:[0,5,9,10,12],base_lr_mult:[10,12],base_width:9,baselin:[5,9],basic:12,batch:[4,5,6],batch_siz:[4,5,6,7,8,11,12],batchnorm:12,bbox_test:2,bbox_train:2,becaus:3,been:[4,6,12],befor:[5,6,7,12],begin:7,below:[2,12],benchmark:5,besid:2,best:11,beta:10,between:6,beyond:9,bilinear:5,bischof:[2,5],blob:[7,11],block:9,block_config:9,bmvc:5,bn_size:9,bodi:5,bool:[5,6,7,8,9,10,11],both:[2,4,5,6,11],bottleneck:9,bottom:0,bounding_box_test:2,bounding_box_train:2,bridg:5,build:[4,5,9,10],build_lr_schedul:[4,6,10,12],build_model:[4,6,9,11,12],build_optim:[4,6,10,12],build_train_sampl:5,build_transform:5,built:[4,10],call:[2,6],cam_a:2,cam_b:2,camera:[0,3,5,8,12],camid:[5,11,12],campu:2,can:[0,1,2,3,4,8,10,11,12],captur:[5,8],cavallaro:4,ccloi:[2,5],chang:[2,9],channel:[5,9],check:[5,11],check_before_run:5,check_isfil:11,checkpoint:[11,12],choic:[5,6],chollet:9,cite:4,classic:[3,5,6,8],classif:[1,5,10,11,12],classifi:[10,11,12],click:1,clone:4,cluster:0,cmc:[2,6,8],code:[0,2,4,6,8,12],collect:0,color:5,color_aug:5,color_jitt:5,coloraugment:5,com:[2,4,5,7,11],combin:5,combine_al:5,combineal:[5,6,12],common:12,comparison:2,complex:[4,11],comput:[1,2,4,6,7,8,11],compute_distance_matrix:8,compute_model_complex:[11,12],connect:9,consid:[5,11],consist:0,consol:11,constant:10,construct:[11,12],contain:[3,5,6,7,8,11,12],conveni:11,convolut:[9,11],convolutionalneur:5,copi:11,correl:5,correspond:5,cosin:8,cosine_dist:8,count:[6,11,12],count_num_param:11,cpu:[5,6],creat:[2,4,11],crf:0,crop:5,cross:[4,7,9],cross_entropy_loss:7,crossentropyloss:7,cuda:[4,6],cudatoolkit:4,cuhk01:[3,4,5],cuhk03:[3,4,5,6,8,12],cuhk03_classic_split:[2,5],cuhk03_label:[2,5],cuhk03_new_protocol_config_detect:2,cuhk03_new_protocol_config_label:2,cuhk03_releas:2,cuhk:[2,5],cuhk_identif:[2,5],current:[6,9,10,11],cvpr:[5,6,7,9],cysu:[7,11],cython:8,damag:12,dampen:10,data:[1,2,3,4,6,12],data_sourc:5,dataload:6,datamanag:[2,4,5,6,12],dataset:[6,11],dataset_:5,dataset_dir:[2,5,12],dataset_nam:[6,12],dataset_url:5,deal:11,decai:[6,10],decomposit:5,deep:[0,2,4,5,9,12],deeper:5,deepreid:5,def:12,defaul:5,default_pars:4,defens:7,defin:3,delet:2,denot:[2,7,11,12],dens:9,densenet121:9,densenet121_fc512:[1,9],densenet161:9,densenet169:9,densenet201:9,densenet:[4,9],depend:[4,11,12],deprec:11,depthwis:9,descript:5,desir:5,destin:11,detail:[2,4,6,11,12],detect:[2,5],determin:[10,12],develop:4,deviat:5,devic:[4,7,9],devil:9,dict:[6,11],dictionari:[6,11],differ:[2,10],digit:5,dir:4,directli:[2,3],directori:[2,4,5,6,11],dirnam:11,discard:[11,12],discrimin:5,displai:9,dissect:0,dist_metr:6,distanc:[6,11],distil:0,distmat:[8,11],distractor:[2,5],distractors_500k:2,distrctor:2,divid:3,divis:12,document:4,doing:[2,4,11,12],domain:[0,5,9],done:[3,5,12],download:[1,2,5,11],download_dataset:5,download_url:11,downloads_qmul_ilid:[2,5],downloads_qmul_underground_reid:5,downsample_kernel_s:9,downsample_pad:9,drive:5,drop_rat:9,dropout_p:9,dst:11,duke:2,dukemtmc:[3,4,5,12],dukemtmcreid:[1,5,11,12],dukemtmcvidreid:5,each:[3,5,6,7,8,11,12],easi:[4,12],easili:12,eccv:[5,9],eccvw:5,edu:[2,5],eec:[2,5],effici:9,embed_dim:9,empti:[5,10],enabl:[2,6,8,10,12],enclos:2,end:[0,2,4,6,7,12],engin:4,entropi:[4,7],env:4,environ:4,epoch:[4,6,10,11,12],epsilon:7,equal:5,equat:7,eras:5,estim:[11,12],etc:4,euclidean:[6,8],euclidean_squared_dist:8,eval_freq:[4,6,12],evalu:[2,4,5,6,8,11],evaluate_rank:8,evenli:5,everi:[6,10,11],exampl:[4,5,6,8,9,10,11,12],excit:9,exemplar:0,exist:5,expandus:12,explicitli:5,exploit:[0,5,9],extens:4,extern:11,extra:2,extract:[2,5,11,12],extrem:9,factor:[5,10],factoris:[0,9],fail:2,fair:2,fals:[4,5,6,8,10,11,12],favor:11,fc_dim:9,feat_dim:[7,9],featur:[0,4,5,6,7,8,9,11,12],few:12,fewer:9,file:[2,4,5,11],filter:5,filters_multipli:9,find:[0,4],fine:[3,12],first:5,fix:[3,6],fixbas:6,fixbase_epoch:[6,12],flop:[11,12],folder:2,follow:[2,4],format:[1,5],forth:3,forward:[7,11,12],four:[2,5],fpath:11,frac:7,frequenc:6,from:[0,1,2,3,6,7,8,9,11,12],frozen:[6,11,12],fusion:[5,9],g_camid:8,g_pid:8,galleri:[2,3,5,6,8,11],galleryload:6,gamma:10,gan:[0,5],gap:5,gener:[0,2,3,5,6,12],get:12,get_num_cam:5,get_num_pid:5,git:4,github:[2,4,5,7,11],give:12,given:[5,11],going:5,googl:5,gpu:[4,7,9],gradient:12,gradual:[0,5],grai:5,graph:[11,12],grid:[3,4,5],ground:[7,8],group:[0,5,9],growth_rat:9,guid:[0,2,5],hacnn:[1,4,9],handl:11,hard:[4,6,7],hard_mine_triplet_loss:7,hardwar:[11,12],harm:12,harmoni:[0,9],has:[3,4,5,6,10,12],have:[3,10,12],height:[4,5,6,12],help:2,here:[0,2,12],herman:7,hetero:0,highli:[4,8],highlight:1,hirzer:5,homogen:0,horizont:0,how:[2,5,6,11],howev:[2,12],html:[2,5],http:[2,4,5,7,11],huang:9,human:[0,5],iandola:9,iccv:[5,9],icg:[2,5],idea:12,ident:[3,5,6,8,9,10],identif:[0,4,5,7,9,12],ids:[3,5,12],ignor:[1,11,12],ilid:[3,4,5],ilidsvid:5,imag:[0,9,11,12],imagedatamanag:[2,3,4,5,6,12],imagedataset:[5,12],imagenet:5,images_detect:2,images_label:2,imagesoftmaxengin:[4,6,12],imagetripletengin:[6,12],img:5,img_path:[5,11,12],impact:9,implement:[4,6,11,12],improv:5,incept:[4,7,9],inceptionresnetv2:9,inceptionv4:9,includ:[4,12],incompat:11,incred:4,index:[4,5,7],infer:[11,12],info:2,inform:5,inherit:12,init_image_dataset:5,init_video_dataset:5,initi:[2,5,10,11,12],inplan:9,input1:8,input2:8,input:[1,5,7,11,12],input_3x3:9,input_s:11,instal:8,instanc:[5,6,8,9],instanti:12,institut:[2,5],instruct:4,integ:10,intens:5,interpol:5,intuit:12,invari:0,invert:9,is_best:11,jason:2,jitter:5,join:[11,12],journal:4,json:[2,11],just:12,kaiyang:4,kaiyangzh:4,keep:[3,6,11,12],kei:[2,5,9,11],krizhevski:5,kroneck:0,kwarg:[5,9,12],kz303:2,label:[2,4,5,6,7,8],label_smooth:[4,6,7],larg:[5,12],last:5,last_strid:9,layer:[1,6,9,10,11],layumi:5,lead:5,learn:[0,4,5,6,9,10],learn_region:9,level:[0,9],liangzheng06:2,liangzheng:[2,5],librari:4,lid:2,lids_pedestrian:2,like:[2,12],linear:[9,11],link:[0,2],list:[5,6,8,10,11,12],list_galleri:2,list_queri:2,list_train:2,list_val:2,load:[2,4,9,11,12],load_checkpoint:11,load_pretrained_weight:[11,12],log:[4,6,11,12],log_nam:11,loi:5,longtensor:[7,8],look:2,loss:[1,6,9,11,12],loss_valu:11,lr_schedul:[4,6,10],lrs:[2,5],lrschedul:6,machin:4,main:4,manag:[4,12],manduchi:2,mani:5,manual:2,map:[1,2],mar:[3,4,5,6],margin:[6,7],market1501:[1,3,4,5,6,11,12],market1501_500k:[2,4,5,12],market:[2,4],master:[2,7,11],mat:2,match:[0,2,9,11],matrix:[6,7,8,11],matter:0,max:[4,5,6],max_epoch:[4,6,12],max_rank:8,maximum:[6,8],mean:[1,2,5,6,8,11,12],measur:5,memori:0,metadata:2,method:[2,4,10,11,12],metric:[2,5,6],mid:[4,9],middl:9,might:12,min:5,min_seq_len:5,mine:[4,6,7],minibatch:11,miss:[0,11],mkdir_if_miss:11,mlfn:[1,4,9],mobil:9,mobilenetv2:[4,9],mobilenetv2_1dot0:[1,9],mobilenetv2_1dot4:[1,9],mode:[2,5,12],model:[0,3,5,6,10,11],model_complex:[11,12],model_s:11,modifi:[2,4],modul:[4,6,9,10,11,12],momentum:10,more:[2,4,6,8,12],most:4,msmt17:[1,3,4,5,12],msmt17_v1:2,msmt17_v2:2,mudeep:[4,9],multi:[0,4,5,9],multi_shot:2,multi_step:10,multilabel:0,multipl:[0,5,10,11],multipli:10,multiscal:9,must:6,mutual:0,my_model:11,name:[2,4,5,6,9,10,11,12],nasnet:[4,9],nasnetamobil:9,nchannel:9,ndarrai:[8,11],necessari:6,need:[2,4,5,6,12],neg:7,nesterov:10,net:[0,5,9,11],network:[0,5,9,11],neural:[5,9,11],new_dataset:[5,12],new_lay:[10,12],newdataset:[5,12],nip:5,node:5,none:[5,6,9,11],nonlinear:9,norm_mean:5,norm_std:5,normal:[0,5,6,7,10],normalize_featur:6,note:[3,11,12],now:10,num_class:[4,6,7,8,9,11,12],num_galleri:[8,11],num_group:9,num_init_featur:9,num_inst:[5,6],num_param:[11,12],num_queri:[8,11],num_train_cam:5,num_train_pid:[4,5,6],number:[1,5,6,7,9,11,12],numpi:[8,11],obj:11,obtain:11,offici:4,old:2,omni:4,onc:0,one:[3,6,12],onli:[1,2,3,5,6,11,12],only_conv_linear:[11,12],open:[6,7,11,12],open_all_lay:11,open_lay:[6,11,12],open_specified_lay:11,oper:5,optim:[4,6,9,11],option:[5,6,7,8,9,10,11],org:[2,5],organ:2,origin:[2,5],osp:[11,12],other:[3,5,11,12],otherwis:[1,2],out:4,output:[8,11],over:8,pair:5,paper:[0,4],param:1,paramet:[5,6,7,8,9,10,11,12],paranthes:2,parent:2,pars:[0,5],parse_data:5,parser:4,part:9,patch:5,path:[2,4,5,6,11,12],pcb:[4,9],pcb_p4:9,pcb_p6:9,penalti:10,penultimate_filt:9,peopl:[2,5],per:5,perform:[5,6,11,12],person:[0,2,4,5,6,7,8,9,11,12],pet:5,pid:[5,11,12],pil:[5,11],pip:4,pipelin:6,pkuvmc:[2,5],place:[2,5],pleas:[2,3,4,6,12],png:5,pool:[6,9],pooling_method:6,pose:0,posit:7,practic:12,pre:0,predefin:[3,5],predict:[7,8],prefer:4,prepar:[2,4],prepare_split:5,preprint:4,present:[1,12],pretrain:[4,9,10,11,12],pretrian:11,prevent:12,prid11:[2,5],prid2011:[3,4,5],prid:[3,4,5],prid_2011:2,print:6,print_freq:[4,6,12],print_frequ:6,print_funct:12,probabl:5,probe:2,process:2,product:0,project:[2,5],project_mar:[2,5],project_reid:[2,5],promot:0,propag:12,proper:4,protocol:[2,4],provid:[2,4,5,11,12],pth:[11,12],purpos:5,put:2,pyramid:0,python2:[4,11],python3:[4,11],python:4,pytorch:4,q_camid:8,q_pid:8,qian:9,qmul:[4,5],queri:[2,3,5,6,8,11],queryload:6,rand:8,random2dtransl:[1,5],random:[0,3,5],random_eras:5,randomeras:5,randomhorizontalflip:1,randomidentitysampl:[5,6,12],randomli:[3,5,10,12],randomsampl:[5,12],rang:6,rank1:11,rank:[1,2,4,5,6,11],ranklogg:11,rate:[6,10],rather:[11,12],ratio:5,reacquisit:5,read:11,read_imag:11,read_json:11,rebuild:4,recognit:[5,9],recommend:[6,8],record:11,reduc:7,reduced_dim:9,reduct:9,redund:[11,12],refer:[2,3,4,5,6,7,9,12],refin:9,regard:[2,12],region:5,regist:[5,12],register_image_dataset:[5,12],register_video_dataset:5,regular:[6,7],reid:[5,6,7,12],reid_evalu:5,reidentif:5,reidtool:11,relat:0,releas:4,relu:[9,12],remov:11,remove_module_from_kei:11,repo:4,report:[2,4],repres:5,represent:9,requir:[4,5,8],required_fil:5,rerank:6,research:[0,2,4,5],residu:9,resiz:5,resnet101:9,resnet152:9,resnet18:9,resnet34:9,resnet50:[1,4,6,9,11,12],resnet50_fc512:[1,9],resnet50mid:[1,9],resnet:[4,9],resnetmid:9,resnext101:9,resnext50:9,resnext50_32x4d:9,resnext50_32x4d_fc512:9,resnext:[4,9],resolut:0,resourc:0,result:[1,2,4,5,6,11],resum:11,resume_from_checkpoint:[11,12],rethink:7,retriev:[0,9],return_dataload:5,return_testdataset_by_nam:5,revisit:0,rgb:5,ristani:5,rmsprop:10,rmsprop_alpha:10,robust:0,roll:0,root:[2,4,5,6,12],run:[4,6,11,12],sai:[10,12],same:[3,5,12],sampl:[5,6],sample_method:5,sandler:9,save:[2,4,6,11,12],save_checkpoint:11,save_dir:[4,6,11,12],scalabl:[5,9],scale:[4,5,9],schedul:[4,6],scia:5,scope:12,scratch:1,script:4,se_resnet101:9,se_resnet152:9,se_resnet50:9,se_resnet50_fc512:[1,9],se_resnext101_32x4d:9,se_resnext50_32x4d:9,search:9,section:[2,12],see:[2,11,12],select:4,self:[6,11,12],semant:0,senet154:9,senet:[4,9],sensereid:[3,4,5],separ:9,seq_len:[5,6],sequenc:2,set:[2,3,5,6,8,11,12],setup:[2,4],sgd:[10,12],sgd_dampen:10,sgd_nesterov:10,shape:[5,7,8,11],share:[3,12],shot:[0,2,5,6,8],should:[2,3,5,6,8,10,12],show:[5,11],show_avai_model:[9,12],show_summari:[5,11],shuffl:0,shufflenet:[1,4,9],similar:[0,3],simpli:12,singl:[2,3,5,6,8],single_shot:2,single_step:[4,6,10],size:[1,4,5,8,9,10,11],smaller:[10,12],smooth:[4,6,7,10],soe:[2,5],soft:0,softmax:[1,4,6,9,11],some:[2,12],some_argu:6,someth:0,sourc:[2,4,5,6,7,8,9,10,11,12],spatial:0,specif:[2,5,12],specifi:[1,2,8,11,12],speed:8,spindl:5,split:[2,3,5,6,8],split_id:[3,5],splits_classic_detect:2,splits_classic_label:2,splits_new_detect:2,splits_new_label:2,splits_prid2011:2,squar:8,squeez:9,squeezenet1_0:9,squeezenet1_0_fc512:[1,9],squeezenet1_1:9,squeezenet:[4,9],staged_lr:[10,12],standard:[2,4,5],start:[3,6],start_epoch:[6,11,12],start_ev:6,state:[4,11],state_dict:11,statist:5,stdout:11,stem_filt:9,step:[10,11],stepsiz:[4,6,10],stepwis:[0,5],store:[2,11],str:[5,6,8,9,10,11,12],strategi:12,string:5,strip:9,strong:9,structur:2,style:0,sub:3,subclass:[5,6],submit:0,subset:12,suggest:[2,12],suit:[4,6],summar:11,summari:11,sun:9,superscript:2,support:[2,4,9,10,11],suppos:[2,12],sys:[11,12],szegedi:[7,9],take:[5,10],tao:4,tar:[11,12],target:[0,5,6,7,8,11,12],team:[2,5],tech:4,techniqu:4,templat:12,tempor:0,tensor:[7,8],test:[2,3,4,5,6,11],test_galleri:2,test_onli:[4,6,12],test_prob:2,testload:[5,6],text:11,tgz:2,than:[2,8,11,12],them:2,theoret:[11,12],thi:[2,4,5,6,8,11,12],three:12,threshold:2,thu:[3,5],time:[3,6,7,11,12],titl:4,tool:12,top:[6,8,11,12],topk:[8,11],torch:[6,7,8],torchreid:[2,3,12],torchtool:11,torchvis:4,total:3,track:[0,5],tracklet:[5,6],train:[0,1,2,3,4,5,6,9,10,11],train_sampl:[5,6,12],trainload:[5,6],transfer:[5,9],transform:9,translat:5,tree:2,triplet:[4,6,9,12],tripletloss:7,truth:[7,8],tugraz:[2,5],tune:12,tupl:[5,8,11,12],two:[2,3,5],txt:[2,4],type:[8,11],typic:12,ucsc:[2,5],under:[2,3,8,12],underground_reid:2,unicodedecodeerror:11,unifi:6,unknown:[0,5],unlabel:5,unless:1,unmatch:11,unsupervis:0,unzip:2,updat:11,url:[5,11],use:[2,5,6,7,8,9,10,12],use_cpu:[5,6],use_cython:8,use_gpu:[7,9],use_metric_cuhk03:[2,6,8],used:[1,2,3,4,5,6,11,12],useful:4,user:2,uses:[6,10],using:[2,3,4,6,8,11,12],util:12,v15:2,valu:[5,8,10,11],vari:3,vector:6,verbos:[5,11,12],version:[4,5,9],via:0,vid:[3,4,5],vid_reid_dataset:[2,5],video:[0,11,12],videodatamanag:[3,5,6],videodataset:[5,12],videoreid:[3,4,5],videosoftmaxengin:[6,12],videotripletengin:[6,12],vidreid:2,view:[3,5,8],viewpoint:0,viper:[3,4,5],vision:[2,5,7],visrank:[6,12],visrank_topk:[6,12],visual:[4,6,11],visualize_ranked_result:11,vitro:5,wai:2,walk:0,wang:5,wanna:[2,4],want:[10,12],wei:5,weight:[1,6,7,9,10,11],weight_decai:10,weight_path:[11,12],weight_t:6,weight_x:6,welcom:0,well:11,what:[2,12],whatev:12,when:[1,2,6,7,8,10,11,12],where:[5,7,12],whether:[6,7,9,11],which:[2,6,8,11,12],whose:2,width:[4,5,6,9,12],width_mult:9,within:12,without:4,work:4,worker:5,worth:12,would:12,wrapper:[8,9,10],write:[11,12],write_json:11,www:[2,5],xception:[4,9],xgwang:[2,5],xiang:4,xiatian:[2,5],xie:9,yang:4,year:4,yml:4,yongxin:4,you:[0,2,4,10,11,12],your:4,yourself:2,zhang:9,zhao:5,zheng:5,zhong:[5,6],zhou2019osnet:4,zhou:4,zhunzhong07:5,zip:2,zoph:9},titles:["Awesome-ReID","Model Zoo","Datasets","Evaluation","Torchreid","torchreid.data","torchreid.engine","torchreid.losses","torchreid.metrics","torchreid.models","torchreid.optim","torchreid.utils","How-to"],titleterms:{"new":4,Use:12,aaai:0,accuraci:8,arxiv:0,avail:12,averag:11,awesom:0,base:6,chang:12,choos:12,citat:4,classif:[4,9],combin:12,complex:12,comput:12,conda:4,confer:0,cross:12,cuhk01:2,cuhk03:2,cvpr:0,dagger:2,data:5,dataset:[2,4,5,12],design:12,differ:12,distanc:8,dukemtmc:2,dukemtmcreid:2,dukemtmcvidreid:2,eccv:0,engin:[6,12],evalu:[3,12],find:12,galleri:12,gener:11,get:4,grid:2,how:12,ilid:2,ilidsvid:2,imag:[2,3,4,5,6],imagenet:[4,9],indic:4,instal:4,interfac:[4,9],kei:12,layer:12,learn:12,lightweight:[4,9],logger:11,loss:[4,7],lr_schedul:12,manag:5,mar:2,market1501:2,meter:11,metric:8,model:[1,4,9,12],msmt17:2,multipl:12,neurip:0,optim:[10,12],option:4,own:12,prid2011:2,prid:2,qmul:2,queri:12,rank:[8,12],rate:12,reid:[0,2,3,4,9,11],result:12,resum:12,sampler:[5,12],schedul:10,second:4,sensereid:2,show:12,softmax:7,specif:[4,9],start:4,step:12,tabl:4,test:12,tool:11,torch:11,torchreid:[4,5,6,7,8,9,10,11],train:12,transfer:12,transform:5,triplet:7,two:12,unifi:4,util:11,vid:2,video:[2,3,4,5,6],videoreid:2,viper:2,visual:12,your:12,zoo:1}}) \ No newline at end of file +Search.setIndex({docnames:["AWESOME_REID","MODEL_ZOO","datasets","evaluation","index","pkg/data","pkg/engine","pkg/losses","pkg/metrics","pkg/models","pkg/optim","pkg/utils","user_guide"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:55},filenames:["AWESOME_REID.md","MODEL_ZOO.md","datasets.rst","evaluation.rst","index.rst","pkg/data.rst","pkg/engine.rst","pkg/losses.rst","pkg/metrics.rst","pkg/models.rst","pkg/optim.rst","pkg/utils.rst","user_guide.rst"],objects:{"torchreid.data":{datamanager:[5,0,0,"-"],sampler:[5,0,0,"-"],transforms:[5,0,0,"-"]},"torchreid.data.datamanager":{DataManager:[5,1,1,""],ImageDataManager:[5,1,1,""],VideoDataManager:[5,1,1,""]},"torchreid.data.datamanager.DataManager":{num_train_cams:[5,2,1,""],num_train_pids:[5,2,1,""],return_dataloaders:[5,3,1,""],return_testdataset_by_name:[5,3,1,""]},"torchreid.data.datasets":{__init__:[5,0,0,"-"],dataset:[5,0,0,"-"]},"torchreid.data.datasets.__init__":{init_image_dataset:[5,4,1,""],init_video_dataset:[5,4,1,""],register_image_dataset:[5,4,1,""],register_video_dataset:[5,4,1,""]},"torchreid.data.datasets.dataset":{Dataset:[5,1,1,""],ImageDataset:[5,1,1,""],VideoDataset:[5,1,1,""]},"torchreid.data.datasets.dataset.Dataset":{check_before_run:[5,3,1,""],combine_all:[5,3,1,""],download_dataset:[5,3,1,""],get_num_cams:[5,3,1,""],get_num_pids:[5,3,1,""],parse_data:[5,3,1,""],show_summary:[5,3,1,""]},"torchreid.data.datasets.dataset.ImageDataset":{show_summary:[5,3,1,""]},"torchreid.data.datasets.dataset.VideoDataset":{show_summary:[5,3,1,""]},"torchreid.data.datasets.image":{cuhk01:[5,0,0,"-"],cuhk03:[5,0,0,"-"],dukemtmcreid:[5,0,0,"-"],grid:[5,0,0,"-"],ilids:[5,0,0,"-"],market1501:[5,0,0,"-"],msmt17:[5,0,0,"-"],prid:[5,0,0,"-"],sensereid:[5,0,0,"-"],viper:[5,0,0,"-"]},"torchreid.data.datasets.image.cuhk01":{CUHK01:[5,1,1,""]},"torchreid.data.datasets.image.cuhk01.CUHK01":{prepare_split:[5,3,1,""]},"torchreid.data.datasets.image.cuhk03":{CUHK03:[5,1,1,""]},"torchreid.data.datasets.image.dukemtmcreid":{DukeMTMCreID:[5,1,1,""]},"torchreid.data.datasets.image.grid":{GRID:[5,1,1,""]},"torchreid.data.datasets.image.ilids":{iLIDS:[5,1,1,""]},"torchreid.data.datasets.image.market1501":{Market1501:[5,1,1,""]},"torchreid.data.datasets.image.msmt17":{MSMT17:[5,1,1,""]},"torchreid.data.datasets.image.prid":{PRID:[5,1,1,""]},"torchreid.data.datasets.image.sensereid":{SenseReID:[5,1,1,""]},"torchreid.data.datasets.image.viper":{VIPeR:[5,1,1,""]},"torchreid.data.datasets.video":{dukemtmcvidreid:[5,0,0,"-"],ilidsvid:[5,0,0,"-"],mars:[5,0,0,"-"],prid2011:[5,0,0,"-"]},"torchreid.data.datasets.video.dukemtmcvidreid":{DukeMTMCVidReID:[5,1,1,""]},"torchreid.data.datasets.video.ilidsvid":{iLIDSVID:[5,1,1,""]},"torchreid.data.datasets.video.mars":{Mars:[5,1,1,""]},"torchreid.data.datasets.video.mars.Mars":{combine_all:[5,3,1,""]},"torchreid.data.datasets.video.prid2011":{PRID2011:[5,1,1,""]},"torchreid.data.sampler":{RandomIdentitySampler:[5,1,1,""],build_train_sampler:[5,4,1,""]},"torchreid.data.transforms":{ColorAugmentation:[5,1,1,""],Random2DTranslation:[5,1,1,""],RandomErasing:[5,1,1,""],build_transforms:[5,4,1,""]},"torchreid.engine.engine":{Engine:[6,1,1,""]},"torchreid.engine.engine.Engine":{run:[6,3,1,""],test:[6,3,1,""],train:[6,3,1,""]},"torchreid.engine.image.softmax":{ImageSoftmaxEngine:[6,1,1,""]},"torchreid.engine.image.softmax.ImageSoftmaxEngine":{train:[6,3,1,""]},"torchreid.engine.image.triplet":{ImageTripletEngine:[6,1,1,""]},"torchreid.engine.image.triplet.ImageTripletEngine":{train:[6,3,1,""]},"torchreid.engine.video.softmax":{VideoSoftmaxEngine:[6,1,1,""]},"torchreid.engine.video.triplet":{VideoTripletEngine:[6,1,1,""]},"torchreid.losses":{cross_entropy_loss:[7,0,0,"-"],hard_mine_triplet_loss:[7,0,0,"-"]},"torchreid.losses.cross_entropy_loss":{CrossEntropyLoss:[7,1,1,""]},"torchreid.losses.cross_entropy_loss.CrossEntropyLoss":{forward:[7,3,1,""]},"torchreid.losses.hard_mine_triplet_loss":{TripletLoss:[7,1,1,""]},"torchreid.losses.hard_mine_triplet_loss.TripletLoss":{forward:[7,3,1,""]},"torchreid.metrics":{accuracy:[8,0,0,"-"],distance:[8,0,0,"-"],rank:[8,0,0,"-"]},"torchreid.metrics.accuracy":{accuracy:[8,4,1,""]},"torchreid.metrics.distance":{compute_distance_matrix:[8,4,1,""],cosine_distance:[8,4,1,""],euclidean_squared_distance:[8,4,1,""]},"torchreid.metrics.rank":{evaluate_rank:[8,4,1,""]},"torchreid.models":{__init__:[9,0,0,"-"]},"torchreid.models.__init__":{build_model:[9,4,1,""],show_avai_models:[9,4,1,""]},"torchreid.models.densenet":{DenseNet:[9,1,1,""]},"torchreid.models.hacnn":{HACNN:[9,1,1,""]},"torchreid.models.inceptionresnetv2":{InceptionResNetV2:[9,1,1,""]},"torchreid.models.inceptionv4":{InceptionV4:[9,1,1,""]},"torchreid.models.mlfn":{MLFN:[9,1,1,""]},"torchreid.models.mobilenetv2":{MobileNetV2:[9,1,1,""]},"torchreid.models.mudeep":{MuDeep:[9,1,1,""]},"torchreid.models.nasnet":{NASNetAMobile:[9,1,1,""]},"torchreid.models.pcb":{PCB:[9,1,1,""]},"torchreid.models.resnet":{ResNet:[9,1,1,""]},"torchreid.models.resnetmid":{ResNetMid:[9,1,1,""]},"torchreid.models.senet":{SENet:[9,1,1,""]},"torchreid.models.shufflenet":{ShuffleNet:[9,1,1,""]},"torchreid.models.shufflenetv2":{ShuffleNetV2:[9,1,1,""]},"torchreid.models.squeezenet":{SqueezeNet:[9,1,1,""]},"torchreid.models.xception":{Xception:[9,1,1,""]},"torchreid.optim":{lr_scheduler:[10,0,0,"-"],optimizer:[10,0,0,"-"]},"torchreid.optim.lr_scheduler":{build_lr_scheduler:[10,4,1,""]},"torchreid.optim.optimizer":{build_optimizer:[10,4,1,""]},"torchreid.utils":{avgmeter:[11,0,0,"-"],loggers:[11,0,0,"-"],model_complexity:[11,0,0,"-"],reidtools:[11,0,0,"-"],tools:[11,0,0,"-"],torchtools:[11,0,0,"-"]},"torchreid.utils.avgmeter":{AverageMeter:[11,1,1,""]},"torchreid.utils.loggers":{Logger:[11,1,1,""],RankLogger:[11,1,1,""]},"torchreid.utils.loggers.RankLogger":{show_summary:[11,3,1,""],write:[11,3,1,""]},"torchreid.utils.model_complexity":{compute_model_complexity:[11,4,1,""]},"torchreid.utils.reidtools":{visualize_ranked_results:[11,4,1,""]},"torchreid.utils.tools":{check_isfile:[11,4,1,""],collect_env_info:[11,4,1,""],download_url:[11,4,1,""],mkdir_if_missing:[11,4,1,""],read_image:[11,4,1,""],read_json:[11,4,1,""],write_json:[11,4,1,""]},"torchreid.utils.torchtools":{count_num_param:[11,4,1,""],load_checkpoint:[11,4,1,""],load_pretrained_weights:[11,4,1,""],open_all_layers:[11,4,1,""],open_specified_layers:[11,4,1,""],resume_from_checkpoint:[11,4,1,""],save_checkpoint:[11,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method","4":"py:function"},terms:{"0b56ofsrvi8hubvjltzkwv2vaowm":5,"10x":8,"500k":[2,5],"50x":9,"abstract":5,"case":[2,5],"class":[5,6,7,9,11,12],"default":[2,4,5,6,7,8,9,10,11,12],"float":[5,6,7,10,11],"function":[5,6,7,8,9,10,11,12],"import":[4,5,6,7,8,9,11,12],"int":[5,6,7,8,9,10,11,12],"new":[2,5,6,10,12],"public":[2,4,5,9,12],"return":[5,8,9,11],"super":12,"true":[2,4,5,6,7,8,9,10,11,12],"while":[3,5,6,10,11,12],Added:4,For:[4,8,12],IDs:5,NAS:9,Not:0,One:[0,5],Such:5,The:[2,3,4,6,9,12],With:7,__future__:12,__getitem__:5,__init__:[5,9,12],_extract_featur:6,_parse_data_for_ev:6,aaai:9,absolut:12,absolute_import:12,abspath:12,access:4,accordingli:2,accuraci:[9,11],accv:5,across:0,activ:[2,4,5],actual:[11,12],adam:[4,6,10],adam_beta1:10,adam_beta2:10,adapt:0,add:[4,5],added:4,addit:2,adopt:[2,12],advanc:4,after:11,aggreg:9,alexnet:9,all:[5,11,12],allow:10,also:[2,4,10,12],alter:5,analysi:[5,11],andrea:4,anoth:12,app:4,appear:5,appli:[7,12],approach:0,architectur:[7,9],area:5,arg:11,argument:[2,3,12],arrai:8,art:4,articl:4,arxiv:[4,7,9],aspect:5,associ:5,asterisk:1,attent:[0,9],attribut:[2,6,10],augment:[1,5],author:4,autom:2,automat:[2,4,11,12],avail:9,averag:6,averagemet:11,avg:6,avgmet:11,avoid:12,awar:0,back:[0,12],backbon:0,background:5,base:[0,5,9,10,12],base_lr_mult:[10,12],baselin:[5,9],basic:12,batch:[4,5,6],batch_siz:[4,5,6,7,8,11,12],batchnorm:12,bbox_test:2,bbox_train:2,becaus:3,been:[4,6,12],befor:[5,6,7,12],begin:7,below:[2,12],benchmark:[5,11],besid:2,best:11,beta:10,between:6,beyond:9,bilinear:5,bischof:[2,5],blob:[7,11],block:9,block_config:9,bmvc:5,bn_size:9,bodi:5,bool:[5,6,7,8,9,10,11],both:[2,4,5,6,11],bottleneck:9,bottom:0,bounding_box_test:2,bounding_box_train:2,bridg:5,build:[4,5,9,10],build_lr_schedul:[4,6,10,12],build_model:[4,6,9,11,12],build_optim:[4,6,10,12],build_train_sampl:5,build_transform:5,built:[4,10],call:[2,6],cam_a:2,cam_b:2,camera:[0,3,5,8,12],camid:[5,11,12],campu:2,can:[0,1,2,3,4,8,10,11,12],captur:[5,8],cavallaro:4,ccloi:[2,5],chang:[2,9],channel:[5,9],check:[5,11],check_before_run:5,check_isfil:11,checkpoint:[11,12],choic:[5,6],chollet:9,cite:4,classic:[3,5,6,8],classif:[1,5,10,11,12],classifi:[10,11,12],click:1,clone:4,cluster:0,cmc:[2,6,8],cnn:9,code:[0,2,4,6,8,11,12],collect:0,collect_env_info:11,color:5,color_aug:5,color_jitt:5,coloraugment:5,com:[2,4,5,7,11],combin:5,combine_al:5,combineal:[5,6,12],common:12,comparison:2,complex:[4,11],comput:[1,2,4,6,7,8,11],compute_distance_matrix:8,compute_model_complex:[11,12],connect:9,consid:[5,11],consist:0,consol:11,constant:10,construct:[11,12],contain:[3,5,6,7,8,11,12],conveni:11,convolut:[9,11],convolutionalneur:5,copi:11,correl:5,correspond:5,cosin:8,cosine_dist:8,count:[6,11,12],count_num_param:11,cpu:[5,6],creat:[2,4,11],crf:0,crop:5,cross:[4,7,9],cross_entropy_loss:7,crossentropyloss:7,cuda:[4,6],cudatoolkit:4,cuhk01:[3,4,5],cuhk03:[3,4,5,6,8,12],cuhk03_classic_split:[2,5],cuhk03_label:[2,5],cuhk03_new_protocol_config_detect:2,cuhk03_new_protocol_config_label:2,cuhk03_releas:2,cuhk:[2,5],cuhk_identif:[2,5],current:[6,9,10,11],cvpr:[5,6,7,9],cysu:[7,11],cython:8,damag:12,dampen:10,data:[1,2,3,4,6,12],data_sourc:5,datamanag:[2,4,5,6,12],dataset:[6,11],dataset_:5,dataset_dir:[2,5,12],dataset_nam:[6,12],dataset_url:5,deal:11,decai:[6,10],decomposit:5,deep:[0,2,4,5,9,12],deeper:5,deepreid:5,def:12,defaul:5,default_pars:4,defens:7,defin:3,delet:2,denot:[2,7,11,12],dens:9,densenet121:9,densenet121_fc512:[1,9],densenet161:9,densenet169:9,densenet201:9,densenet:[4,9],depend:[4,11,12],deprec:11,depthwis:9,descript:5,design:9,desir:5,destin:11,detail:[2,4,6,11,12],detect:[2,5],determin:[10,12],develop:4,deviat:5,devic:[4,7,9],devil:9,dict:[6,11],dictionari:[6,11],differ:[2,10],digit:5,dir:4,directli:[2,3],directori:[2,4,5,6,11],dirnam:11,discard:[11,12],discrimin:5,displai:9,dissect:0,dist_metr:6,distanc:[6,11],distil:0,distmat:[8,11],distractor:[2,5],distractors_500k:2,distrctor:2,divid:3,divis:12,document:4,doing:[2,4,11,12],domain:[0,5,9],done:[3,5,12],download:[1,2,5,11],download_dataset:5,download_url:11,downloads_qmul_ilid:[2,5],downloads_qmul_underground_reid:5,downsample_kernel_s:9,downsample_pad:9,drive:5,drop_rat:9,dropout_p:9,dst:11,duke:2,dukemtmc:[3,4,5,12],dukemtmcreid:[1,5,11,12],dukemtmcvidreid:5,each:[3,5,6,7,8,11,12],easi:[4,12],easili:12,eccv:[5,9],eccvw:5,edu:[2,5],eec:[2,5],effici:9,embed_dim:9,empti:[5,10],enabl:[2,6,8,10,12],enclos:2,end:[0,2,4,6,7,12],engin:4,entropi:[4,7],env:[4,11],environ:4,epoch:[4,6,10,11,12],epsilon:7,equal:5,equat:7,eras:5,estim:[11,12],etc:4,euclidean:[6,8],euclidean_squared_dist:8,eval_freq:[4,6,12],evalu:[2,4,5,6,8,11],evaluate_rank:8,evenli:5,everi:[6,10,11],exampl:[4,5,6,8,9,10,11,12],excit:9,exemplar:0,exist:5,expandus:12,explicitli:5,exploit:[0,5,9],extens:4,extern:11,extra:2,extract:[2,5,11,12],extrem:9,facebookresearch:11,factor:[5,10],factoris:[0,9],fail:2,fair:2,fals:[4,5,6,8,9,10,11,12],favor:11,fc_dim:9,feat_dim:[7,9],featur:[0,4,5,6,7,8,9,11,12],few:12,fewer:9,file:[2,4,5,11],filter:5,filters_multipli:9,find:[0,4],fine:[3,12],first:5,fix:3,fixbase_epoch:[6,12],flop:[11,12],folder:2,follow:[2,4],format:[1,5],forth:3,forward:[7,11,12],four:[2,5],fpath:11,frac:7,frequenc:6,from:[0,1,2,3,6,7,8,9,11,12],frozen:[6,11,12],fusion:[5,9],g_camid:8,g_pid:8,galleri:[2,3,5,6,8,11],galleryload:6,gamma:10,gan:[0,5],gap:5,gener:[0,2,3,5,6,12],get:12,get_num_cam:5,get_num_pid:5,git:4,github:[2,4,5,7,11],give:12,given:[5,11],going:5,googl:5,gpu:[4,7,9],gradient:12,gradual:[0,5],grai:5,graph:[11,12],grid:[3,4,5],ground:[7,8],group:[0,5,9],growth_rat:9,guid:[0,2,5],guidelin:9,hacnn:[1,4,9],handl:11,hard:[4,7],hard_mine_triplet_loss:7,hardwar:[11,12],harm:12,harmoni:[0,9],has:[3,4,5,6,10,12],have:[3,10,12],height:[4,5,6,12],help:2,here:[0,2,12],herman:7,hetero:0,highli:[4,8],highlight:1,hirzer:5,homogen:0,horizont:0,how:[2,5,6,11],howev:[2,12],html:[2,5],http:[2,4,5,7,11],huang:9,human:[0,5],iandola:9,iccv:[5,9],icg:[2,5],idea:12,ident:[3,5,6,8,9,10],identif:[0,4,5,7,9,12],ids:[3,5,12],ignor:[1,11,12],ilid:[3,4,5],ilidsvid:5,imag:[0,9,11,12],imagedatamanag:[2,3,4,5,6,12],imagedataset:[5,12],imagenet:5,images_detect:2,images_label:2,imagesoftmaxengin:[4,6,12],imagetripletengin:[6,12],img:5,img_path:[5,11,12],impact:9,implement:[4,6,11,12],improv:5,incept:[4,7,9],inceptionresnetv2:9,inceptionv4:9,includ:[4,12],incompat:11,incred:4,index:[4,5,7],infer:[11,12],info:[2,11],inform:5,inherit:12,init_image_dataset:5,init_video_dataset:5,initi:[2,5,10,11,12],inplan:9,input1:8,input2:8,input:[1,5,7,11,12],input_3x3:9,input_s:11,instal:8,instanc:[5,6,8,9],instanti:12,institut:[2,5],instruct:4,integ:10,intens:5,interpol:5,intuit:12,invari:0,invert:9,is_best:11,jason:2,jitter:5,join:[11,12],journal:4,json:[2,11],just:12,kaiyang:4,kaiyangzh:4,keep:[3,6,11,12],kei:[2,5,9,11],krizhevski:5,kroneck:0,kwarg:[5,9,12],kz303:2,label:[2,4,5,6,7,8],label_smooth:[4,6,7],larg:[5,12],last:5,last_strid:9,layer:[1,6,9,10,11],layumi:5,lead:5,learn:[0,4,5,6,9,10],learn_region:9,level:[0,9],liangzheng06:2,liangzheng:[2,5],librari:4,lid:2,lids_pedestrian:2,like:[2,12],linear:[9,11],link:[0,2],list:[5,6,8,10,11,12],list_galleri:2,list_queri:2,list_train:2,list_val:2,load:[2,4,9,11,12],load_checkpoint:11,load_pretrained_weight:[11,12],log:[4,6,11,12],log_nam:11,loi:5,longtensor:[7,8],look:2,loss:[1,6,9,11,12],loss_valu:11,lr_schedul:[4,6,10],lrs:[2,5],lrschedul:6,machin:4,main:4,manag:[4,12],manduchi:2,mani:5,manual:2,map:[1,2],mar:[3,4,5,6],margin:[6,7],market1501:[1,3,4,5,6,11,12],market1501_500k:[2,4,5,12],market:[2,4],maskrcnn:11,master:[2,7,11],mat:2,match:[0,2,9,11],matrix:[6,7,8,11],matter:0,max:[4,5,6],max_epoch:[4,6,12],max_rank:8,maximum:[6,8],mean:[1,2,5,6,8,11,12],measur:5,memori:0,metadata:2,method:[2,4,10,11,12],metric:[2,5,6],mid:[4,9],middl:9,might:12,min:5,min_seq_len:5,mine:[4,7],minibatch:11,miss:[0,11],mkdir_if_miss:11,mlfn:[1,4,9],mobil:9,mobilenetv2:[4,9],mobilenetv2_1dot0:[1,9],mobilenetv2_1dot4:[1,9],mode:[2,5,12],model:[0,3,5,6,10,11],model_complex:[11,12],model_s:11,modifi:[2,4],modul:[4,6,9,10,11,12],momentum:10,more:[2,4,6,8,12],most:4,msmt17:[1,3,4,5,12],msmt17_v1:2,msmt17_v2:2,mudeep:[4,9],multi:[0,4,5,9],multi_shot:2,multi_step:10,multilabel:0,multipl:[0,5,10,11],multipli:10,multiscal:9,must:6,mutual:0,my_model:11,name:[2,4,5,6,9,10,11,12],nasnet:[4,9],nasnetamobil:9,nchannel:9,ndarrai:[8,11],necessari:6,need:[2,4,5,6,12],neg:7,nesterov:10,net:[0,5,9,11],network:[0,5,9,11],neural:[5,9,11],new_dataset:[5,12],new_lay:[10,12],newdataset:[5,12],nip:5,node:5,none:[5,6,9,11],nonlinear:9,norm_lay:9,norm_mean:5,norm_std:5,normal:[0,5,6,7,10],normalize_featur:6,note:[3,11,12],now:10,num_class:[4,6,7,8,9,11,12],num_galleri:[8,11],num_group:9,num_init_featur:9,num_inst:[5,6],num_param:[11,12],num_queri:[8,11],num_train_cam:5,num_train_pid:[4,5,6],number:[1,5,6,7,9,11,12],numpi:[8,11],obj:11,obtain:11,offici:4,old:2,omni:4,onc:0,one:[3,6,12],onli:[1,2,3,5,6,11,12],only_conv_linear:[11,12],open:[6,7,11,12],open_all_lay:11,open_lay:[6,11,12],open_specified_lay:11,oper:5,optim:[4,6,9,11],option:[5,6,7,8,9,10,11],org:[2,5],organ:2,origin:[2,5],osp:[11,12],other:[3,5,11,12],otherwis:[1,2],out:4,output:[8,11],over:8,pair:5,paper:[0,4],param:1,paramet:[5,6,7,8,9,10,11,12],paranthes:2,parent:2,pars:[0,5],parse_data:5,parser:4,part:9,patch:5,path:[2,4,5,6,11,12],pcb:[4,9],pcb_p4:9,pcb_p6:9,penalti:10,penultimate_filt:9,peopl:[2,5],per:5,perform:[5,6,11,12],person:[0,2,4,5,6,7,8,9,11,12],pet:5,pid:[5,11,12],pil:[5,11],pip:4,pipelin:6,pkuvmc:[2,5],place:[2,5],pleas:[2,3,4,6,12],png:5,pool:[6,9],pooling_method:6,pose:0,posit:7,practic:[9,12],pre:0,predefin:[3,5],predict:[7,8],prefer:4,prepar:[2,4],prepare_split:5,preprint:4,present:[1,12],pretrain:[4,9,10,11,12],pretrian:11,prevent:12,prid11:[2,5],prid2011:[3,4,5],prid:[3,4,5],prid_2011:2,print_freq:[4,6,12],print_frequ:6,print_funct:12,probabl:5,probe:2,process:2,product:0,project:[2,5],project_mar:[2,5],project_reid:[2,5],promot:0,propag:12,proper:4,protocol:[2,4],provid:[2,4,5,11,12],pth:[11,12],purpos:5,put:2,pyramid:0,python2:[4,11],python3:[4,11],python:4,pytorch:4,q_camid:8,q_pid:8,qian:9,qmul:[4,5],queri:[2,3,5,6,8,11],queryload:6,rand:8,random2dtransl:[1,5],random:[0,3,5],random_eras:5,randomeras:5,randomhorizontalflip:1,randomidentitysampl:[5,6,12],randomli:[3,5,10,12],randomsampl:[5,12],rang:6,rank1:11,rank:[1,2,4,5,6,11],ranklogg:11,rate:[6,10],rather:[11,12],ratio:5,reacquisit:5,read:11,read_imag:11,read_json:11,rebuild:4,recognit:[5,9],recommend:[6,8],record:11,reduc:7,reduced_dim:9,reduct:9,redund:[11,12],refer:[2,3,4,5,6,7,9,12],refin:9,regard:[2,12],region:5,regist:[5,12],register_image_dataset:[5,12],register_video_dataset:5,regular:[6,7],reid:[5,6,7,12],reid_evalu:5,reidentif:5,reidtool:11,relat:0,releas:4,relu:[9,12],remov:11,remove_module_from_kei:11,replace_stride_with_dil:9,repo:4,report:[2,4],repres:5,represent:9,requir:[4,5,8],required_fil:5,rerank:6,research:[0,2,4,5],residu:9,resiz:5,resnet101:9,resnet152:9,resnet18:9,resnet34:9,resnet50:[1,4,6,9,11,12],resnet50_fc512:[1,9],resnet50mid:[1,9],resnet:[4,9],resnetmid:9,resnext101:9,resnext101_32x8d:9,resnext50:9,resnext50_32x4d:9,resnext:4,resolut:0,resourc:0,result:[1,2,4,5,6,11],resum:11,resume_from_checkpoint:[11,12],rethink:7,retriev:[0,9],return_dataload:5,return_testdataset_by_nam:5,revisit:0,rgb:5,ristani:5,rmsprop:10,rmsprop_alpha:10,robust:0,roll:0,root:[2,4,5,6,12],run:[4,6,11,12],sai:[10,12],same:[3,5,12],sampl:[5,6],sample_method:5,sandler:9,save:[2,4,6,11,12],save_checkpoint:11,save_dir:[4,6,11,12],scalabl:[5,9],scale:[4,5,9],schedul:[4,6],scia:5,scope:12,scratch:1,script:4,se_resnet101:9,se_resnet152:9,se_resnet50:9,se_resnet50_fc512:[1,9],se_resnext101_32x4d:9,se_resnext50_32x4d:9,search:9,section:[2,12],see:[2,11,12],select:4,self:[6,11,12],semant:0,senet154:9,senet:[4,9],sensereid:[3,4,5],separ:9,seq_len:[5,6],sequenc:2,set:[2,3,5,6,8,11,12],setup:[2,4],sgd:[10,12],sgd_dampen:10,sgd_nesterov:10,shape:[5,7,8,11],share:[3,12],shot:[0,2,5,6,8],should:[2,3,5,6,8,10,12],show:[5,11],show_avai_model:[9,12],show_summari:[5,11],shuffl:0,shufflenet:[1,4,9],shufflenet_v2_x0_5:9,shufflenet_v2_x1_0:9,shufflenet_v2_x1_5:9,shufflenet_v2_x2_0:9,shufflenetv2:9,similar:[0,3],simpli:12,singl:[2,3,5,6,8],single_shot:2,single_step:[4,6,10],size:[1,4,5,8,9,10,11],smaller:[10,12],smooth:[4,6,7,10],soe:[2,5],soft:0,softmax:[1,4,6,9,11],some:[2,12],some_argu:6,someth:0,sourc:[2,4,5,6,7,8,9,10,11,12],spatial:0,specif:[2,5,12],specifi:[1,2,8,11,12],speed:8,spindl:5,split:[2,3,5,6,8],split_id:[3,5],splits_classic_detect:2,splits_classic_label:2,splits_new_detect:2,splits_new_label:2,splits_prid2011:2,squar:8,squeez:9,squeezenet1_0:9,squeezenet1_0_fc512:[1,9],squeezenet1_1:9,squeezenet:[4,9],staged_lr:[10,12],stages_out_channel:9,stages_repeat:9,standard:[2,4,5],start:[3,6],start_epoch:[6,11,12],start_ev:6,state:[4,11],state_dict:11,statist:5,stdout:11,stem_filt:9,step:[10,11],stepsiz:[4,6,10],stepwis:[0,5],store:[2,11],str:[5,6,8,9,10,11,12],strategi:12,string:[5,11],strip:9,strong:9,structur:2,style:0,sub:3,subclass:[5,6],submit:0,subset:12,suggest:[2,12],suit:[4,6],summar:11,summari:11,sun:9,superscript:2,support:[2,4,9,10,11],suppos:[2,12],sys:[11,12],szegedi:[7,9],take:[5,10],tao:4,tar:[11,12],target:[0,5,6,7,8,11,12],team:[2,5],tech:4,techniqu:4,templat:12,tempor:0,tensor:[7,8],test:[2,3,4,5,6,11],test_galleri:2,test_onli:[4,6,12],test_prob:2,testload:[5,6],text:11,tgz:2,than:[2,8,11,12],them:2,theoret:[11,12],thi:[2,4,5,6,8,11,12],three:12,threshold:2,thu:[3,5],time:[3,6,7,11,12],titl:4,tool:12,top:[6,8,11,12],topk:[8,11],torch:[6,7,8],torchreid:[2,3,12],torchtool:11,torchvis:4,total:3,track:[0,5],tracklet:[5,6],train:[0,1,2,3,4,5,6,9,10,11],train_sampl:[5,6,12],trainload:[5,6],transfer:[5,9],transform:9,translat:5,tree:2,triplet:[4,6,9,12],tripletloss:7,truth:[7,8],tugraz:[2,5],tune:12,tupl:[5,8,11,12],two:[2,3,5],txt:[2,4],type:[8,11],typic:12,ucsc:[2,5],under:[2,3,8,12],underground_reid:2,unicodedecodeerror:11,unifi:6,unknown:[0,5],unlabel:5,unless:1,unmatch:11,unsupervis:0,unzip:2,updat:11,url:[5,11],use:[2,5,6,7,8,9,10,12],use_cpu:[5,6],use_cython:8,use_gpu:[7,9],use_metric_cuhk03:[2,6,8],used:[1,2,3,4,5,6,11,12],useful:4,user:2,uses:[6,10],using:[2,3,4,6,8,11,12],util:12,v15:2,valu:[5,8,10,11],vari:3,vector:6,verbos:[5,11,12],version:[4,5,9],via:0,vid:[3,4,5],vid_reid_dataset:[2,5],video:[0,11,12],videodatamanag:[3,5,6],videodataset:[5,12],videoreid:[3,4,5],videosoftmaxengin:[6,12],videotripletengin:[6,12],vidreid:2,view:[3,5,8],viewpoint:0,viper:[3,4,5],vision:[2,5,7],visrank:[6,12],visrank_topk:[6,12],visual:[4,6,11],visualize_ranked_result:11,vitro:5,wai:2,walk:0,wang:5,wanna:[2,4],want:[10,12],wei:5,weight:[1,6,7,9,10,11],weight_decai:10,weight_path:[11,12],weight_t:6,weight_x:6,welcom:0,well:11,what:[2,12],whatev:12,when:[1,2,6,7,8,10,11,12],where:[5,7,12],whether:[7,9,11],which:[2,6,8,11,12],whose:2,width:[4,5,6,9,12],width_mult:9,width_per_group:9,within:12,without:4,work:4,worker:5,worth:12,would:12,wrapper:[8,9,10],write:[11,12],write_json:11,www:[2,5],xception:[4,9],xgwang:[2,5],xiang:4,xiatian:[2,5],xie:9,yang:4,year:4,yml:4,yongxin:4,you:[0,2,4,10,11,12],your:4,yourself:2,zero_init_residu:9,zhang:9,zhao:5,zheng:5,zhong:[5,6],zhou2019osnet:4,zhou:4,zhunzhong07:5,zip:2,zoph:9},titles:["Awesome-ReID","Model Zoo","Datasets","Evaluation","Torchreid","torchreid.data","torchreid.engine","torchreid.losses","torchreid.metrics","torchreid.models","torchreid.optim","torchreid.utils","How-to"],titleterms:{"new":4,Use:12,aaai:0,accuraci:8,arxiv:0,avail:12,averag:11,awesom:0,base:6,chang:12,choos:12,citat:4,classif:[4,9],combin:12,complex:12,comput:12,conda:4,confer:0,cross:12,cuhk01:2,cuhk03:2,cvpr:0,dagger:2,data:5,dataset:[2,4,5,12],design:12,differ:12,distanc:8,dukemtmc:2,dukemtmcreid:2,dukemtmcvidreid:2,eccv:0,engin:[6,12],evalu:[3,12],find:12,galleri:12,gener:11,get:4,grid:2,how:12,ilid:2,ilidsvid:2,imag:[2,3,4,5,6],imagenet:[4,9],indic:4,instal:4,interfac:[4,9],kei:12,layer:12,learn:12,lightweight:[4,9],logger:11,loss:[4,7],lr_schedul:12,manag:5,mar:2,market1501:2,meter:11,metric:8,model:[1,4,9,12],msmt17:2,multipl:12,neurip:0,optim:[10,12],option:4,own:12,prid2011:2,prid:2,qmul:2,queri:12,rank:[8,12],rate:12,reid:[0,2,3,4,9,11],result:12,resum:12,sampler:[5,12],schedul:10,second:4,sensereid:2,show:12,softmax:7,specif:[4,9],start:4,step:12,tabl:4,test:12,tool:11,torch:11,torchreid:[4,5,6,7,8,9,10,11],train:12,transfer:12,transform:5,triplet:7,two:12,unifi:4,util:11,vid:2,video:[2,3,4,5,6],videoreid:2,viper:2,visual:12,your:12,zoo:1}}) \ No newline at end of file diff --git a/user_guide.html b/user_guide.html index 14dd10d..8f818ea 100644 --- a/user_guide.html +++ b/user_guide.html @@ -8,7 +8,7 @@ - How-to — torchreid 0.7.6 documentation + How-to — torchreid 0.7.7 documentation @@ -61,7 +61,7 @@
    - 0.7.6 + 0.7.7