提交 5a241c5d 编写于 作者: D dongshuilong

modify feature learning docks

上级 b1c5eeff
......@@ -10,7 +10,7 @@
`RecModel`的训练模式与普通分类训练的配置类似,配置文件主要分为以下几个部分:
### 全局设置部分
### 1 全局设置部分
```yaml
Global:
......@@ -39,7 +39,7 @@ Global:
eval_mode: "retrieval"
```
### 数据部分
### 2 数据部分
```yaml
DataLoader:
......@@ -48,8 +48,8 @@ DataLoader:
# 具体使用的Dataset的的名称
name: "VeriWild"
# 使用此数据集的具体参数
image_root: "/work/dataset/VeRI-Wild/images/"
cls_label_path: "/work/dataset/VeRI-Wild/train_test_split/train_list_start0.txt"
image_root: "./dataset/VeRI-Wild/images/"
cls_label_path: "./dataset/VeRI-Wild/train_test_split/train_list_start0.txt"
# 图像增广策略:ResizeImage、RandFlipImage等
transform_ops:
- ResizeImage:
......@@ -82,7 +82,7 @@ DataLoader:
`val dataset`设置与`train dataset`除图像增广策略外,设置基本一致
### Backbone的具体设置
### 3 Backbone的具体设置
```yaml
Arch:
......@@ -116,7 +116,7 @@ Arch:
`Head`部分主要是为了支持`metric learning`等具体loss函数,如`ArcMargin`([ArcFace Loss](https://arxiv.org/abs/1801.07698)的fc层的具体实现),在完成训练后,一般将此部分剔除。
### Loss的设置
### 4 Loss的设置
```yaml
Loss:
......@@ -134,7 +134,7 @@ Loss:
训练时同时使用`CELoss``SupConLoss`,权重比例为`1:1`,测试时只使用`CELoss`
### 优化器设置
### 5 优化器设置
```yaml
Optimizer:
......@@ -156,7 +156,7 @@ Optimizer:
coeff: 0.0005
```
### Eval Metric设置
### 6 Eval Metric设置
```yaml
Metric:
......
......@@ -8,15 +8,15 @@
全部的超参数及具体配置:[ResNet50_ReID.yaml](../../../ppcls/configs/Logo/ResNet50_ReID.yaml)
## 数据集及预处理
## 1 数据集及预处理
### LogoDet-3K数据集
### 1.1 LogoDet-3K数据集
<img src="../../images/logo/logodet3k.jpg" style="zoom:50%;" />
LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类别,约20万个高质量的人工标注的标识对象和158652张图片。相关数据介绍参考[原论文](https://arxiv.org/abs/2008.05359)
## 数据预处理
### 1.2 数据预处理
由于原始的数据集中,图像包含标注的检测框,在识别阶段只考虑检测器抠图后的logo区域,因此采用原始的标注框抠出Logo区域图像构成训练集,排除背景在识别阶段的影响。对数据集进行划分,产生155427张训练集,覆盖3000个logo类别(同时作为测试时gallery图库),3225张测试集,用于作为查询集。抠图后的训练集可[在此下载](https://arxiv.org/abs/2008.05359)
- 图像`Resize`到224
......@@ -25,7 +25,7 @@ LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类
- Normlize:归一化到0~1
- [RandomErasing](https://arxiv.org/pdf/1708.04896v2.pdf)
## Backbone的具体设置
## 2 Backbone的具体设置
具体是用`ResNet50`作为backbone,主要做了如下修改:
......@@ -37,7 +37,7 @@ LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类
具体代码:[ResNet50_last_stage_stride1](../../../ppcls/arch/backbone/variant_models/resnet_variant.py)
## Loss的设置
## 3 Loss的设置
在Logo识别中,使用了[Pairwise Cosface + CircleMargin](https://arxiv.org/abs/2002.10857) 联合训练,其中权重比例为1:1
......
......@@ -8,12 +8,12 @@
整体配置文件:[ResNet50.yaml](../../../ppcls/configs/Vehicle/ResNet50.yaml)
## 数据集
## 1 数据集
在此demo中,使用[CompCars](http://mmlab.ie.cuhk.edu.hk/datasets/comp_cars/index.html)作为训练数据集。
<img src="../../images/recognotion/vehicle/CompCars.png"/>
![](../../images/recognotion/vehicle/CompCars.png)
图像主要来自网络和监控数据,其中网络数据包含163个汽车制造商、1716个汽车型号的汽车。共**136,726**张全车图像,**27,618**张部分车图像。其中网络汽车数据包含bounding box、视角、5个属性(最大速度、排量、车门数、车座数、汽车类型)。监控数据包含**50,000**张前视角图像。
值得注意的是,此数据集中需要根据自己的需要生成不同的label,如本demo中,将不同年份生产的相同型号的车辆视为同一类,因此,类别总数为:431类。
## Loss设置
## 2 Loss设置
与车辆ReID不同,在此分类中,Loss使用的是[TtripLet Loss](../../../ppcls/loss/triplet.py) + [ArcLoss](../../../ppcls/arch/gears/arcmargin.py),权重比例1:1。
......@@ -5,13 +5,14 @@ ReID,也就是 Re-identification,其定义是利用算法,在图像库中
- Loss函数的相关设置
全部的超参数及具体配置:[ResNet50_ReID.yaml](../../../ppcls/configs/Vehicle/ResNet50_ReID.yaml)
## 数据集及预处理
### VERI-Wild数据集
## 1 数据集及预处理
### 1.1 VERI-Wild数据集
<img src="../../images/recognotion/vehicle/cars.JPG" style="zoom:50%;" />
此数据集是在一个大型闭路电视监控系统,在无约束的场景下,一个月内(30*24小时)中捕获的。该系统由174个摄像头组成,其摄像机分布在200多平方公里的大型区域。原始车辆图像集包含1200万个车辆图像,经过数据清理和标注,采集了416314张40671个不同的车辆图像。[具体详见论文](https://github.com/PKU-IMRE/VERI-Wild)
## 数据预处理
### 1.2 数据预处理
由于原始的数据集中,车辆图像已经是由检测器检测后crop出的车辆图像,因此无需像训练`ImageNet`中图像crop操作。整体的数据增强方式,按照顺序如下:
- 图像`Resize`到224
- 随机水平翻转
......@@ -19,13 +20,12 @@ ReID,也就是 Re-identification,其定义是利用算法,在图像库中
- Normlize:归一化到0~1
- [RandomErasing](https://arxiv.org/pdf/1708.04896v2.pdf)
## Backbone的具体设置
## 2 Backbone的具体设置
具体是用`ResNet50`作为backbone,但在`ResNet50`基础上做了如下修改:
- 对Last Stage(第4个stage),没有做下采样,即第4个stage的feature map和第3个stage的feature map大小一致,都是14x14。
- 在最后加入一个embedding 层,即1x1的卷积层,特征维度为512
具体代码:[ResNet50_last_stage_stride1](../../../ppcls/arch/backbone/variant_models/resnet_variant.py)
- 0在最后加入一个embedding 层,即1x1的卷积层,特征维度为512
具体代码:[ResNet50_last_stage_stride1](../../../ppcls/arch/backbone/variant_models/resnet_variant.py)
## Loss的设置
## 3 Loss的设置
车辆ReID中,使用了[SupConLoss](https://arxiv.org/abs/2004.11362) + [ArcLoss](https://arxiv.org/abs/1801.07698),其中权重比例为1:1
具体代码详见:[SupConLoss代码](../../../ppcls/loss/supconloss.py)[ArcLoss代码](../../../ppcls/arch/gears/arcmargin.py)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册