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

Fast-ReID前期准备

文章目录

  • Fast-ReID前期准备
  • 前言
  • 一、Fast-ReID 介绍
    • Fast-ReID 特点
    • FastReID 架构
  • 二、Fast-ReID 复现


前言

FastReID 是一个 SOTA 级的 ReID 方法集合工具箱(SOTA ReID Methods and Toolbox),同时面向学术界和工业界落地,此外该团队还发布了在多个不同任务、多种数据集上的SOTA模型。
FastReID中实现的四大ReID任务:
行人重识别
部分区域的行人重识别
跨域的行人重识别
车辆的重识别

论文:https://arxiv.org/pdf/2006.02631.pdf
代码:https://github.com/JDAI-CV/fast-reid

一、Fast-ReID 介绍

Fast-ReID 特点

提供了针对ReID任务的完整的工具箱,包括训练、评估、微调和模型部署,另外实现了在多个任务中的最先进的模型。
1)模块化和灵活的设计,方便研究者快速将新的模块插入和替换现有流程中,帮助学界快速验证新思路;

2)易于管理的系统配置,FastReID用PyTorch实现,可提供在多GPU服务器的快速训练,模型结构、训练和测试可以用YAML文件方便定义,并对每一块提供了众多可定义选项(主干网、训练策略、聚合策略、损失函数等)。

3)丰富的评估系统,不仅实现了CMC评估指标,还包括ROC、mINP等,可以更好的反应模型性能。

4)易于工程部署,FastReID不仅提供了有效的知识蒸馏模块以得到精确且高效的轻量级模型,而且提供了PyTorch->Caffe和PyTorch->TensorRT模型转换工具。

5)众多的State-of-the-art预训练模型,官方计划发布人员重识别(person re-id),部分可见的人员重识别( partial re-id), 跨域人员重识别(cross-domain re-id) 和 车辆重识别(vehicle re-id) 等众多模型。

FastReID 架构

Fast-ReID 训练自己的数据集调优记录(一)_第1张图片
训练阶段包括模块:
1)预处理Pre-processing,其实就是各种数据增广方法,如 Resize,Flipping,Random erasing,Auto-augment(automl 中的技巧,使用该技巧去实现有效的数据增强,提高特征的鲁棒性),Random patch,Cutout等;其中Random erasing在reid任务中效果显著。
Fast-ReID 训练自己的数据集调优记录(一)_第2张图片
2)骨干网(Backbone),包括主干网的选择(如ResNet,ResNest,ResNeXt等)和可以增强主干网表达能力的特殊模块(如non-local、instance batch normalization (IBN)模块等);

3)聚合模块(Aggregation),用于将骨干网生成的特征聚合成一个全局特征,如max pooling, average pooling, GeM pooling , attention pooling等方法;

4)Head 模块,用于对生成的全局特征进行归一化、纬度约减等。

5)训练策略,包含Learning rate,warm-up,Backbone freeze,余弦衰减(consine decay)等。

6)特别值得一提的是其损失函数,不仅包括常见的Cross-entropy loss, Triplet loss,Arcface loss,还实现了今年上半年刚出的旷视CVPR 2020 Oral 论文中的Circle loss!(被认为是目前在各种度量学习任务中表现最好的)可见FastReID开发团队紧跟前沿。

在推理阶段,包含模块:
1)度量部分,除支持常见的余弦和欧式距离,还添加了局部匹配方法 deep spatial reconstruction (DSR);

2)后处理部分,指对检索结果的处理,包括K-reciprocal coding 和 Query Expansion (QE) 两种重排序方法。

二、Fast-ReID 复现

安装fast-reid: 代码会更新详情可见官方Installation
conda create -n fastreid python=3.7
conda activate fastreid
conda install pytorch==1.6.0 torchvision tensorboard -c pytorch
pip install -r requirements
pip install faiss-cpu # faiss-cpu此方法能正确安装

按照官方方法即可 Getting Started with Fastreid
cd fastreid/evaluation/rank_cylib; make all

pytorch支持半精度训练,需安装apex
$ git clone https://github.com/NVIDIA/apex
$ cd apex
$ pip install -v --no-cache-dir --global-option="–pyprof" --global-option="–cpp_ext" --global-option="–cuda_ext" ./
环境搞好后可先用Market1501数据集训练起来,说明安装没有问题。
fast-reid封装的非常繁琐,初次一看很难看懂,下次将详细讲述fast-reid源码。训练以及调优过程

下一节 Fast-ReID 代码讲解

你可能感兴趣的:(行人重识别,ReID,深度学习,pytorch)