提交 bbf68965 编写于 作者: D dongshuilong

update lite_shitu doc

上级 8211c039
...@@ -124,11 +124,13 @@ PaddleClas 提供了转换并优化后的推理模型,可以直接参考下方 ...@@ -124,11 +124,13 @@ PaddleClas 提供了转换并优化后的推理模型,可以直接参考下方
```shell ```shell
# 进入lite_ppshitu目录 # 进入lite_ppshitu目录
cd $PaddleClas/deploy/lite_shitu cd $PaddleClas/deploy/lite_shitu
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/lite/ppshitu_lite_models_v1.2.tar wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/lite/ppshituv2_lite_models_v1.0.tar
tar -xf ppshitu_lite_models_v1.2.tar tar -xf ppshituv2_lite_models_v1.0.tar
rm -f ppshitu_lite_models_v1.2.tar rm -f ppshituv2_lite_models_v1.0.tar
``` ```
此模型是PP-ShiTu V2的检测和特征模型的量化模型,存储大小约为14M,相对于非量化模型,模型加速一倍左右,精度降低不到一个点。如果想用非量化模型,可以参考[使用其他模型](#2.1.2)
<a name="2.1.2"></a> <a name="2.1.2"></a>
#### 2.1.2 使用其他模型 #### 2.1.2 使用其他模型
...@@ -214,13 +216,13 @@ cp $code_path/PaddleDetection/inference/picodet_lcnet_x2_5_640_mainbody/mainbody ...@@ -214,13 +216,13 @@ cp $code_path/PaddleDetection/inference/picodet_lcnet_x2_5_640_mainbody/mainbody
```shell ```shell
# 识别模型下载 # 识别模型下载
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.tar
# 解压模型 # 解压模型
tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar tar -xf general_PPLCNetV2_base_pretrained_v1.0_infer.tar
# 转换为Paddle-Lite模型 # 转换为Paddle-Lite模型
paddle_lite_opt --model_file=general_PPLCNet_x2_5_lite_v1.0_infer/inference.pdmodel --param_file=general_PPLCNet_x2_5_lite_v1.0_infer/inference.pdiparams --optimize_out=general_PPLCNet_x2_5_lite_v1.0_infer/rec paddle_lite_opt --model_file=general_PPLCNetV2_base_pretrained_v1.0_infer/inference.pdmodel --param_file=general_PPLCNetV2_base_pretrained_v1.0_infer/inference.pdiparams --optimize_out=general_PPLCNetV2_base_pretrained_v1.0_infer/rec
# 将模型文件拷贝到lite_shitu下 # 将模型文件拷贝到lite_shitu下
cp general_PPLCNet_x2_5_lite_v1.0_infer/rec.nb deploy/lite_shitu/models/ cp general_PPLCNetV2_base_pretrained_v1.0_infer/rec.nb deploy/lite_shitu/models/
``` ```
**注意**`--optimize_out` 参数为优化后模型的保存路径,无需加后缀`.nb``--model_file` 参数为模型结构信息文件的路径,`--param_file` 参数为模型权重信息文件的路径,请注意文件名。 **注意**`--optimize_out` 参数为优化后模型的保存路径,无需加后缀`.nb``--model_file` 参数为模型结构信息文件的路径,`--param_file` 参数为模型权重信息文件的路径,请注意文件名。
...@@ -242,17 +244,17 @@ cd $PaddleClas ...@@ -242,17 +244,17 @@ cd $PaddleClas
python setup.py install python setup.py install
cd deploy cd deploy
# 下载瓶装饮料数据集 # 下载瓶装饮料数据集
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar && tar -xf drink_dataset_v1.0.tar wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar && tar -xf drink_dataset_v2.0.tar
rm -rf drink_dataset_v1.0.tar rm -rf drink_dataset_v2.0.tar
rm -rf drink_dataset_v1.0/index rm -rf drink_dataset_v2.0/index
# 安装1.5.3版本的faiss # 安装1.5.3版本的faiss
pip install faiss-cpu==1.5.3 pip install faiss-cpu==1.5.3
# 下载通用识别模型,可替换成自己的inference model # 下载通用识别模型,可替换成自己的inference model
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.tar
tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar tar -xf general_PPLCNetV2_base_pretrained_v1.0_infer.tar
rm -rf general_PPLCNet_x2_5_lite_v1.0_infer.tar rm -rf general_PPLCNetV2_base_pretrained_v1.0_infer.tar
``` ```
<a name="2.2.2"></a> <a name="2.2.2"></a>
...@@ -262,11 +264,11 @@ rm -rf general_PPLCNet_x2_5_lite_v1.0_infer.tar ...@@ -262,11 +264,11 @@ rm -rf general_PPLCNet_x2_5_lite_v1.0_infer.tar
```shell ```shell
# 生成新的index库,注意指定好识别模型的路径,同时将index_mothod修改成Flat,HNSW32和IVF在此版本中可能存在bug,请慎重使用。 # 生成新的index库,注意指定好识别模型的路径,同时将index_mothod修改成Flat,HNSW32和IVF在此版本中可能存在bug,请慎重使用。
# 如果使用自己的识别模型,对应的修改inference model的目录 # 如果使用自己的识别模型,对应的修改inference model的目录
python python/build_gallery.py -c configs/inference_drink.yaml -o Global.rec_inference_model_dir=general_PPLCNet_x2_5_lite_v1.0_infer -o IndexProcess.index_method=Flat python python/build_gallery.py -c configs/inference_drink.yaml -o Global.rec_inference_model_dir=general_PPLCNetV2_base_pretrained_v1.0_infer -o IndexProcess.index_method=Flat
# 进入到lite_shitu目录 # 进入到lite_shitu目录
cd lite_shitu cd lite_shitu
mv ../drink_dataset_v1.0 . mv ../drink_dataset_v2.0 .
``` ```
<a name="2.3"></a> <a name="2.3"></a>
...@@ -275,13 +277,15 @@ mv ../drink_dataset_v1.0 . ...@@ -275,13 +277,15 @@ mv ../drink_dataset_v1.0 .
```shell ```shell
# 如果测试单张图像,路径使用相对路径 # 如果测试单张图像,路径使用相对路径
python generate_json_config.py --det_model_path ppshitu_lite_models_v1.2/mainbody_PPLCNet_x2_5_640_v1.2_lite.nb --rec_model_path ppshitu_lite_models_v1.2/general_PPLCNet_x2_5_lite_v1.2_infer.nb --img_path images/demo.jpeg python generate_json_config.py --det_model_path ppshituv2_lite_models_v1.0/mainbody_PPLCNet_x2_5_640_quant_v1.0_lite.nb --rec_model_path ppshituv2_lite_models_v1.0/general_PPLCNetV2_base_quant_v1.0_lite.nb --img_path images/demo.jpeg
# or # or
# 如果测试多张图像 # 如果测试多张图像
python generate_json_config.py --det_model_path ppshitu_lite_models_v1.2/mainbody_PPLCNet_x2_5_640_v1.2_lite.nb --rec_model_path ppshitu_lite_models_v1.2/general_PPLCNet_x2_5_lite_v1.2_infer.nb --img_dir images python generate_json_config.py --det_model_path ppshituv2_lite_models_v1.0/mainbody_PPLCNet_x2_5_640_quant_v1.0_lite.nb --rec_model_path ppshituv2_lite_models_v1.0/general_PPLCNetV2_base_quant_v1.0_lite.nb --img_dir images
# 执行完成后,会在lit_shitu下生成shitu_config.json配置文件 # 执行完成后,会在lit_shitu下生成shitu_config.json配置文件
``` ```
**注意**:生成json文件的时候,请注意修改好模型路径,特别是使用自己生成的`.nb`模型时
<a name="2.4"></a> <a name="2.4"></a>
### 2.4 index字典转换 ### 2.4 index字典转换
...@@ -289,7 +293,6 @@ python generate_json_config.py --det_model_path ppshitu_lite_models_v1.2/mainbod ...@@ -289,7 +293,6 @@ python generate_json_config.py --det_model_path ppshitu_lite_models_v1.2/mainbod
由于python的检索库字典,使用`pickle`进行的序列化存储,导致C++不方便读取,因此需要进行转换 由于python的检索库字典,使用`pickle`进行的序列化存储,导致C++不方便读取,因此需要进行转换
```shell ```shell
# 转化id_map.pkl为id_map.txt # 转化id_map.pkl为id_map.txt
python transform_id_map.py -c ../configs/inference_drink.yaml python transform_id_map.py -c ../configs/inference_drink.yaml
``` ```
...@@ -349,8 +352,8 @@ make ARM_ABI=arm8 ...@@ -349,8 +352,8 @@ make ARM_ABI=arm8
```shell ```shell
mkdir deploy mkdir deploy
# 移动的模型路径要和之前生成的json文件中模型路径一致 # 移动的模型路径要和之前生成的json文件中模型路径一致
mv ppshitu_lite_models_v1.2 deploy/ mv ppshituv2_lite_models_v1.0 deploy/
mv drink_dataset_v1.0 deploy/ mv drink_dataset_v2.0 deploy/
mv images deploy/ mv images deploy/
mv shitu_config.json deploy/ mv shitu_config.json deploy/
cp pp_shitu deploy/ cp pp_shitu deploy/
...@@ -363,12 +366,12 @@ cp ../../../cxx/lib/libpaddle_light_api_shared.so deploy/ ...@@ -363,12 +366,12 @@ cp ../../../cxx/lib/libpaddle_light_api_shared.so deploy/
```shell ```shell
deploy/ deploy/
|-- ppshitu_lite_models_v1.1/ |-- ppshituv2_lite_models_v1.0/
| |--mainbody_PPLCNet_x2_5_640_quant_v1.1_lite.nb 优化后的主体检测模型文件 | |--mainbody_PPLCNet_x2_5_640_quant_v1.0_lite.nb 优化后的主体检测模型文件
| |--general_PPLCNet_x2_5_lite_v1.1_infer.nb 优化后的识别模型文件 | |--general_PPLCNetV2_base_quant_v1.0_lite.nb 优化后的识别模型文件
|-- images/ |-- images/
| |--demo.jpg 图片文件 | |--demo.jpg 图片文件
|-- drink_dataset_v1.0/ 瓶装饮料demo数据 |-- drink_dataset_v2.0/ 瓶装饮料demo数据
| |--index 检索index目录 | |--index 检索index目录
|-- pp_shitu 生成的移动端执行文件 |-- pp_shitu 生成的移动端执行文件
|-- shitu_config.json 执行时参数配置文件 |-- shitu_config.json 执行时参数配置文件
...@@ -399,8 +402,7 @@ chmod 777 pp_shitu ...@@ -399,8 +402,7 @@ chmod 777 pp_shitu
运行效果如下: 运行效果如下:
``` ```
images/demo.jpeg: images/demo.jpeg:
result0: bbox[344, 98, 527, 593], score: 0.811656, label: 红牛-强化型 result1: bbox[0, 0, 600, 600], score: 0.696782, label: 红牛-强化型
result1: bbox[0, 0, 600, 600], score: 0.729664, label: 红牛-强化型
``` ```
<a name="FAQ"></a> <a name="FAQ"></a>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册