add shitu deploy doc

pull/1636/head
dongshuilong 2021-12-02 12:06:15 +08:00 committed by Tingquan Gao
parent 150d3adfbe
commit 41e52dd995
1 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,66 @@
# PP-ShiTu迁移应用及调优
在[PP-ShiTu快速开始](../quick_start/quick_start_recognition.md)中,主要展示了`PP-ShiTu`的快速开始demo。那么本文档主要介绍如何将`PP-ShiTu`应用到自己的需求中,及如何继续调优,优化识别效果。具体可以分成以下三种情况
- 直接使用官方模型
- 根据需求对模型进行调优
- 模型加速
以下分别对上面三种情况进行具体讲解。
## 1 使用官方模型
对于其他的应用首先建议使用此种方法因为PaddleClas官方模型是经过大量数据训练得到的具有强大泛化性能的轻量级通用模型。其速度较快、精度较高在Intel cpu上直接部署也能快速得到结果。同时直接使用官方模型则无需训练新的模型节约时间方便快速部署。
使用官方模型具体步骤如下:
- 下载模型及数据准备
- 检索库更新
- 精度测试
### 1.1 下载官方模型及数据准备
模型下载及pipline 运行详见[图像识别快速开始](../quick_start/quick_start_recognition.md)
下载模型后要准备相应的数据即所迁移应用的具体数据数据量根据实际情况自行决定但是不能太少会影响精度。将准备的数据分成两部分1建库图像2测试图像。其中建库数据无需过多但需保证每个类别包含此类别物体不同角度的图像。请根据实际情况自行判断。
<a name="1.2 检索库更新"></a>
### 1.2 建立检索库gallery
对于加入检索的数据每个类别尽量准备此类别的各角度的图像丰富类别信息。准备的图像只能包含此类别同时图像背景尽可能的少、简单。如将要加入检索库的数据进行bbox标注裁剪出bbox图像作为新的要加入的图像或者使用检测器进行标注及过滤来提高检索库的图像质量。
收集好图像后,数据整理及建库流程详见[图像识别快速开始](../quick_start/quick_start_recognition.md)中`3.2 建立新的索引库`
### 1.3 精度测试
使用测试图像对整个pipline进行简单的精度测试。如发现类别不正确则需对gallery进行调整将不正确的测试图像的相似图片加入gallery中反复迭代。经过调整后可以测试出整个pipeline的精度。如果精度能够满足需求则可继续使用。若精度不达预期则需对模型进行调优参考下面文档。
## 2 模型调优
在使用官方模型之后,如果发现精度不达预期,则可对模型进行训练调优。同时,根据官方模型的结果,需要进一步大概判断出 检测模型精度、还是识别模型精度问题。不同模型的调优,可参考以下文档。
### 2.1 检测模型调优
`PP-ShiTu`中检测模型采用的 `PicoDet `算法,具体算法请参考[此文档](https://github.com/PaddlePaddle/PaddleDetection/tree/release/2.3/configs/picodet)。检测模型的训练及调优,请参考[此文档](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.3/README_cn.md)。
### 2.2 识别模型调优
在使用官方模型后,如果不满足精度需求,则可以参考此部分文档,进行模型调优
因为要对模型进行训练,所以收集自己的数据集。数据准备及相应格式请参考:[特征提取文档](../image_recognition_pipeline/feature_extraction.md)中 `4.1数据准备`部分、[识别数据集说明](../data_preparation/recognition_dataset.md)。值得注意的是,此部分需要准备大量的数据,以保证识别模型效果。训练配置文件参考:[通用识别模型配置文件](../../../ppcls/configs/GeneralRecognition/GeneralRecognition_PPLCNet_x2_5.yaml),训练方法参考:[识别模型训练](../models_training/recognition.md)
- 数据增强:根据实际情况选择不同数据增强方法。如:实际应用中数据遮挡比较严重,建议添加`RandomErasing`增强方法。详见[数据增强文档](./DataAugmentation.md)
- 换不同的`backbone`,一般来说,越大的模型,特征提取能力更强。不同`backbone`详见[模型介绍](../models/models_intro.md)
- 选择不同的`Metric Learning`方法。不同的`Metric Learning`方法,对不同的数据集效果可能不太一样,建议尝试其他`Loss`,详见[Metric Learning](../algorithm_introduction/metric_learning.md)
- 采用蒸馏方法,对小模型进行模型能力提升,详见[模型蒸馏](../algorithm_introduction/knowledge_distillation.md)
- 增补数据集。针对错误样本添加badcase数据
模型训练完成后,参照[1.2 检索库更新](#1.2 检索库更新)进行检索库更新。同时对整个pipeline进行测试如果精度不达预期则重复此步骤。
## 3 模型加速
模型加速主要以下几种方法:
- 替换小模型:一般来说,越小的模型预测速度相对越快
- 模型裁剪、量化:请参考文档[模型压缩](./model_prune_quantization.md),压缩配置文件修改请参考[slim相关配置文件](../../../ppcls/configs/slim/)。