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(

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

被折叠的 条评论
为什么被折叠?



