Skip to content

update doc #2279

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Sep 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 17 additions & 15 deletions docs/zh_CN/PPShiTu/PPShiTuV2_introduction.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## PP-ShiTuV2图像识别系统
## PP-ShiTu V2图像识别系统

## 目录

- [1. PP-ShiTuV2模型和应用场景介绍](#1-pp-shituv2模型和应用场景介绍)
- [1. PP-ShiTu V2模型和应用场景介绍](#1-pp-shituv2模型和应用场景介绍)
- [2. 模型快速体验](#2-模型快速体验)
- [2.1 PP-ShiTu android demo 快速体验](#21-pp-shitu-android-demo-快速体验)
- [2.2 命令行代码快速体验](#22-命令行代码快速体验)
Expand All @@ -18,10 +18,10 @@
- [4.3 基于 Python 预测引擎推理](#43-基于-python-预测引擎推理)
- [4.3.1 预测单张图像](#431-预测单张图像)
- [4.3.2 基于文件夹的批量预测](#432-基于文件夹的批量预测)
- [4.3 基于 C++ 预测引擎推理](#43-基于-c-预测引擎推理)
- [4.4 服务化部署](#44-服务化部署)
- [4.5 端侧部署](#45-端侧部署)
- [4.6 Paddle2ONNX 模型转换与预测](#46-paddle2onnx-模型转换与预测)
- [4.4 基于 C++ 预测引擎推理](#44-基于-c-预测引擎推理)
- [4.5 服务化部署](#45-服务化部署)
- [4.6 端侧部署](#46-端侧部署)
- [4.7 Paddle2ONNX 模型转换与预测](#47-paddle2onnx-模型转换与预测)
- [参考文献](#参考文献)

## 1. PP-ShiTuV2模型和应用场景介绍
Expand Down Expand Up @@ -52,7 +52,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别

可以通过扫描二维码或者 [点击链接](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>

然后将以下体验图片保存到手机上:

Expand All @@ -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>

更详细的说明参考[PP-ShiTu android demo功能说明](https://github.com/weisy11/PaddleClas/blob/develop/docs/zh_CN/quick_start/quick_start_recognition.md)

### 2.2 命令行代码快速体验

- 首先按照以下命令,安装paddlepaddle和faiss
```shell
# 如果您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
python3.7 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple

# 如果您的机器是CPU,请运行以下命令安装
python3.7 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

# 安装 faiss 库
python3.7 -m pip install faiss-cpu==1.7.1post2
```
Expand All @@ -80,7 +82,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
```shell
# 进入到PaddleClas根目录下
cd PaddleClas

# 安装paddleclas
python3.7 setup.py install
```
Expand All @@ -90,7 +92,7 @@ PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别
```shell
# 下载并解压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

# 执行识别命令
paddleclas \
--model_name=PP-ShiTuV2 \
Expand Down Expand Up @@ -231,18 +233,18 @@ Inference: 37.95266151428223 ms per batch image

其中 `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) 完成相应的预测库编译和模型预测工作。

### 4.4 服务化部署
### 4.5 服务化部署
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) 来完成相应的部署工作。

### 4.5 端侧部署
### 4.6 端侧部署
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)。

PaddleClas 提供了基于 Paddle2ONNX 来完成 inference 模型转换 ONNX 模型并作推理预测的示例,您可以参考 [Paddle2ONNX 模型转换与预测](../../../deploy/paddle2onnx/readme.md) 来完成相应的部署工作。
Expand Down
59 changes: 21 additions & 38 deletions docs/zh_CN/quick_start/quick_start_recognition.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,14 @@
# 图像识别快速开始
## 图像识别快速体验

本文档包含 2 个部分:PP-ShiTu android端 demo 快速体验与PP-ShiTu PC端 demo 快速体验。

如果图像类别已经存在于图像索引库中,那么可以直接参考[图像识别体验](#图像识别体验)章节,完成图像识别过程;如果希望识别未知类别的图像,即图像类别之前不存在于索引库中,那么可以参考[未知类别的图像识别体验](#未知类别的图像识别体验)章节,完成建立索引并识别的过程。

## 目录

- [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.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-查看检索库标签)
- [1.2 操作说明](#12-操作说明)
- [2. PP-ShiTu PC端 demo 快速体验](#2-pp-shitu-pc端-demo-快速体验)
- [2.1 环境配置](#21-环境配置)
- [2.2 图像识别体验](#22-图像识别体验)
Expand All @@ -33,9 +22,9 @@
- [2.3.3 基于新的索引库的图像识别](#233-基于新的索引库的图像识别)
- [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>

Expand All @@ -50,9 +39,11 @@
### 1.2 功能体验
目前 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/recognition/drink_data_demo/test_images/nongfu_spring.jpeg" width="400" height="600"/>
Expand All @@ -61,36 +52,28 @@

<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`),点击“确定”按钮,即可将图片对应的特征向量与标签加入检索库。

#### 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` 的库名保存到手机中,并且自动切换到该库上。保存逻辑与一般软件的“另存为”类似。如果当前库已经是 `latest` 则会自动覆盖,如果是 `original` 则会切换到 `latest`。
初始化库时会删掉`latest`库(如果存在),自动将检索库和标签库切换成 `original.index` 和 `original.txt`。不管是否有保存过,自定义的标签和类别都会被清空。

#### 1.3.4 初始化检索库
初始化库时会自动将检索库和标签库切换成 `original.index` 和 `original.txt`,并自动删除手机中的 `latest.index` 和 `latest.txt`(如果存在的话)
#### (5) 查看当前检索库中的类别列表
点击“类别查询”按钮<img src="../../images/quick_start/android_demo/leibiechaxun_100.png" width="25" height="25"/>,即可在弹窗中查看

#### 1.3.5 查看检索库标签
可按照 [功能体验-查看检索库标签](#125-查看检索库标签) 中说明进行查看,当检索标签库过多(如本demo自带的196类检索标签库)时,可在弹窗中滑动查看。
当检索标签库过多(如本demo自带的196类检索标签库)时,可在弹窗中滑动查看。


## 2. PP-ShiTu PC端 demo 快速体验
Expand Down