未验证 提交 688f44ea 编写于 作者: W Walter 提交者: GitHub

Merge pull request #2279 from weisy11/fix_doc

update doc
## PP-ShiTuV2图像识别系统 ## PP-ShiTu V2图像识别系统
## 目录 ## 目录
- [1. PP-ShiTuV2模型和应用场景介绍](#1-pp-shituv2模型和应用场景介绍) - [1. PP-ShiTu V2模型和应用场景介绍](#1-pp-shituv2模型和应用场景介绍)
- [2. 模型快速体验](#2-模型快速体验) - [2. 模型快速体验](#2-模型快速体验)
- [2.1 PP-ShiTu android demo 快速体验](#21-pp-shitu-android-demo-快速体验) - [2.1 PP-ShiTu android demo 快速体验](#21-pp-shitu-android-demo-快速体验)
- [2.2 命令行代码快速体验](#22-命令行代码快速体验) - [2.2 命令行代码快速体验](#22-命令行代码快速体验)
...@@ -18,10 +18,10 @@ ...@@ -18,10 +18,10 @@
- [4.3 基于 Python 预测引擎推理](#43-基于-python-预测引擎推理) - [4.3 基于 Python 预测引擎推理](#43-基于-python-预测引擎推理)
- [4.3.1 预测单张图像](#431-预测单张图像) - [4.3.1 预测单张图像](#431-预测单张图像)
- [4.3.2 基于文件夹的批量预测](#432-基于文件夹的批量预测) - [4.3.2 基于文件夹的批量预测](#432-基于文件夹的批量预测)
- [4.3 基于 C++ 预测引擎推理](#43-基于-c-预测引擎推理) - [4.4 基于 C++ 预测引擎推理](#44-基于-c-预测引擎推理)
- [4.4 服务化部署](#44-服务化部署) - [4.5 服务化部署](#45-服务化部署)
- [4.5 端侧部署](#45-端侧部署) - [4.6 端侧部署](#46-端侧部署)
- [4.6 Paddle2ONNX 模型转换与预测](#46-paddle2onnx-模型转换与预测) - [4.7 Paddle2ONNX 模型转换与预测](#47-paddle2onnx-模型转换与预测)
- [参考文献](#参考文献) - [参考文献](#参考文献)
## 1. PP-ShiTuV2模型和应用场景介绍 ## 1. PP-ShiTuV2模型和应用场景介绍
...@@ -52,7 +52,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别 ...@@ -52,7 +52,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
可以通过扫描二维码或者 [点击链接](https://paddle-imagenet-models-name.bj.bcebos.com/demos/PP-ShiTu.apk) 下载并安装APP 可以通过扫描二维码或者 [点击链接](https://paddle-imagenet-models-name.bj.bcebos.com/demos/PP-ShiTu.apk) 下载并安装APP
<div align=center><img src="../../images/quick_start/android_demo/PPShiTu_qrcode.png" height="45%" width="45%"/></div> <div align=center><img src="../../images/quick_start/android_demo/PPShiTu_qrcode.png" width="300"/></div>
然后将以下体验图片保存到手机上: 然后将以下体验图片保存到手机上:
...@@ -62,16 +62,18 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别 ...@@ -62,16 +62,18 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
<div align=center><img src="../../images/quick_start/android_demo/android_nongfu_spring.JPG" width=30% height=30%/></div> <div align=center><img src="../../images/quick_start/android_demo/android_nongfu_spring.JPG" width=30% height=30%/></div>
更详细的说明参考[PP-ShiTu android demo功能说明](https://github.com/weisy11/PaddleClas/blob/develop/docs/zh_CN/quick_start/quick_start_recognition.md)
### 2.2 命令行代码快速体验 ### 2.2 命令行代码快速体验
- 首先按照以下命令,安装paddlepaddle和faiss - 首先按照以下命令,安装paddlepaddle和faiss
```shell ```shell
# 如果您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装 # 如果您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
python3.7 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple python3.7 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
# 如果您的机器是CPU,请运行以下命令安装 # 如果您的机器是CPU,请运行以下命令安装
python3.7 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple python3.7 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
# 安装 faiss 库 # 安装 faiss 库
python3.7 -m pip install faiss-cpu==1.7.1post2 python3.7 -m pip install faiss-cpu==1.7.1post2
``` ```
...@@ -80,7 +82,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别 ...@@ -80,7 +82,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
```shell ```shell
# 进入到PaddleClas根目录下 # 进入到PaddleClas根目录下
cd PaddleClas cd PaddleClas
# 安装paddleclas # 安装paddleclas
python3.7 setup.py install python3.7 setup.py install
``` ```
...@@ -90,7 +92,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别 ...@@ -90,7 +92,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
```shell ```shell
# 下载并解压demo数据 # 下载并解压demo数据
wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar && tar -xf drink_dataset_v2.0.tar wget -nc https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar && tar -xf drink_dataset_v2.0.tar
# 执行识别命令 # 执行识别命令
paddleclas \ paddleclas \
--model_name=PP-ShiTuV2 \ --model_name=PP-ShiTuV2 \
...@@ -231,18 +233,18 @@ Inference: 37.95266151428223 ms per batch image ...@@ -231,18 +233,18 @@ Inference: 37.95266151428223 ms per batch image
其中 `bbox` 表示检测出的主体所在位置,`rec_docs` 表示索引库中与检测框最为相似的类别,`rec_scores` 表示对应的相似度。 其中 `bbox` 表示检测出的主体所在位置,`rec_docs` 表示索引库中与检测框最为相似的类别,`rec_scores` 表示对应的相似度。
### 4.3 基于 C++ 预测引擎推理 ### 4.4 基于 C++ 预测引擎推理
PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考 [服务器端 C++ 预测](../../../deploy/cpp_shitu/readme.md) 来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考 [基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md) 完成相应的预测库编译和模型预测工作。 PaddleClas 提供了基于 C++ 预测引擎推理的示例,您可以参考 [服务器端 C++ 预测](../../../deploy/cpp_shitu/readme.md) 来完成相应的推理部署。如果您使用的是 Windows 平台,可以参考 [基于 Visual Studio 2019 Community CMake 编译指南](../inference_deployment/cpp_deploy_on_windows.md) 完成相应的预测库编译和模型预测工作。
### 4.4 服务化部署 ### 4.5 服务化部署
Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考 [Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving) Paddle Serving 提供高性能、灵活易用的工业级在线推理服务。Paddle Serving 支持 RESTful、gRPC、bRPC 等多种协议,提供多种异构硬件和多种操作系统环境下推理解决方案。更多关于Paddle Serving 的介绍,可以参考 [Paddle Serving 代码仓库](https://github.com/PaddlePaddle/Serving)
PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考 [模型服务化部署](../inference_deployment/recognition_serving_deploy.md) 来完成相应的部署工作。 PaddleClas 提供了基于 Paddle Serving 来完成模型服务化部署的示例,您可以参考 [模型服务化部署](../inference_deployment/recognition_serving_deploy.md) 来完成相应的部署工作。
### 4.5 端侧部署 ### 4.6 端侧部署
Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考 [Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite) Paddle Lite 是一个高性能、轻量级、灵活性强且易于扩展的深度学习推理框架,定位于支持包括移动端、嵌入式以及服务器端在内的多硬件平台。更多关于 Paddle Lite 的介绍,可以参考 [Paddle Lite 代码仓库](https://github.com/PaddlePaddle/Paddle-Lite)
### 4.6 Paddle2ONNX 模型转换与预测 ### 4.7 Paddle2ONNX 模型转换与预测
Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考 [Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX) Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。更多关于 Paddle2ONNX 的介绍,可以参考 [Paddle2ONNX 代码仓库](https://github.com/PaddlePaddle/Paddle2ONNX)
PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考 [Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md) 来完成相应的部署工作。 PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考 [Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md) 来完成相应的部署工作。
......
# 图像识别快速开始 ## 图像识别快速体验
本文档包含 2 个部分:PP-ShiTu android端 demo 快速体验与PP-ShiTu PC端 demo 快速体验。 本文档包含 2 个部分:PP-ShiTu android端 demo 快速体验与PP-ShiTu PC端 demo 快速体验。
...@@ -6,20 +6,9 @@ ...@@ -6,20 +6,9 @@
## 目录 ## 目录
- [1. PP-ShiTu android端 demo 快速体验](#1-pp-shitu-android端-demo-快速体验) - [1. PP-ShiTu android demo 快速体验](#1-pp-shitu-android-demo-快速体验)
- [1.1 安装 PP-ShiTu android demo](#11-安装-pp-shitu-android-demo) - [1.1 安装 PP-ShiTu android demo](#11-安装-pp-shitu-android-demo)
- [1.2 功能体验](#12-功能体验) - [1.2 操作说明](#12-操作说明)
- [1.2.1 图像检索](#121-图像检索)
- [1.2.2 图像加库](#122-图像加库)
- [1.2.3 保存检索库](#123-保存检索库)
- [1.2.4 初始化检索库](#124-初始化检索库)
- [1.2.5 查看检索库标签](#125-查看检索库标签)
- [1.3 功能详细介绍](#13-功能详细介绍)
- [1.3.1 图像检索](#131-图像检索)
- [1.3.2 图像加库](#132-图像加库)
- [1.3.3 保存检索库](#133-保存检索库)
- [1.3.4 初始化检索库](#134-初始化检索库)
- [1.3.5 查看检索库标签](#135-查看检索库标签)
- [2. PP-ShiTu PC端 demo 快速体验](#2-pp-shitu-pc端-demo-快速体验) - [2. PP-ShiTu PC端 demo 快速体验](#2-pp-shitu-pc端-demo-快速体验)
- [2.1 环境配置](#21-环境配置) - [2.1 环境配置](#21-环境配置)
- [2.2 图像识别体验](#22-图像识别体验) - [2.2 图像识别体验](#22-图像识别体验)
...@@ -33,9 +22,9 @@ ...@@ -33,9 +22,9 @@
- [2.3.3 基于新的索引库的图像识别](#233-基于新的索引库的图像识别) - [2.3.3 基于新的索引库的图像识别](#233-基于新的索引库的图像识别)
- [2.4 服务端识别模型列表](#24-服务端识别模型列表) - [2.4 服务端识别模型列表](#24-服务端识别模型列表)
<a name="PP-ShiTu android 快速体验"></a> <a name="PP-ShiTu android 快速体验"></a>
## 1. PP-ShiTu android demo 快速体验 ## 1. PP-ShiTu android demo 快速体验
<a name="安装"></a> <a name="安装"></a>
...@@ -50,9 +39,11 @@ ...@@ -50,9 +39,11 @@
### 1.2 功能体验 ### 1.2 功能体验
目前 PP-ShiTu android demo 具有图像检索、图像加库、保存检索库、初始化检索库、查看检索库标签等基本功能,接下来介绍如何体验这几个功能。 目前 PP-ShiTu android demo 具有图像检索、图像加库、保存检索库、初始化检索库、查看检索库标签等基本功能,接下来介绍如何体验这几个功能。
#### 1.2.1 图像检索 #### (1)识别图像中的物体
点击下方的“拍照识别”按钮<img src="../../images/quick_start/android_demo/paizhaoshibie_100.png" width="25" height="25"/>或者“本地识别”按钮<img src="../../images/quick_start/android_demo/bendishibie_100.png" width="25" height="25"/>,即可拍摄一张图像或者选中一张图像,然后等待几秒钟,APP便会将图像中的主体框标注出来并且在图像下方给出预测的类别以及预测时间等信息。 点击下方的“拍照识别”按钮<img src="../../images/quick_start/android_demo/paizhaoshibie_100.png" width="25" height="25"/>或者“本地识别”按钮<img src="../../images/quick_start/android_demo/bendishibie_100.png" width="25" height="25"/>,即可拍摄一张图像或者选中一张图像,然后等待几秒钟,APP便会将图像中的主体框标注出来并且在图像下方给出预测的类别以及预测时间等信息。
在选择好要检索的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量并在检索库中检索,返回并显示最终的检索结果。
假设待检索的图像如下: 假设待检索的图像如下:
<img src="../../images/recognition/drink_data_demo/test_images/nongfu_spring.jpeg" width="400" height="600"/> <img src="../../images/recognition/drink_data_demo/test_images/nongfu_spring.jpeg" width="400" height="600"/>
...@@ -61,36 +52,28 @@ ...@@ -61,36 +52,28 @@
<img src="../../images/quick_start/android_demo/android_nongfu_spring.JPG" width="400" height="800"/> <img src="../../images/quick_start/android_demo/android_nongfu_spring.JPG" width="400" height="800"/>
#### 1.2.2 图像加库 #### (2)向检索库中添加新的类别或物体
点击上方的“拍照上传”按钮<img src="../../images/quick_start/android_demo/paizhaoshangchuan_100.png" width="25" height="25"/>或者“本地上传”按钮<img src="../../images/quick_start/android_demo/bendishangchuan_100.png" width="25" height="25"/>,即可拍摄一张图像或从图库中选择一张图像,然后再输入这张图像的类别名字(比如`keyboard`),点击“确定”按钮,即可将图片对应的特征向量与标签加入检索库。 点击上方的“拍照上传”按钮<img src="../../images/quick_start/android_demo/paizhaoshangchuan_100.png" width="25" height="25"/>或者“本地上传”按钮<img src="../../images/quick_start/android_demo/bendishangchuan_100.png" width="25" height="25"/>,即可拍摄一张图像或从图库中选择一张图像,然后再输入这张图像的类别名字(比如`keyboard`),点击“确定”按钮,即可将图片对应的特征向量与标签加入检索库。
#### 1.2.3 保存检索库 在选择好要入库的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量,再与用户输入的图像标签一起加入到检索库中。
点击上方的“保存修改”按钮<img src="../../images/quick_start/android_demo/baocunxiugai_100.png" width="25" height="25"/>,即可将当前库以 `latest` 的库名保存下来。
#### 1.2.4 初始化检索库
点击上方的“初始化 ”按钮<img src="../../images/quick_start/android_demo/reset_100.png" width="25" height="25"/>,即可将当前库初始化为 `original`
#### 1.2.5 查看检索库标签
点击“类别查询”按钮<img src="../../images/quick_start/android_demo/leibiechaxun_100.png" width="25" height="25"/>,即可在弹窗中查看。
<a name="功能介绍"></a> **温馨提示:** 使用安卓demo管理类别主要用于功能体验,如果您有较为重要的数据要生成检索库,推荐使用[检索库管理工具](https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/inference_deployment/shitu_gallery_manager.md)
### 1.3 功能详细介绍 #### (3) 保存检索库
点击上方的“保存修改”按钮<img src="../../images/quick_start/android_demo/baocunxiugai_100.png" width="25" height="25"/>,即可将当前库以 `latest` 的库名保存下来。
再次打开程序时,将会自动选择使用`latest`库。app仅存在一个自定义库,每次保存时会覆盖之前的库。
#### 1.3.1 图像检索 #### (4) 检索库恢复出厂设置
在选择好要检索的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量并在检索库中检索,返回并显示最终的检索结果。 **警告:本操作无法撤销,初始化后自定义的标签和类别都会被删除,请谨慎操作**
#### 1.3.2 图像加库 点击上方的“初始化 ”按钮<img src="../../images/quick_start/android_demo/reset_100.png" width="25" height="25"/>,删除所有自定义的标签和类别,恢复出厂特征库。
在选择好要入库的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量,再与用户输入的图像标签一起加入到检索库中。
#### 1.3.3 保存检索库 初始化库时会删掉`latest`库(如果存在),自动将检索库和标签库切换成 `original.index``original.txt`。不管是否有保存过,自定义的标签和类别都会被清空。
将当前程序中的库以 `latest` 的库名保存到手机中,并且自动切换到该库上。保存逻辑与一般软件的“另存为”类似。如果当前库已经是 `latest` 则会自动覆盖,如果是 `original` 则会切换到 `latest`
#### 1.3.4 初始化检索库 #### (5) 查看当前检索库中的类别列表
初始化库时会自动将检索库和标签库切换成 `original.index``original.txt`,并自动删除手机中的 `latest.index``latest.txt`(如果存在的话) 点击“类别查询”按钮<img src="../../images/quick_start/android_demo/leibiechaxun_100.png" width="25" height="25"/>,即可在弹窗中查看
#### 1.3.5 查看检索库标签 当检索标签库过多(如本demo自带的196类检索标签库)时,可在弹窗中滑动查看。
可按照 [功能体验-查看检索库标签](#125-查看检索库标签) 中说明进行查看,当检索标签库过多(如本demo自带的196类检索标签库)时,可在弹窗中滑动查看。
## 2. PP-ShiTu PC端 demo 快速体验 ## 2. PP-ShiTu PC端 demo 快速体验
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册