Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
be56cac0
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
be56cac0
编写于
6月 09, 2021
作者:
F
Felix
提交者:
GitHub
6月 09, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update logo_recognition.md
上级
66c91788
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
161 addition
and
17 deletion
+161
-17
docs/zh_CN/application/logo_recognition.md
docs/zh_CN/application/logo_recognition.md
+161
-17
未找到文件。
docs/zh_CN/application/logo_recognition.md
浏览文件 @
be56cac0
...
@@ -6,33 +6,107 @@
...
@@ -6,33 +6,107 @@
-
Backbone的具体设置
-
Backbone的具体设置
-
Loss函数的相关设置
-
Loss函数的相关设置
全部的超参数及具体配置:
[
ResNet50_ReID.yaml
](
../../../ppcls/configs/Logo/ResNet50_ReID.yaml
)
## 数据集及预处理
## 数据集及预处理
### LogoDet-3K数据集
### LogoDet-3K数据集
<img
src=
"../../images/
logo/logodet3k.jpg"
alt=
"logodet3k"
style=
"zoom:2
0%;"
/>
<img
src=
"../../images/
recognotion/logo/logo3k.JPG"
style=
"zoom:5
0%;"
/>
LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类别,约20万个高质量的人工标注的标识对象和158652张图片。相关数据介绍参考
[
原论文
](
https://arxiv.org/abs/2008.05359
)
LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类别,约20万个高质量的人工标注的标识对象和158652张图片。相关数据介绍参考
[
原论文
](
https://arxiv.org/abs/2008.05359
)
### 数据预处理
## 数据预处理
由于原始的数据集中,图像包含标注的检测框,在识别阶段只考虑检测器抠图后的logo区域,因此采用原始的标注框抠出Logo区域图像构成训练集,排除背景在识别阶段的影响。对数据集进行划分,产生155427张训练集,覆盖3000个logo类别(同时作为测试时gallery图库),3225张测试集,用于作为查询集。抠图后的训练集可
[
在此下载
](
https://arxiv.org/abs/2008.05359
)
在训练阶段,采用如下
的数据增强方式,按照顺序如下:
由于原始的数据集中,车辆图像已经是由检测器检测后crop出的车辆图像,因此无需像训练
`ImageNet`
中图像crop操作。整体
的数据增强方式,按照顺序如下:
-
图像
`Resize`
到224
-
图像
`Resize`
到224
-
随机水平翻转
-
随机水平翻转
-
[
AugMix
](
https://arxiv.org/abs/1912.02781v1
)
-
[
AugMix
](
https://arxiv.org/abs/1912.02781v1
)
-
Normlize:归一化到0
~
1
-
Normlize:归一化到0
~
1
-
[
RandomErasing
](
https://arxiv.org/pdf/1708.04896v2.pdf
)
-
[
RandomErasing
](
https://arxiv.org/pdf/1708.04896v2.pdf
)
## Backbone的设置
在配置文件中设置如下,详见
`transform_ops`
部分:
具体是用
`ResNet50`
作为backbone,但在
`ResNet50`
基础上做了如下修改:
```
yaml
DataLoader
:
-
使用ImageNet预训练模型
Train
:
-
last stage stride=1, 保持最后输出特征图尺寸14x14
dataset
:
-
在最后加入一个embedding 卷积层,特征维度为512
# 具体使用的Dataset的的名称
name
:
"
LogoDataset"
# 使用此数据集的具体参数
image_root
:
"
dataset/LogoDet-3K-crop/train/"
cls_label_path
:
"
dataset/LogoDet-3K-crop/LogoDet-3K+train.txt"
# 图像增广策略:ResizeImage、RandFlipImage等
transform_ops
:
-
ResizeImage
:
size
:
224
-
RandFlipImage
:
flip_code
:
1
-
AugMix
:
prob
:
0.5
-
NormalizeImage
:
scale
:
0.00392157
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
RandomErasing
:
EPSILON
:
0.5
sl
:
0.02
sh
:
0.4
r1
:
0.3
mean
:
[
0.
,
0.
,
0.
]
sampler
:
name
:
DistributedRandomIdentitySampler
batch_size
:
128
num_instances
:
2
drop_last
:
False
shuffle
:
True
loader
:
num_workers
:
6
use_shared_memory
:
False
```
## Backbone的具体设置
具体是用
`ResNet50`
作为backbone,主要做了如下修改:
-
使用ImageNet预训练模型
-
last stage stride=1, 保持最后输出特征图尺寸14x14
-
在最后加入一个embedding 卷积层,特征维度为512
具体代码:
[
ResNet50_last_stage_stride1
](
../../../ppcls/arch/backbone/variant_models/resnet_variant.py
)
在配置文件中Backbone设置如下:
```
yaml
Arch
:
# 使用RecModel模型进行训练,目前支持普通ImageNet和RecModel两个方式
name
:
"
RecModel"
# 导出inference model的具体配置
infer_output_key
:
"
features"
infer_add_softmax
:
False
# 使用的Backbone
Backbone
:
name
:
"
ResNet50_last_stage_stride1"
pretrained
:
True
# 使用此层作为Backbone的feature输出,name为具体层的full_name
BackboneStopLayer
:
name
:
"
adaptive_avg_pool2d_0"
# Backbone的基础上,新增网络层。此模型添加1x1的卷积层(embedding)
Neck
:
name
:
"
VehicleNeck"
in_channels
:
2048
out_channels
:
512
# 增加CircleMargin head
Head
:
name
:
"
CircleMargin"
margin
:
0.35
scale
:
64
embedding_size
:
512
```
## Loss的设置
## Loss的设置
...
@@ -40,6 +114,76 @@ LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类
...
@@ -40,6 +114,76 @@ LogoDet-3K数据集是具有完整标注的Logo数据集,有3000个标识类
具体代码详见:
[
PairwiseCosface
](
../../../ppcls/loss/pairwisecosface.py
)
、
[
CircleMargin
](
../../../ppcls/arch/gears/circlemargin.py
)
具体代码详见:
[
PairwiseCosface
](
../../../ppcls/loss/pairwisecosface.py
)
、
[
CircleMargin
](
../../../ppcls/arch/gears/circlemargin.py
)
在配置文件中设置如下:
全部的超参数及具体配置:
[
ResNet50_ReID.yaml
](
../../../ppcls/configs/Logo/ResNet50_ReID.yaml
)
。
```
yaml
Loss
:
Train
:
-
CELoss
:
weight
:
1.0
-
PairwiseCosface
:
margin
:
0.35
gamma
:
64
weight
:
1.0
Eval
:
-
CELoss
:
weight
:
1.0
```
## 其他相关设置
### Optimizer设置
```
yaml
Optimizer
:
# 使用的优化器名称
name
:
Momentum
# 优化器具体参数
momentum
:
0.9
lr
:
# 使用的学习率调节具体名称
name
:
Cosine
# 学习率调节算法具体参数
learning_rate
:
0.01
regularizer
:
name
:
'
L2'
coeff
:
0.0001
```
### Eval Metric设置
```
yaml
Metric
:
Eval
:
# 使用Recallk和mAP两种评价指标
-
Recallk
:
topk
:
[
1
,
5
]
-
mAP
:
{}
```
### 其他超参数设置
```
yaml
Global
:
# 如为null则从头开始训练。若指定中间训练保存的状态地址,则继续训练
checkpoints
:
null
pretrained_model
:
null
output_dir
:
"
./output/"
device
:
"
gpu"
class_num
:
3000
# 保存模型的粒度,每个epoch保存一次
save_interval
:
1
eval_during_train
:
True
eval_interval
:
1
# 训练的epoch数
epochs
:
120
# log输出频率
print_batch_step
:
10
# 是否使用visualdl库
use_visualdl
:
False
# used for static mode and model export
image_shape
:
[
3
,
224
,
224
]
save_inference_dir
:
"
./inference"
# 使用retrival的方式进行评测
eval_mode
:
"
retrieval"
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录