Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
595befc5
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看板
未验证
提交
595befc5
编写于
11月 08, 2021
作者:
B
Bin Lu
提交者:
GitHub
11月 08, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update feature_extraction.md
上级
1cafb486
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
7 addition
and
5 deletion
+7
-5
docs/zh_CN/image_recognition_pipeline/feature_extraction.md
docs/zh_CN/image_recognition_pipeline/feature_extraction.md
+7
-5
未找到文件。
docs/zh_CN/image_recognition_pipeline/feature_extraction.md
浏览文件 @
595befc5
...
...
@@ -3,15 +3,16 @@
特征提取是图像识别中的关键一环,它的作用是将输入的图片转化为固定维度的特征向量,用于后续的
[
向量检索
](
./vector_search.md
)
。好的特征需要具备相似度保持性,即在特征空间中,相似度高的图片对其特征相似度要比较高(距离比较近);相似度低的图片对,其特征相似度要比较小(距离比较远)。
[
Deep Metric Learning
](
../algorithm_introduction/metric_learning.md
)
用以研究如何通过深度学习的方法获得具有强表征能力的特征。
## 2. 网络结构
为了图像识别任务的灵活定制,我们将整个网络分为Backbone
, Neck, Head以及Loss部分,整体结构如下图所示,下面分别介绍各自的功能
:
为了图像识别任务的灵活定制,我们将整个网络分为Backbone
、 Neck、 Head以及Loss部分,整体结构如下图所示
:
![](
../../images/feature_extraction_framework.png
)
图中各个模块的功能为:
-
**Backbone**
: 指定所使用的骨干网络。 值得注意的是,PaddleClas提供的基于ImageNet的预训练模型,最后一层的输出为1000, 我们需要依据所需的特征维度定制最后一层的输出。
-
**Neck**
: 用以特征增强及特征维度变换。 这儿的Neck,可以是一个简单的Linear Layer,用来做特征维度变换;也可以是较复杂的FPN结构,用以做特征增强。
-
**Head**
: 用来将feature转化为logits。 除了常用的Fc Layer外,还可以替换为cosmargin, arcmargin, circlemargin等模块。
-
**Loss**
: 指定所使用的Loss函数。 我们将Loss设计为组合loss的形式, 可以方便得将Classification Loss和Pair_wise Loss组合在一起。
## 3. 通用识别模型
在PP-Shitu中, 我们采用[PP_LCNet_x2_5]
作为骨干网络, Neck部分选用Linear Layer, Head部分选用ArcMargin, Loss部分选用CELoss, 详细的配置文件见[通用商品识别配置文件](../../ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml)
。其中,训练数据为如下7个公开数据集的汇总:
在PP-Shitu中, 我们采用
[
PP_LCNet_x2_5
]
(
../models/PP-LCNet.md
)
作为骨干网络, Neck部分选用Linear Layer, Head部分选用
[
ArcMargin
](
https://arxiv.org/abs/1801.07698
)
, Loss部分选用CELoss,详细的配置文件见
[
通用商品识别配置文件
](
../../../ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml
)
。其中,训练数据为如下7个公开数据集的汇总:
| 数据集 | 数据量 | 类别数 | 场景 | 数据集地址 |
| :------------: | :-------------: | :-------: | :-------: | :--------: |
| Aliproduct | 2498771 | 50030 | 商品 |
[
地址
](
https://www.objects365.org/overview.html
)
|
...
...
@@ -25,7 +26,8 @@
最终的模型效果如下表所示:
# 4. 自定义识别
# 4. 自定义特征提取
自定义特征提取,是指依据自己的任务,重新训练特征提取模型。主要包含如下四个步骤:1)数据准备;2)模型训练;3)模型评估;4)模型推理。
## 4.1 数据准备
首先,需要基于任务的需要,定制自己的数据集。数据的制作方法,参见
...
...
@@ -42,8 +44,8 @@ python -m paddle.distributed.launch
--gpus
=
"0,1,2,3"
tools/train.py
-c
ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml
```
注意: 配置文件中默认采用
`在线评估`
的方式,如果你想加快训练速度,去除
`在线评估`
, 只需要在上述命令后面,
增加
`-o eval_during_train=False`
。
训练完毕
之后, 在output目录下会生成最终模型文件
`latest.pd*`
,
`best_model.pd*`
和训练日志文件
`train.log`
注意: 配置文件中默认采用
`在线评估`
的方式,如果你想加快训练速度,去除
`在线评估`
,只需要在上述命令后面,
增加
`-o eval_during_train=False`
。
训练完毕
后,在output目录下会生成最终模型文件
`latest.pd*`
,
`best_model.pd*`
和训练日志文件
`train.log`
。
## 4.3 模型评估
-
单卡评估
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录