Fast-ReID 训练自己的数据集调优记录(二)

本文对 Fast-ReID 代码进行讲解。首先介绍使用开源数据集跑通代码的方法,建议代码和数据集分开放,通过软链接将数据链到指定目录。接着解读重要代码,包括 configs.yaml 配置文件结构,以及 fastreid 中的数据处理、模型结构和 loss 函数等。最后总结可按需修改调参。

Fast-ReID 代码讲解


接上一节 Fast-ReID前期准备

一、使用开源数据集跑通代码

这里建议代码和数据集分开放,便于数据集的管理(数据集也是一个很重要的资源)。使用软链接的方式吧数据链到项目指定目录下:
命令如下(示例):

ln -s /home/username/Market-1501-v15.09.15 ./dataset/Market-1501-v15.09.15
这样就把Market1501数据集链接到了fastreid指定dataset目录下,(类似与windows的超链接,不占用内存)。

按照官方INSTALL相关依赖
按照官方GETTING_STARTED

正常情况这样就可以使用Market1501数据集训练了,并且很容易达到论文精度。

二、重要代码解读

1.configs.yaml解读

configs.yaml配置文件详细写了模型的数据处理,模型框架,训练方法等这些超参,训练调参都可以通过此修改,以./configs/Market1501目录下的AGW_R50-ibn.yml为例:
代码如下(示例):

_BASE_: "../Base-AGW.yml"  # AGW_R50-ibn的上一级配置文件

MODEL:
  BACKBONE:
    WITH_IBN: True  模型是否使用IBN module

DATASETS:
  NAMES: ("Market1501",) 数据集
  TESTS: ("Market1501",)

OUTPUT_DIR: "logs/market1501/agw_R50-ibn"  # 日志输出目录

接下来看AGW_R50-ibn的上一级配置文件Base-AGW.yml(示例):

_BASE_: "Base-bagtricks.yml"  # Base-AGW的上一级配置文件

MODEL:
  BACKBONE:
    WITH_NL: True  # 模型是否使用No_local module

  HEADS:
    POOL_LAYER: "gempool"  # HEADS POOL_LAYER

  LOSSES:
    NAME: ("CrossEntropyLoss", "TripletLoss")  # 使用loss
    CE:
      EPSILON: 0.1  # CrossEntropyLoss 超参
      SCALE: 1.0

    TRI:
      MARGIN: 0.0  # TripletLoss 超参
      HARD_MINING: False
      SCALE: 1.0

接下来看Base-AGW的上一级配置文件Base-bagtricks.yml(示例):

MODEL:
  META_ARCHITECTURE: "Baseline"

  BACKBONE:
    NAME: "build_resnet_backbone"
    NORM: "BN"     **# 模型NORM  如果是多卡需设置为syncBN 多卡同步BN**
    DEPTH: "50x"
    LAST_STRIDE: 1
    FEAT_DIM: 2048   # 输出特征维度
    WITH_IBN: True
    PRETRAIN: True
    PRETRAIN_PATH: "/media/zengwb/PC/baseline/ReID/resnet50_ibn_a-d9d0bb7b.pth"

  HEADS:
    NAME: "EmbeddingHead"
    NORM: "BN"   **# 模型NORM  如果是多卡需设置为syncBN 多卡同步BN**
    WITH_BNNECK: True
    POOL_LAYER: "avgpool"
    NECK_FEAT: "before"
    CLS_LAYER: "linear"

  LOSSES:
    NAME: ("CrossEntropyLoss", "TripletLoss",)

    CE:
      EPSILON: 0.1
      SCALE: 1.

    TRI:
      MARGIN: 0.3
      HARD_MINING: True
      NORM_FEAT: False
      SCALE: 1.

INPUT:
  SIZE_TRAIN: [256, 128]
  SIZE_TEST: [256, 128]
  REA:
    ENABLED: True
    PROB: 0.5
    MEAN: [123.675, 116.28, 103.53]
  DO_PAD: True

DATALOADER:
  PK_SAMPLER: True
  NAIVE_WAY: True
  NUM_INSTANCE: 4
  NUM_WORKERS: 8

SOLVER:
  OPT: "Adam"
  MAX_ITER: 120
  BASE_LR: 0.00035
  BIAS_LR_FACTOR: 2.
  WEIGHT_DECAY: 0.0005
  WEIGHT_DECAY_BIAS: 0.0005
  IMS_PER_BATCH: 64    # 设置batch size

  SCHED: "WarmupMultiStepLR"
  STEPS: [40, 90]
  GAMMA: 0.1

  WARMUP_FACTOR: 0.01
  WARMUP_ITERS: 10

  CHECKPOINT_PERIOD: 60   # epoxh

TEST:
  EVAL_PERIOD: 30
  IMS_PER_BATCH: 128

CUDNN_BENCHMARK: True

可以看到整个配置文件为三个configs文件Base-bagtricks,Base-AGW,AGW_R50-ibn组成,一级一级细化,结合./fastreid/config/default.py 可以很容易理解整个项目的配置文件结构。

2.fastreid解读

在这里插入图片描述
包含数据处理data,模型结构modeling,loss函数
首先我们看./engine/default.py 定义了模型,优化器,学习率策略,训练,评估等函数
./engine/default.py代码如下(示例):

def default_argument_parser(
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值