复现HAT: Hierarchical Aggregation Transformers for Person Reid ICCV21

1.下载数据集和代码

代码地址:GitHub - AI-Zhpp/HAT

Market1501:http://www.liangzheng.org/Project/project_reid.html 
或者:DukeMTMC-reID :https://github.com/layumi/DukeMTMC-reID_evaluation

2.除了pytorch环境,还要pip如下几个包。

pip install yacs
pip install pytorch-ignite==0.1.2
pip install einops

pytorch-ignite一定要0.1.2不然会报错。

3.下载resnet50-19c8e357.pth

https://download.pytorch.org/models/resnet50-19c8e357.pth

4.更改路径

configs\softmax_triplet.yml中PRETRAIN_PATH改为你的resnet50-19c8e357.pth路径

MODEL:
  PRETRAIN_CHOICE: 'imagenet'
  PRETRAIN_PATH: 'D:/HAT/resnet50-19c8e357.pth'

tools\train.py中也要更改路径,把

parser.add_argument(
    "--config_file", default="D:/HAT/configs/softmax_triplet.yml", help="path to config file", type=str
)
这里面的default改为你的configs/softmax_triplet.yml的路径
def main():
    # 新建一个ArgumentParser类对象,然后来添加若干个参数选项
    parser = argparse.ArgumentParser(description="ReID Baseline Training")
    # 给属性名之前加上“- -”,就能将之变为可选参数.这里的config_file是一个可选参数,返回给args的是 args.config_file
    parser.add_argument(
        "--config_file", default="D:/HAT/configs/softmax_triplet.yml", help="path to config file", type=str
    )
    parser.add_argument("opts", help="Modify config options using the command-line", default=None,  # help中的内容说明了参数的意义
                        nargs=argparse.REMAINDER)

    # 属性给与args实例: parser中增加的属性内容都在args实例中
    args = parser.parse_args()

然后就可以train了。

5.test

更改softmax_triplet.yml中的test里weight的路径,把train好的模型放入。

TEST:
  IMS_PER_BATCH: 1
  RE_RANKING: 'no'
  WEIGHT: "D:/HAT/tools/output/resnet50_model_150.pth"
  NECK_FEAT: 'after'
  FEAT_NORM: 'yes'

OUTPUT_DIR: "./output"

inference.py中去掉attribute,否则报错。

def _inference(engine, batch):
        model.eval()
        with torch.no_grad():
            data, pids, camids, attribute = batch 改为 data, pids, camids = batch

test中也要个更改config_file的路径,把default中内容改为softmax_triplet.yml的路径

def main():
    parser = argparse.ArgumentParser(description="ReID Baseline Inference")
    parser.add_argument(
        "--config_file", default="D:/HAT/configs/softmax_triplet.yml", help="path to config file", type=str
    )
    parser.add_argument("opts", help="Modify config options using the command-line", default=None,
                        nargs=argparse.REMAINDER)

    args = parser.parse_args()

然后就可以test了。

你可能感兴趣的:(python)