FastReID is a research platform that implements state-of-the-art re-identification algorithms.

Overview

Gitter

Gitter: fast-reid/community

FastReID is a research platform that implements state-of-the-art re-identification algorithms. It is a ground-up rewrite of the previous version, reid strong baseline.

What's New

  • [June 2021] Contiguous parameters is supported, now it can accelerate ~20%.
  • [May 2021] Vision Transformer backbone supported, see configs/Market1501/bagtricks_vit.yml.
  • [Apr 2021] Partial FC supported in FastFace!
  • [Jan 2021] TRT network definition APIs in FastRT has been released! Thanks for Darren's contribution.
  • [Jan 2021] NAIC20(reid track) 1-st solution based on fastreid has been released!
  • [Jan 2021] FastReID V1.0 has been released! 🎉 Support many tasks beyond reid, such image retrieval and face recognition. See release notes.
  • [Oct 2020] Added the Hyper-Parameter Optimization based on fastreid. See projects/FastTune.
  • [Sep 2020] Added the person attribute recognition based on fastreid. See projects/FastAttr.
  • [Sep 2020] Automatic Mixed Precision training is supported with apex. Set cfg.SOLVER.FP16_ENABLED=True to switch it on.
  • [Aug 2020] Model Distillation is supported, thanks for guan'an wang's contribution.
  • [Aug 2020] ONNX/TensorRT converter is supported.
  • [Jul 2020] Distributed training with multiple GPUs, it trains much faster.
  • Includes more features such as circle loss, abundant visualization methods and evaluation metrics, SoTA results on conventional, cross-domain, partial and vehicle re-id, testing on multi-datasets simultaneously, etc.
  • Can be used as a library to support different projects on top of it. We'll open source more research projects in this way.
  • Remove ignite(a high-level library) dependency and powered by PyTorch.

We write a fastreid intro and fastreid v1.0 about this toolbox.

Changelog

Please refer to changelog.md for details and release history.

Installation

See INSTALL.md.

Quick Start

The designed architecture follows this guide PyTorch-Project-Template, you can check each folder's purpose by yourself.

See GETTING_STARTED.md.

Learn more at out documentation. And see projects/ for some projects that are build on top of fastreid.

Model Zoo and Baselines

We provide a large set of baseline results and trained models available for download in the Fastreid Model Zoo.

Deployment

We provide some examples and scripts to convert fastreid model to Caffe, ONNX and TensorRT format in Fastreid deploy.

License

Fastreid is released under the Apache 2.0 license.

Citing FastReID

If you use FastReID in your research or wish to refer to the baseline results published in the Model Zoo, please use the following BibTeX entry.

@article{he2020fastreid,
  title={FastReID: A Pytorch Toolbox for General Instance Re-identification},
  author={He, Lingxiao and Liao, Xingyu and Liu, Wu and Liu, Xinchen and Cheng, Peng and Mei, Tao},
  journal={arXiv preprint arXiv:2006.02631},
  year={2020}
}
Comments
  • 训练完成后,自己写的demo测试,发现结果不对,计算两幅图像距离后,同一个人和不同人,之间特征距离都比较小

    训练完成后,自己写的demo测试,发现结果不对,计算两幅图像距离后,同一个人和不同人,之间特征距离都比较小

    训练完成后,自己写的demo测试,发现结果不对,计算两幅图像距离后,同一个人和不同人,之间特征距离都比较小 以下是文件脚本的测试结果: 查询图像:/home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_000301_00.jpg

    0 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_000301_00.jpg 两幅图像距离 : 5.9604645e-08 1 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_000351_00.jpg 两幅图像距离 : 0.00012886524 2 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_001976_00.jpg 两幅图像距离 : 0.00013148785 3 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_082596_00.jpg 两幅图像距离 : 0.00013911724 4 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s1_109696_00.jpg 两幅图像距离 : 0.00010842085 5 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0001_c2s3_026007_00.jpg 两幅图像距离 : 0.00014215708 6 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_000301_00.jpg 两幅图像距离 : 0.00017541647 7 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_000351_00.jpg 两幅图像距离 : 0.00015747547 8 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_000801_00.jpg 两幅图像距离 : 0.0002257824 9 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_000976_00.jpg 两幅图像距离 : 0.00016981363 10 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_068496_00.jpg 两幅图像距离 : 0.00023156404 11 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0002_c2s1_123041_00.jpg 两幅图像距离 : 0.00023680925 12 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_017426_01.jpg 两幅图像距离 : 0.0001938343 13 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_017451_04.jpg 两幅图像距离 : 0.00017023087 14 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_017476_02.jpg 两幅图像距离 : 0.0001847744 15 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_017601_01.jpg 两幅图像距离 : 0.00019276142 16 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_025851_02.jpg 两幅图像距离 : 0.00020557642 17 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0105_c2s1_036726_01.jpg 两幅图像距离 : 0.00016593933 18 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0464_c2s1_119341_04.jpg 两幅图像距离 : 0.000207901 19 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0464_c2s1_119466_04.jpg 两幅图像距离 : 0.00021898746 20 /home/yan/Documents/bg-file/fast-reid-master/tools/deploy/Image/TestImage/C2/0464_c2s1_119466_06.jpg 两幅图像距离 : 0.00017267466

    求大神指教,谢谢

    opened by baigang666 28
  • DukeMTMC

    DukeMTMC

    @JinkaiZheng 您的工程文件代码比较全,我想请教您几个问题

    1、FREEZE_ITERS: 2000 作用? 2、max_iter ,是 1个epoch =数据量 / batch 例如一个数据是10个iter , max_iter最大的迭代= epoch数量 * 每个epoch 的迭代

    3、DATASETS: NAMES: ("Market1501",) TESTS: ("Market1501",) #要改成DukeMTMC? 这里我用自己的数据做训练格式变成 Market1501 数据格式, 测试数据的评估,我只是把数据读取路径 改成duke的, 测试结果不对,训练收敛 是我改动的方式错了吗?

    discussion 
    opened by sky186 26
  • How to train Custom Dataset

    How to train Custom Dataset

    This guide explains how to train your own custom dataset with fastreid's data loaders.

    Before You Start

    Following Getting Started to setup the environment and install requirements.txt dependencies.

    Train on Custom Dataset

    1. Register your dataset (i.e., tell fastreid how to obtain your dataset).

      To let fastreid know how to obtain a dataset named "my_dataset", users need to implement a Class that inherits fastreid.data.datasets.bases.ImageDataset:

      	from fastreid.data.datasets import DATASET_REGISTRY
      	from fastreid.data.datasets.bases import ImageDataset
      
      
      	@DATASET_REGISTRY.register()
      	class MyOwnDataset(ImageDataset):
      		def __init__(self, root='datasets', **kwargs):
      			...
      			super().__init__(train, query, gallery)		
      

      Here, the snippet associates a dataset named "MyOwnDataset" with a class that processes train set, query set and gallery set and then pass to the baseClass. Then add a decorator to this class for registration.

      The class can do arbitrary things and should generate train list: list(str, str, str), query list: list(str, int, int) and gallery list: list(str, int, int) as below.

      	train_list = [
      	(train_path1, pid1, camid1), (train_path2, pid2, camid2), ...]
      
      	query_list = [
      	(query_path1, pid1, camid1), (query_path2, pid2, camid2), ...]
      
      	gallery_list = [
      	(gallery_path1, pid1, camid1), (gallery_path2, pid2, camid2), ...]
      

      You can also pass an empty train_list to generate a "Testset" only with super().__init__([], query, gallery).

      Notice: query and gallery sets could have the same camera views, but for each individual query identity, his/her gallery samples from the same camera are excluded. So if your dataset has no camera annotations, you can set all query identities camera number to 0 and all gallery identities camera number to 1, then you can get the testing results.

    2. Import your dataset.

      Aftre registering your own dataset, you need to import it in train_net.py to make it effective.

      	from dataset_file import MyOwnDataset
      
    documentation stale 
    opened by L1aoXingyu 21
  • 仅加载模型但是没有开始训练,显卡占用为1.5G 没有开始训练。

    仅加载模型但是没有开始训练,显卡占用为1.5G 没有开始训练。

    config文件:

    `_BASE_: "Base-bagtricks.yml"
    
    MODEL:
      BACKBONE:
        NAME: "build_resnest_backbone"
        DEPTH: "50x"
        WITH_IBN: True
        PRETRAIN: True
        PRETRAIN_PATH: "/home/yantianyi/reid-1.0/pretrained/resnest50.pth"
      HEADS:
        NAME: "EmbeddingHead"
        NORM: "BN"
        WITH_BNNECK: True
        NECK_FEAT: "before"
        POOL_LAYER: "avgpool"
        CLS_LAYER: "linear"
        EMBEDDING_DIM: 512
      LOSSES:
        NAME: ("Cosface",)
        COSFACE:
          MARGIN: 0.25
          GAMMA: 128
          SCALE: 1.0
    
    DATASETS:
      NAMES: ("Alidata",)
      TESTS: ("VeRi",)
    
    INPUT:
      SIZE_TRAIN: [224, 224]
      SIZE_TEST: [224, 224]
      DO_AUTOAUG: False
    
      CJ:
        ENABLED: True
        PROB: 0.8
        BRIGHTNESS: 0.35
        CONTRAST: 0.35
        SATURATION: 0.35
        HUE: 0.2
    
    DATALOADER:
      PK_SAMPLER: True
      NAIVE_WAY: True
      NUM_INSTANCE: 4
      NUM_WORKERS: 8
    
    SOLVER:
      OPT: "Adam"
      MAX_EPOCH: 60
      BASE_LR: 0.00035
      BIAS_LR_FACTOR: 2.
      WEIGHT_DECAY: 0.0005
      WEIGHT_DECAY_BIAS: 0.0005
      IMS_PER_BATCH: 196
      FP16_ENABLED: True
    
      SCHED: "WarmupMultiStepLR"
      STEPS: [25, 40]
      GAMMA: 0.1
    
      WARMUP_FACTOR: 0.01
      WARMUP_ITERS: 10
    
      CHECKPOINT_PERIOD: 10
    
    OUTPUT_DIR: "/home/yantianyi/logs/resnest50_ali_512_cos"
    `
    
    部分log:
    `[01/25 17:57:48 fastreid]: Full config saved to /home/yantianyi/logs/resnest50_ali_512_cos/config.yaml
    [01/25 17:57:48 fastreid.utils.env]: Using a generated random seed 48316424
    [01/25 17:57:48 fastreid.engine.defaults]: Prepare training set
    [01/25 17:57:53 fastreid.data.datasets.bases]: => Loaded Alidata in csv format: 
    | subset   | # ids   | # images   | # cameras   |
    |:---------|:--------|:-----------|:------------|
    | train    | 127817  | 1669888    | 1           |
    [01/25 17:57:55 fastreid.engine.defaults]: Auto-scaling the num_classes=127817
    [01/25 17:57:56 fastreid.modeling.backbones.resnest]: Loading pretrained model from /home/yantianyi/reid-1.0/pretrained/resnest50.pth
    [01/25 17:57:56 fastreid.modeling.backbones.resnest]: The checkpoint state_dict contains keys that are not used by the model:
      fc.{weight, bias}
    [01/25 17:57:57 fastreid.engine.defaults]: Model:
    Baseline(
      (backbone): ResNeSt(
        (conv1): Sequential(
          (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)
          (1): BatchNorm(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (2): ReLU(inplace=True)
          (3): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
          (4): BatchNorm(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
          (5): ReLU(inplace=True)
          (6): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
        )
        (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        (relu): ReLU(inplace=True)
        (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
        (layer1): Sequential(
          (0): Bottleneck(
            (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
            (downsample): Sequential(
              (0): AvgPool2d(kernel_size=1, stride=1, padding=0)
              (1): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
              (2): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            )
          )
          (1): Bottleneck(
            (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (2): Bottleneck(
            (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
        )
        (layer2): Sequential(
          (0): Bottleneck(
            (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (avd_layer): AvgPool2d(kernel_size=3, stride=2, padding=1)
            (conv2): SplAtConv2d(
              (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
            (downsample): Sequential(
              (0): AvgPool2d(kernel_size=2, stride=2, padding=0)
              (1): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
              (2): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            )
          )
          (1): Bottleneck(
            (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (2): Bottleneck(
            (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (3): Bottleneck(
            (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(128, 64, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
        )
        (layer3): Sequential(
          (0): Bottleneck(
            (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (avd_layer): AvgPool2d(kernel_size=3, stride=2, padding=1)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
            (downsample): Sequential(
              (0): AvgPool2d(kernel_size=2, stride=2, padding=0)
              (1): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
              (2): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            )
          )
          (1): Bottleneck(
            (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (2): Bottleneck(
            (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (3): Bottleneck(
            (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (4): Bottleneck(
            (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (5): Bottleneck(
            (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
        )
        (layer4): Sequential(
          (0): Bottleneck(
            (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (avd_layer): AvgPool2d(kernel_size=3, stride=1, padding=1)
            (conv2): SplAtConv2d(
              (conv): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=2, bias=False)
              (bn0): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
            (downsample): Sequential(
              (0): AvgPool2d(kernel_size=1, stride=1, padding=0)
              (1): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
              (2): BatchNorm(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            )
          )
          (1): Bottleneck(
            (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2), dilation=(2, 2), groups=2, bias=False)
              (bn0): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
          (2): Bottleneck(
            (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (conv2): SplAtConv2d(
              (conv): Conv2d(512, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2), dilation=(2, 2), groups=2, bias=False)
              (bn0): BatchNorm(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (relu): ReLU(inplace=True)
              (fc1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1))
              (bn1): BatchNorm(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
              (fc2): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1))
              (rsoftmax): rSoftMax()
            )
            (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
            (bn3): BatchNorm(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
            (relu): ReLU(inplace=True)
          )
        )
      )
      (heads): EmbeddingHead(
        (pool_layer): AdaptiveAvgPool2d(output_size=1)
        (bottleneck): Sequential(
          (0): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
          (1): BatchNorm(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
        )
        (classifier): Linear(in_features=512, out_features=127817, bias=False)
      )
    )
    

    Selected optimization level O1: Insert automatic casts around Pytorch functions and Tensor methods.

    Defaults for this optimization level are: enabled : True opt_level : O1 cast_model_type : None patch_torch_functions : True keep_batchnorm_fp32 : None master_weights : None loss_scale : dynamic Processing user overrides (additional kwargs that are not None)... After processing overrides, optimization options are: enabled : True opt_level : O1 cast_model_type : None patch_torch_functions : True keep_batchnorm_fp32 : None master_weights : None loss_scale : dynamic Warning: multi_tensor_applier fused unscale kernel is unavailable, possibly because apex was installed without --cuda_ext --cpp_ext. Using Python fallback. Original ImportError was: ModuleNotFoundError("No module named 'amp_C'",) Warning: apex was installed without --cpp_ext. Falling back to Python flatten and unflatten. ./fastreid/evaluation/rank.py:15: UserWarning: Cython rank evaluation (very fast so highly recommended) is unavailable, now use python evaluation. 'Cython rank evaluation (very fast so highly recommended) is ' ./fastreid/evaluation/roc.py:19: UserWarning: Cython roc evaluation (very fast so highly recommended) is unavailable, now use python evaluation. 'Cython roc evaluation (very fast so highly recommended) is ' Warning: apex was installed without --cpp_ext. Falling back to Python flatten and unflatten. ./fastreid/evaluation/rank.py:15: UserWarning: Cython rank evaluation (very fast so highly recommended) is unavailable, now use python evaluation. 'Cython rank evaluation (very fast so highly recommended) is ' ./fastreid/evaluation/roc.py:19: UserWarning: Cython roc evaluation (very fast so highly recommended) is unavailable, now use python evaluation. 'Cython roc evaluation (very fast so highly recommended) is '`

    stale 
    opened by yanty123 20
  • Roadmap of FastReID

    Roadmap of FastReID

    We keep this issue open to collect feature requests from users and hear your voice. Our monthly release plan is available here.

    You can either:

    1. Suggest a new feature by leaving a comment.
    2. Vote for a feature request with 👍 or be against with 👎. (Remember that developers are busy and cannot respond to all feature requests, so vote for your most favorable one!)
    3. Tell us that you would like to help implement one of the features in the list or review the PRs. (This is the greatest thing to hear about!)

    V1.4

    • [ ] fused LAMB optimizer
    • [ ] ZeRO optimizer
    • [ ] Gradient accumulation
    • [ ] Swin Transformer backbone

    V1.3 (May)

    • [x] Clip gradient (07b8251ccb9f296e4be5d49fc98efebaa12d679f)
    • [x] Vision Transformer backbone (2cabc3428adf5cb3fc0be0f273cc025c4b0a8781)
    • [x] prefetch_generator (#456)
    • [x] Reduce evaluation memory cost

    V1.2 (March)

    • [x] Multiple machine training (#425)
    • [x] Torch2trt pipeline (#428)
    • [x] RepVGG backbone (#429)
    • [x] Partial FC(https://github.com/JDAI-CV/fast-reid/commit/44cee30dfc929df2051d1ca56e36dc152866e96b)
    • [ ] Visualize activation maps

    V1.1 (February)

    • [ ] Documents
    • [x] ~~RepVGG backbone (#429)~~(delayed to V.12)
    • [x] ~~Torch2trt pipeline. (#428)~~(delayed to V1.2)
    • [x] NAIC20 winner solution
    • [x] Multi-teacher KD
    • [x] ~~Partial FC(https://github.com/JDAI-CV/fast-reid/commit/44cee30dfc929df2051d1ca56e36dc152866e96b)~~ (delayed to V1.2)
    • [x] reid model with tensorrt network definition APIs
    stale 
    opened by L1aoXingyu 19
  • Official wechat group(PS: the author here.)

    Official wechat group(PS: the author here.)

    Welcome to join the fast-reid official communication group. If you have any questions, you can communicate with the author or a group of people who are using fast-reid. The number of people in the group is more than 200, please add this wechat to join wechat group.

    PS: the author here.

    opened by gmt710 19
  • torch to caffe convert error

    torch to caffe convert error

    59,60c59
    <     pad: 1
    <     ceil_mode: false
    ---
    >     pad: 0
    2435a2435,2444
    >   name: "avgpool1"
    >   type: "Pooling"
    >   bottom: "relu_blob49"
    >   top: "avgpool_blob1"
    >   pooling_param {
    >     pool: AVE
    >     global_pooling: true
    >   }
    > }
    > layer {
    2438c2447
    <   bottom: "relu_blob49"
    ---
    >   bottom: "avgpool_blob1"
    2449c2458
    <   top: "batch_norm_blob54"
    ---
    >   top: "output"
    
    

    https://github.com/JDAI-CV/fast-reid/tree/master/tools/deploy I saw the site above and converted model.

    ./run_inference.sh image What should I do?

    opened by Hwijune 19
  • How can I prepare my own data about gallery and query?

    How can I prepare my own data about gallery and query?

    When I test my own data, I find that this problem often occurs.

    python ./demo/visualize_result.py --config-file './configs/Market1501/AGW_R50.yml' --vis-label --dataset-name 'Market1501' --output 'logs/market1501/agw_R50/agw_market1501_vis' --opts MODEL.WEIGHTS "./logs/market1501/agw_R50/model_final.pth"
    
    assert num_valid_q > 0, 'Error: all query identities do not appear in gallery'
    AssertionError: Error: all query identities do not appear in gallery
    

    I don't clearly know why this happens? If you have time, can you tell me how to make your own dataset?

    opened by gmt710 19
  • 训练自定义的数据集

    训练自定义的数据集

    您好,我将我的数据集改成Market1501的命名规则,但是输入 python3 tools/train_net.py --config-file ./configs/Market1501/bagtricks_R50.yml MODEL.DEVICE "cuda:0" 之后,程式码好像就停住无法训练了,请问是什么问题呢? 是因为我的图片数量太少吗? 还是因为我的图片id太少? 或是因为我只有一个camid和一个sequence? 谢谢 error

    enhancement stale 
    opened by liujs1016 16
  • 2021.3 fastreid duke rank1=0.82 map=68.37

    2021.3 fastreid duke rank1=0.82 map=68.37

    @L1aoXingyu 您好,我用的是3月份更新的代码 只用duke 数据训练测试 参数训练 ,configs/DukeMTMC/mgn_R50-ibn.yml 精度没有很高, rank1=82.72 map = 68.37 和您发布的结果差别很大

    区别: 预训练这里我直接给的 pretrain_path: home/fastreid/resnet50_ibn_a.pth.tar 后来排查看到 下载的模型 是 v1.0/resnet50_ibn_a-d9d9bb7b.pth

    只有这个区别

    stale 
    opened by sky186 16
  • 训练过程中,内存一直增长,到后期会把整个服务器的内存都占完

    训练过程中,内存一直增长,到后期会把整个服务器的内存都占完

    ys.platform            linux
    Python                  3.9.7 (default, Sep 16 2021, 13:09:58) [GCC 7.5.0]
    numpy                   1.22.4
    fastreid                1.3 @/ssd8/exec/jiaruoran/python/fast-reid-master/./fastreid
    FASTREID_ENV_MODULE     <not set>
    PyTorch                 1.7.1+cu101 @/ssd7/exec/jiaruoran/anaconda3/lib/python3.9/site-packages/torch
    PyTorch debug build     False
    GPU available           True
    GPU 0,1,2,3             Tesla K80
    CUDA_HOME               /ssd1/shared/local/cuda-10.1
    Pillow                  8.4.0
    torchvision             0.8.2+cu101 @/ssd7/exec/jiaruoran/anaconda3/lib/python3.9/site-packages/torchvision
    torchvision arch flags  sm_35, sm_50, sm_60, sm_70, sm_75
    cv2                     4.5.5
    ----------------------  -----------------------------------------------------------------------------------
    PyTorch built with:
      - GCC 7.3
      - C++ Version: 201402
      - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications
      - Intel(R) MKL-DNN v1.6.0 (Git Hash 5ef631a030a6f73131c77892041042805a06064f)
      - OpenMP 201511 (a.k.a. OpenMP 4.5)
      - NNPACK is enabled
      - CPU capability usage: AVX2
      - CUDA Runtime 10.1
      - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75
      - CuDNN 7.6.3
      - Magma 2.5.2
      - Build settings: BLAS=MKL, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -fopenmp -DNDEBUG -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_VULKAN_WRAPPER -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-unused-local-typedefs -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, 
    
    

    data_loader num_worker设为多个时,内存增长的尤其快,num_worker=0时也会持续增长,排除pytorch dataloader问题

    stale 
    opened by rrjia 15
  • optimize jaccard distance computation and the ranking

    optimize jaccard distance computation and the ranking

    • I run a line_profiler on the ranking function and discovered that the line I modified takes 91.4 of the run time of the rank function. By modifying we can save a lot of ranking time.
    • For the Jaccard distance, the code is performing a lot of not-needed computation that is increasing the reranking time.
    opened by MarahGamdou 1
  • Add the code for GPU-Reranking

    Add the code for GPU-Reranking

    Hi, Xingyu! I integrate the re-ranking into fast-reid. As suggested, the modified code can make users use the GPU-reranking by changing config. I have tested the code in Market1501 with market_sbs_R101-ibn.pth and the result is all right as shown below.

    07/31 15:10:57 fastreid.evaluation.reid_evaluation]: Test with gpu real-time rerank setting
    [07/31 15:11:05 fastreid.engine.defaults]: Evaluation results for Market1501 in csv format:
    [07/31 15:11:05 fastreid.evaluation.testing]: Evaluation results in csv format: 
    | Dataset    | Rank-1   | Rank-5   | Rank-10   | mAP   | mINP   | metric   |
    |:-----------|:---------|:---------|:----------|:------|:-------|:---------|
    | Market1501 | 96.35    | 98.43    | 98.84     | 95.23 | 90.53  | 95.79    |
    
    

    The method is as follows.

    1. Compile the code of gpu re-ranking . cd fastreid/evaluation/extension; sh make.sh
    2. When evaluating, we can use GPU-reranking by changing config.
    python3 tools/train_net.py --config-file ./configs/Market1501/bagtricks_R50.yml --eval-only \
    TEST.GPU_RERANK.ENABLED True MODEL.WEIGHTS /path/to/checkpoint_file MODEL.DEVICE "cuda:0"
    
    opened by Xuanmeng-Zhang 1
  • Fixed: set default type for parser

    Fixed: set default type for parser

    The value will be treated as str if there is no type. Then there will be error

    Traceback (most recent call last):
      File "demo/visualize_result.py", line 144, in <module>
        query_indices = visualizer.vis_rank_list(args.output, args.vis_label, args.num_vis, args.rank_sort, args.label_sort, args.max_rank)
      File "./fastreid/utils/visualizer.py", line 158, in vis_rank_list
        query_indices = query_indices[:num_vis]
    TypeError: slice indices must be integers or None or have an __index__ method
    

    when we add some custom parameter, such as --num-vis 5

    opened by TelBotDev 0
  • add RGPR data augmentation for person reid

    add RGPR data augmentation for person reid

    Add RGPR data augmentation for person reid(An Effective Data Augmentation for person re-identification(https://arxiv.org/abs/2101.08533)) mgn_repvgg_wo_RGPR(epoch 60): rank1: 90.44, mAP: 81.56 mgn_repvgg_w_RGPR(epoch 60): rank1: 90.66, mAP: 82.16 mgn_repvgg_w_RGPR(epoch 120): rank1: 91.07, mAP: 82.18

    opened by AlphaPlusTT 2
Releases(v1.3.0)
Owner
JDAI-CV
JDAI Computer Vision
JDAI-CV
Volumetric parameterization of the placenta to a flattened template

placenta-flattening A MATLAB algorithm for volumetric mesh parameterization. Developed for mapping a placenta segmentation derived from an MRI image t

Mazdak Abulnaga 12 Mar 14, 2022
Any-to-any voice conversion using synthetic specific-speaker speeches as intermedium features

MediumVC MediumVC is an utterance-level method towards any-to-any VC. Before that, we propose SingleVC to perform A2O tasks(Xi → Ŷi) , Xi means utter

谷下雨 47 Dec 25, 2022
Official Chainer implementation of GP-GAN: Towards Realistic High-Resolution Image Blending (ACMMM 2019, oral)

GP-GAN: Towards Realistic High-Resolution Image Blending (ACMMM 2019, oral) [Project] [Paper] [Demo] [Related Work: A2RL (for Auto Image Cropping)] [C

Wu Huikai 402 Dec 27, 2022
torchsummaryDynamic: support real FLOPs calculation of dynamic network or user-custom PyTorch ops

torchsummaryDynamic Improved tool of torchsummaryX. torchsummaryDynamic support real FLOPs calculation of dynamic network or user-custom PyTorch ops.

Bohong Chen 1 Jan 07, 2022
DTCN SMP Challenge - Sequential prediction learning framework and algorithm

DTCN This is the implementation of our paper "Sequential Prediction of Social Me

Bobby 2 Jan 24, 2022
Computer vision - fun segmentation experience using classic and deep tools :)

Computer_Vision_Segmentation_Fun Segmentation of Images and Video. Tools: pytorch Models: Classic model - GrabCut Deep model - Deeplabv3_resnet101 Flo

Mor Ventura 1 Dec 18, 2021
Lexical Substitution Framework

LexSubGen Lexical Substitution Framework This repository contains the code to reproduce the results from the paper: Arefyev Nikolay, Sheludko Boris, P

Samsung 37 Sep 15, 2022
Pytorch implementation AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks

AttnGAN Pytorch implementation for reproducing AttnGAN results in the paper AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative

Tao Xu 1.2k Dec 26, 2022
Motion and Shape Capture from Sparse Markers

MoSh++ This repository contains the official chumpy implementation of mocap body solver used for AMASS: AMASS: Archive of Motion Capture as Surface Sh

Nima Ghorbani 135 Dec 23, 2022
A little software to generate and save Julia or Mandelbrot's Fractals.

Julia-Mandelbrot-s-Fractals A little software to generate and save Julia or Mandelbrot's Fractals. Dependencies : Python 3.7 or more. (Also possible t

Olivier 0 Jul 09, 2022
4K videos with annotated masks in our ICCV2021 paper 'Internal Video Inpainting by Implicit Long-range Propagation'.

Annotated 4K Videos paper | project website | code | demo video 4K videos with annotated object masks in our ICCV2021 paper: Internal Video Inpainting

Tengfei Wang 21 Nov 05, 2022
Implementation of a Transformer using ReLA (Rectified Linear Attention)

ReLA (Rectified Linear Attention) Transformer Implementation of a Transformer using ReLA (Rectified Linear Attention). It will also contain an attempt

Phil Wang 49 Oct 14, 2022
Keras like implementation of Deep Learning architectures from scratch using numpy.

Mini-Keras Keras like implementation of Deep Learning architectures from scratch using numpy. How to contribute? The project contains implementations

MANU S PILLAI 5 Oct 10, 2021
A Machine Teaching Framework for Scalable Recognition

MEMORABLE This repository contains the source code accompanying our ICCV 2021 paper. A Machine Teaching Framework for Scalable Recognition Pei Wang, N

2 Dec 08, 2021
Named Entity Recognition with Small Strongly Labeled and Large Weakly Labeled Data

Named Entity Recognition with Small Strongly Labeled and Large Weakly Labeled Data arXiv This is the code base for weakly supervised NER. We provide a

Amazon 92 Jan 04, 2023
This repository contains the files for running the Patchify GUI.

Repository Name Train-Test-Validation-Dataset-Generation App Name Patchify Description This app is designed for crop images and creating smal

Salar Ghaffarian 9 Feb 15, 2022
ECLARE: Extreme Classification with Label Graph Correlations

ECLARE ECLARE: Extreme Classification with Label Graph Correlations @InProceedings{Mittal21b, author = "Mittal, A. and Sachdeva, N. and Agrawal

Extreme Classification 35 Nov 06, 2022
An adaptive hierarchical energy management strategy for hybrid electric vehicles

An adaptive hierarchical energy management strategy This project contains the source code of an adaptive hierarchical EMS combining heuristic equivale

19 Dec 13, 2022
Language Models for the legal domain in Spanish done @ BSC-TEMU within the "Plan de las Tecnologías del Lenguaje" (Plan-TL).

Spanish legal domain Language Model ⚖️ This repository contains the page for two main resources for the Spanish legal domain: A RoBERTa model: https:/

Plan de Tecnologías del Lenguaje - Gobierno de España 12 Nov 14, 2022
A PyTorch Implementation of Neural IMage Assessment

NIMA: Neural IMage Assessment This is a PyTorch implementation of the paper NIMA: Neural IMage Assessment (accepted at IEEE Transactions on Image Proc

yunxiaos 418 Dec 29, 2022