quick_start_recognition.md 21.0 KB
Newer Older
littletomatodonkey's avatar
littletomatodonkey 已提交
1 2 3 4 5 6 7 8
# 图像识别快速开始

本文档包含 3 个部分:环境配置、图像识别体验、未知类别的图像识别体验。

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

## 目录

H
HydrogenSulfate 已提交
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
- [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.3 功能详细介绍](#13-功能详细介绍)
- [2. PP-ShiTu PC端 demo 快速体验](#2-pp-shitu-pc端-demo-快速体验)
  - [2.1 环境配置](#21-环境配置)
  - [2.2 图像识别体验](#22-图像识别体验)
    - [2.2.1 下载、解压 inference 模型与 demo 数据](#221-下载解压-inference-模型与-demo-数据)
    - [2.2.2 瓶装饮料识别与检索](#222-瓶装饮料识别与检索)
      - [2.2.3 识别单张图像](#223-识别单张图像)
      - [2.2.4 基于文件夹的批量识别](#224-基于文件夹的批量识别)
  - [2.3 未知类别的图像识别体验](#23-未知类别的图像识别体验)
    - [2.3.1 准备新的数据与标签](#231-准备新的数据与标签)
    - [2.3.2 建立新的索引库](#232-建立新的索引库)
    - [2.3.3 基于新的索引库的图像识别](#233-基于新的索引库的图像识别)
- [5. 服务端识别模型列表](#5-服务端识别模型列表)

<a name="PP-ShiTu demo 快速体验"></a>

## 1. PP-ShiTu android端 demo 快速体验
littletomatodonkey's avatar
littletomatodonkey 已提交
29 30

<a name="环境配置"></a>
H
HydrogenSulfate 已提交
31
### 1.1 安装 PP-ShiTu android demo
S
sibo2rr 已提交
32

H
HydrogenSulfate 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
可以通过扫描下方二维码或者[点击链接](https://paddle-imagenet-models-name.bj.bcebos.com/demos/PP-ShiTu.apk)下载并安装APP
<img src="../../images/quick_start/android_demo/PPShiTu_qcode.png" height="250" width="250" />

<a name="功能体验"></a>
### 1.2 功能体验

目前 PP-ShiTu android demo 具有图像检索、图像加库、库保存、更换检索库、查看检索库内的标签等基本功能,接下来介绍如何体验这几个功能。

1. 图像检索:点击上方的“相机”按钮<img src="../../images/quick_start/android_demo/zhaoxiangji.png" width="25" height="25"/>或者“放大镜”按钮<img src="../../images/quick_start/android_demo/sousuo.png" width="25" height="25"/>,拍摄一张图像或者选中一张图像,然后等待几秒钟,APP便会将图像中的主体框标注出来并且在图像下方给出预测的类别。
2. 图像加库:点击上方的“上传”按钮<img src="../../images/quick_start/android_demo/shangchuan.png" width="25" height="25"/>或者“加号”按钮<img src="../../images/quick_start/android_demo/jia.png" width="25" height="25"/>,即可拍摄一张图像或从图库中选择一张图像,然后再输入这张图像的类别名字(比如`keyboard`),点击“确定”按钮,即可完成图片入库。
3. 库保存:点击上方的“保存“按钮<img src="../../images/quick_start/android_demo/baocun.png" width="25" height="25"/>,再输入希望保存下的检索库与类别标签文件的文件名(如填入`data1`,为了简化逻辑,检索库文件`*.index`与类别标签文件`*.txt`使用相同的文件名),即可将当前库保存到手机内存中。
4. 更换检索库:点击上方的“齿轮“按钮<img src="../../images/quick_start/android_demo/shezhi.png" width="25" height="25"/>,点击“Label Path”一栏,在弹出的选项中选择需要更换的库,然后再点击“Index Path”,在弹出的选项中选择需要更换的类别标签文件(一般一个库对应一个类别标签文件,因此更换检索库意味着需要同时更换库文件和类别标签文件,否则可能会造成检索结果错误)。
5. 查看检索库的标签:首先点击上方的“齿轮“按钮,再点击“Label Path”,在弹出的选项中选择想要查看的标签文件,然后点击“查看当前标签库”按钮,在弹出的窗口中即可查看标签文件的内容。

<a name="功能介绍"></a>
### 1.3 功能详细介绍

1. 图像检索:在选择好要检索的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量并在检索库中检索,返回并显示最终的检索结果。
2. 图像加库:在选择好要入库的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量,再与用户输入的图像标签一起加入到检索库中。
3. 库保存:此功能只需输入希望保存的文件名即可,如输入`database_1`,则会将检索向量库保存为`database_1.index`,标签库保存为`database_1.txt`
4. 更换检索库:切换好检索向量库后,需要同时切换与之匹配的检索标签库。
5. 查看检索库的标签:可按照[功能体验-查看检索库的标签](#22-功能体验)中说明进行查看,当标签库过多(如本demo自带的986类标签库)时,可在弹窗中滑动查看。


<a name="环境配置"></a>

## 2. PP-ShiTu PC端 demo 快速体验
### 2.1 环境配置
littletomatodonkey's avatar
littletomatodonkey 已提交
61

W
weishengyu 已提交
62
* 安装:请先参考文档 [环境准备](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。
littletomatodonkey's avatar
littletomatodonkey 已提交
63 64 65

* 进入 `deploy` 运行目录。本部分所有内容与命令均需要在 `deploy` 目录下运行,可以通过下面的命令进入 `deploy` 目录。

H
HydrogenSulfate 已提交
66
  ```shell
littletomatodonkey's avatar
littletomatodonkey 已提交
67 68 69 70
  cd deploy
  ```

<a name="图像识别体验"></a>
S
sibo2rr 已提交
71

H
HydrogenSulfate 已提交
72
### 2.2 图像识别体验
littletomatodonkey's avatar
littletomatodonkey 已提交
73

littletomatodonkey's avatar
littletomatodonkey 已提交
74
轻量级通用主体检测模型与轻量级通用识别模型和配置文件下载方式如下表所示。
littletomatodonkey's avatar
littletomatodonkey 已提交
75

76 77
<a name="轻量级通用主体检测模型与轻量级通用识别模型"></a>

S
stephon 已提交
78 79
| 模型简介       | 推荐场景   | inference 模型  | 预测配置文件  |
| ------------  | ------------- | -------- | ------- |
B
Bin Lu 已提交
80
| 轻量级通用主体检测模型 | 通用场景  |[tar 格式下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar) [zip 格式文件下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.zip) | - |
S
stephon 已提交
81
| 轻量级通用识别模型 | 通用场景  | [tar 格式下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar) [zip 格式文件下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.zip) | [inference_general.yaml](../../../deploy/configs/inference_general.yaml) |
B
Bin Lu 已提交
82
| 轻量级通用识别二值模型 | 检索库很大, 存储受限场景  | [tar 格式下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_binary_v1.0_infer.tar) [zip 格式文件下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_binary_v1.0_infer.zip)| [inference_general_binary.yaml](../../../deploy/configs/inference_general_binary.yaml) |
G
gaotingquan 已提交
83 84

注意:由于部分解压缩软件在解压上述 `tar` 格式文件时存在问题,建议非命令行用户下载 `zip` 格式文件并解压。`tar` 格式文件建议使用命令 `tar xf xxx.tar` 解压。
littletomatodonkey's avatar
littletomatodonkey 已提交
85

littletomatodonkey's avatar
littletomatodonkey 已提交
86 87 88 89 90
本章节 demo 数据下载地址如下: [瓶装饮料数据下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar)


如果希望体验服务端主体检测和各垂类方向的识别模型,可以参考[第4章](#4)

littletomatodonkey's avatar
littletomatodonkey 已提交
91 92
**注意**

93
1. windows 环境下如果没有安装 wget, 可以按照下面的步骤安装 wget 与 tar 命令,也可以在下载模型时将链接复制到浏览器中下载,并解压放置在相应目录下; linux 或者 macOS 用户可以右键点击,然后复制下载链接,即可通过 `wget` 命令下载。
littletomatodonkey's avatar
littletomatodonkey 已提交
94 95 96 97 98
2. 如果 macOS 环境下没有安装 `wget` 命令,可以运行下面的命令进行安装。

```shell
# 安装 homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)";
S
sibo2rr 已提交
99
# 安装 wget
littletomatodonkey's avatar
littletomatodonkey 已提交
100 101 102
brew install wget
```

103
4. 如果希望在 windows 环境下安装 wget,可以参考:[链接](https://www.cnblogs.com/jeshy/p/10518062.html);如果希望在 windows 环境中安装 tar 命令,可以参考:[链接](https://www.cnblogs.com/chooperman/p/14190107.html)
littletomatodonkey's avatar
littletomatodonkey 已提交
104 105 106 107 108 109 110


* 可以按照下面的命令下载并解压数据与模型

```shell
mkdir models
cd models
S
sibo2rr 已提交
111
# 下载识别 inference 模型并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
112 113 114
wget {模型下载链接地址} && tar -xf {压缩包的名称}
cd ..

S
sibo2rr 已提交
115
# 下载 demo 数据并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
116 117 118
wget {数据下载链接地址} && tar -xf {压缩包的名称}
```

H
HydrogenSulfate 已提交
119
<a name="2.2.1"></a>
G
gaotingquan 已提交
120

H
HydrogenSulfate 已提交
121
#### 2.2.1 下载、解压 inference 模型与 demo 数据
littletomatodonkey's avatar
littletomatodonkey 已提交
122

littletomatodonkey's avatar
littletomatodonkey 已提交
123
下载 demo 数据集以及轻量级主体检测、识别模型,命令如下。
littletomatodonkey's avatar
littletomatodonkey 已提交
124 125 126 127 128

```shell
mkdir models
cd models
# 下载通用检测 inference 模型并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
129
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar && tar -xf picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar
littletomatodonkey's avatar
littletomatodonkey 已提交
130
# 下载识别 inference 模型并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
131
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/general_PPLCNet_x2_5_lite_v1.0_infer.tar && tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar
littletomatodonkey's avatar
littletomatodonkey 已提交
132 133 134

cd ../
# 下载 demo 数据并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
135
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar && tar -xf drink_dataset_v1.0.tar
littletomatodonkey's avatar
littletomatodonkey 已提交
136 137
```

littletomatodonkey's avatar
littletomatodonkey 已提交
138
解压完毕后,`drink_dataset_v1.0/` 文件夹下应有如下文件结构:
littletomatodonkey's avatar
littletomatodonkey 已提交
139

H
HydrogenSulfate 已提交
140
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
141 142 143 144
├── drink_dataset_v1.0/
│   ├── gallery/
│   ├── index/
│   ├── test_images/
littletomatodonkey's avatar
littletomatodonkey 已提交
145 146 147
├── ...
```

148
其中 `gallery` 文件夹中存放的是用于构建索引库的原始图像,`index` 表示基于原始图像构建得到的索引库信息,`test_images` 文件夹中存放的是用于测试识别效果的图像列表。
littletomatodonkey's avatar
littletomatodonkey 已提交
149 150 151 152


`models` 文件夹下应有如下文件结构:

H
HydrogenSulfate 已提交
153
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
154
├── general_PPLCNet_x2_5_lite_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
155 156 157
│   ├── inference.pdiparams
│   ├── inference.pdiparams.info
│   └── inference.pdmodel
littletomatodonkey's avatar
littletomatodonkey 已提交
158
├── picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
159 160 161 162 163 164 165
│   ├── inference.pdiparams
│   ├── inference.pdiparams.info
│   └── inference.pdmodel
```

**注意**

166
如果使用服务端通用识别模型,Demo 数据需要重新提取特征、够建索引,方式如下:
littletomatodonkey's avatar
littletomatodonkey 已提交
167 168

```shell
littletomatodonkey's avatar
littletomatodonkey 已提交
169
# 下面是使用下载的服务端商品识别模型进行索引库构建
S
stephon 已提交
170
python3.7 python/build_gallery.py -c configs/inference_general.yaml -o Global.rec_inference_model_dir=./models/general_PPLCNet_x2_5_lite_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
171 172
```

littletomatodonkey's avatar
littletomatodonkey 已提交
173
<a name="瓶装饮料识别与检索"></a>
174

H
HydrogenSulfate 已提交
175
#### 2.2.2 瓶装饮料识别与检索
littletomatodonkey's avatar
littletomatodonkey 已提交
176

littletomatodonkey's avatar
littletomatodonkey 已提交
177
以瓶装饮料识别 demo 为例,展示识别与检索过程(如果希望尝试其他方向的识别与检索效果,在下载解压好对应的 demo 数据与模型之后,替换对应的配置文件即可完成预测)。
littletomatodonkey's avatar
littletomatodonkey 已提交
178 179 180 181 182 183 184

注意,此部分使用了 `faiss` 作为检索库,安装方法如下:

```python
pip install faiss-cpu==1.7.1post2
```

185
若使用时,不能正常引用,则 `uninstall` 之后,重新 `install`,尤其是 windows 下。
littletomatodonkey's avatar
littletomatodonkey 已提交
186 187 188

<a name="识别单张图像"></a>

H
HydrogenSulfate 已提交
189
##### 2.2.3 识别单张图像
littletomatodonkey's avatar
littletomatodonkey 已提交
190

littletomatodonkey's avatar
littletomatodonkey 已提交
191
运行下面的命令,对图像 `./drink_dataset_v1.0/test_images/nongfu_spring.jpeg` 进行识别与检索
littletomatodonkey's avatar
littletomatodonkey 已提交
192 193

```shell
S
sibo2rr 已提交
194
# 使用下面的命令使用 GPU 进行预测
littletomatodonkey's avatar
littletomatodonkey 已提交
195
python3.7 python/predict_system.py -c configs/inference_general.yaml
S
sibo2rr 已提交
196
# 使用下面的命令使用 CPU 进行预测
littletomatodonkey's avatar
littletomatodonkey 已提交
197
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.use_gpu=False
littletomatodonkey's avatar
littletomatodonkey 已提交
198 199 200 201
```

待检索图像如下所示。

S
sibo2rr 已提交
202
![](../../images/recognition/drink_data_demo/test_images/nongfu_spring.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
203 204 205 206


最终输出结果如下。

H
HydrogenSulfate 已提交
207
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
208
[{'bbox': [244, 49, 509, 964], 'rec_docs': '农夫山泉-饮用天然水', 'rec_scores': 0.7585664}]
littletomatodonkey's avatar
littletomatodonkey 已提交
209 210
```

211
其中 `bbox` 表示检测出的主体所在位置,`rec_docs` 表示索引库中与检测框最为相似的类别,`rec_scores` 表示对应的置信度。
littletomatodonkey's avatar
littletomatodonkey 已提交
212

213
检测的可视化结果也保存在 `output` 文件夹下,对于本张图像,识别结果可视化如下所示。
littletomatodonkey's avatar
littletomatodonkey 已提交
214

S
sibo2rr 已提交
215
![](../../images/recognition/drink_data_demo/output/nongfu_spring.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
216 217 218


<a name="基于文件夹的批量识别"></a>
H
HydrogenSulfate 已提交
219
##### 2.2.4 基于文件夹的批量识别
littletomatodonkey's avatar
littletomatodonkey 已提交
220 221 222 223

如果希望预测文件夹内的图像,可以直接修改配置文件中的 `Global.infer_imgs` 字段,也可以通过下面的 `-o` 参数修改对应的配置。

```shell
S
sibo2rr 已提交
224
# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
littletomatodonkey's avatar
littletomatodonkey 已提交
225
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.infer_imgs="./drink_dataset_v1.0/test_images/"
littletomatodonkey's avatar
littletomatodonkey 已提交
226 227 228 229
```

终端中会输出该文件夹内所有图像的识别结果,如下所示。

H
HydrogenSulfate 已提交
230
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
231
...
littletomatodonkey's avatar
littletomatodonkey 已提交
232 233 234 235 236 237 238 239 240 241 242
[{'bbox': [345, 95, 524, 586], 'rec_docs': '红牛-强化型', 'rec_scores': 0.80164653}]
Inference: 23.43583106994629 ms per batch image
[{'bbox': [233, 0, 372, 436], 'rec_docs': '康师傅矿物质水', 'rec_scores': 0.72513914}]
Inference: 117.95639991760254 ms per batch image
[{'bbox': [138, 40, 573, 1198], 'rec_docs': '乐虎功能饮料', 'rec_scores': 0.7855944}]
Inference: 22.172927856445312 ms per batch image
[{'bbox': [328, 7, 467, 272], 'rec_docs': '脉动', 'rec_scores': 0.5829516}]
Inference: 118.08514595031738 ms per batch image
[{'bbox': [242, 82, 498, 726], 'rec_docs': '味全_每日C', 'rec_scores': 0.75581443}]
Inference: 150.06470680236816 ms per batch image
[{'bbox': [437, 71, 660, 728], 'rec_docs': '元气森林', 'rec_scores': 0.8478892}, {'bbox': [221, 72, 449, 701], 'rec_docs': '元气森林', 'rec_scores': 0.6790612}, {'bbox': [794, 104, 979, 652], 'rec_docs': '元气森林', 'rec_scores': 0.6292581}]
littletomatodonkey's avatar
littletomatodonkey 已提交
243 244 245
...
```

246
所有图像的识别结果可视化图像也保存在 `output` 文件夹内。
littletomatodonkey's avatar
littletomatodonkey 已提交
247 248 249 250 251 252


更多地,可以通过修改 `Global.rec_inference_model_dir` 字段来更改识别 inference 模型的路径,通过修改 `IndexProcess.index_dir` 字段来更改索引库索引的路径。

<a name="未知类别的图像识别体验"></a>

H
HydrogenSulfate 已提交
253
### 2.3 未知类别的图像识别体验
littletomatodonkey's avatar
littletomatodonkey 已提交
254

littletomatodonkey's avatar
littletomatodonkey 已提交
255
对图像 `./drink_dataset_v1.0/test_images/mosilian.jpeg` 进行识别,命令如下
littletomatodonkey's avatar
littletomatodonkey 已提交
256 257 258

```shell
# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
littletomatodonkey's avatar
littletomatodonkey 已提交
259
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.infer_imgs="./drink_dataset_v1.0/test_images/mosilian.jpeg"
littletomatodonkey's avatar
littletomatodonkey 已提交
260 261 262 263
```

待检索图像如下所示。

S
sibo2rr 已提交
264
![](../../images/recognition/drink_data_demo/test_images/mosilian.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
265 266 267 268 269 270 271 272 273


输出结果为空。

由于默认的索引库中不包含对应的索引信息,所以这里的识别结果有误,此时我们可以通过构建新的索引库的方式,完成未知类别的图像识别。

当索引库中的图像无法覆盖我们实际识别的场景时,即在预测未知类别的图像时,我们需要将对应类别的相似图像添加到索引库中,从而完成对未知类别的图像识别,这一过程是不需要重新训练的。

<a name="准备新的数据与标签"></a>
S
sibo2rr 已提交
274

H
HydrogenSulfate 已提交
275
#### 2.3.1 准备新的数据与标签
littletomatodonkey's avatar
littletomatodonkey 已提交
276

littletomatodonkey's avatar
littletomatodonkey 已提交
277
首先需要将与待检索图像相似的图像列表拷贝到索引库原始图像的文件夹。这里 PaddleClas 已经将所有的图像数据都放在文件夹 `drink_dataset_v1.0/gallery/` 中。
littletomatodonkey's avatar
littletomatodonkey 已提交
278

littletomatodonkey's avatar
littletomatodonkey 已提交
279
然后需要编辑记录了图像路径和标签信息的文本文件,这里 PaddleClas 将更正后的标签信息文件放在了 `drink_dataset_v1.0/gallery/drink_label_all.txt` 文件中。可以与默认的 `drink_dataset_v1.0/gallery/drink_label.txt` 标签文件进行对比,添加了光明和三元系列牛奶的索引图像。
littletomatodonkey's avatar
littletomatodonkey 已提交
280 281


282
每一行的文本中,第一个字段表示图像的相对路径,第二个字段表示图像对应的标签信息,中间用 `\t` 键分隔开(注意:有些编辑器会将 `tab` 自动转换为 `空格`,这种情况下会导致文件解析报错)。
littletomatodonkey's avatar
littletomatodonkey 已提交
283 284

<a name="建立新的索引库"></a>
S
sibo2rr 已提交
285

H
HydrogenSulfate 已提交
286
#### 2.3.2 建立新的索引库
littletomatodonkey's avatar
littletomatodonkey 已提交
287 288 289 290

使用下面的命令构建 `index` 索引,加速识别后的检索过程。

```shell
S
stephon 已提交
291
python3.7 python/build_gallery.py -c configs/inference_general.yaml -o IndexProcess.data_file="./drink_dataset_v1.0/gallery/drink_label_all.txt" -o IndexProcess.index_dir="./drink_dataset_v1.0/index_all"
littletomatodonkey's avatar
littletomatodonkey 已提交
292 293
```

294
最终新的索引信息保存在文件夹 `./drink_dataset_v1.0/index_all` 中。具体 `yaml` 请参考[向量检索文档](../image_recognition_pipeline/vector_search.md)
littletomatodonkey's avatar
littletomatodonkey 已提交
295 296 297

<a name="基于新的索引库的图像识别"></a>

H
HydrogenSulfate 已提交
298
#### 2.3.3 基于新的索引库的图像识别
littletomatodonkey's avatar
littletomatodonkey 已提交
299 300 301 302 303

使用新的索引库,对上述图像进行识别,运行命令如下。

```shell
# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
littletomatodonkey's avatar
littletomatodonkey 已提交
304
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.infer_imgs="././drink_dataset_v1.0/test_images/mosilian.jpeg" -o IndexProcess.index_dir="./drink_dataset_v1.0/index_all"
littletomatodonkey's avatar
littletomatodonkey 已提交
305 306 307 308
```

输出结果如下。

H
HydrogenSulfate 已提交
309
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
310
[{'bbox': [396, 553, 508, 621], 'rec_docs': '光明_莫斯利安', 'rec_scores': 0.5921005}]
littletomatodonkey's avatar
littletomatodonkey 已提交
311 312
```

littletomatodonkey's avatar
littletomatodonkey 已提交
313
最终识别结果为`光明_莫斯利安`,识别正确,识别结果可视化如下所示。
littletomatodonkey's avatar
littletomatodonkey 已提交
314

S
sibo2rr 已提交
315
![](../../images/recognition/drink_data_demo/output/mosilian.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
316 317


H
HydrogenSulfate 已提交
318 319
<a name="5"></a>
## 5. 服务端识别模型列表
littletomatodonkey's avatar
littletomatodonkey 已提交
320

321
目前,我们更推荐您使用[轻量级通用主体检测模型与轻量级通用识别模型](#轻量级通用主体检测模型与轻量级通用识别模型),以获得更好的测试结果。但是如果您希望体验服务端识别模型,服务器端通用主体检测模型与各方向识别模型、测试数据下载地址以及对应的配置文件地址如下。
littletomatodonkey's avatar
littletomatodonkey 已提交
322

S
stephon 已提交
323 324 325 326 327 328 329 330
| 模型简介       | 推荐场景   | inference 模型  | 预测配置文件  |
| ------------  | ------------- | -------- | ------- |
| 通用主体检测模型 | 通用场景  |[模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar) | - |
| Logo 识别模型 | Logo 场景  | [模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/logo_rec_ResNet50_Logo3K_v1.0_infer.tar) | [inference_logo.yaml](../../../deploy/configs/inference_logo.yaml) |
| 动漫人物识别模型 | 动漫人物场景  | [模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/cartoon_rec_ResNet50_iCartoon_v1.0_infer.tar) | [inference_cartoon.yaml](../../../deploy/configs/inference_cartoon.yaml) |
| 车辆细分类模型 | 车辆场景  |  [模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/vehicle_cls_ResNet50_CompCars_v1.0_infer.tar) | [inference_vehicle.yaml](../../../deploy/configs/inference_vehicle.yaml) |
| 商品识别模型 | 商品场景  |  [模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/product_ResNet50_vd_aliproduct_v1.0_infer.tar) | [inference_product.yaml](../../../deploy/configs/inference_product.yaml) |
| 车辆 ReID 模型 | 车辆 ReID 场景 | [模型下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/vehicle_reid_ResNet50_VERIWild_v1.0_infer.tar) | [inference_vehicle.yaml](../../../deploy/configs/inference_vehicle.yaml) |
littletomatodonkey's avatar
littletomatodonkey 已提交
331

S
sibo2rr 已提交
332 333 334 335
```shell
cd PaddleClas/deploy/
mkdir -p models
```
336 337

```shell
S
sibo2rr 已提交
338
cd ./models
339
# 下载通用主体检测模型并解压
S
sibo2rr 已提交
340
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar && tar -xf ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar
341 342 343 344
# 下载识别模型并解压
wget {识别模型下载链接地址} && tar -xf {压缩包的名称}
```

S
sibo2rr 已提交
345
使用如下命令下载各方向识别模型的测试数据:
346 347

```shell
S
sibo2rr 已提交
348
# 回到 deploy 目录下
S
sibo2rr 已提交
349
cd ..
350 351 352 353 354 355
# 下载测试数据并解压
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/recognition_demo_data_en_v1.1.tar && tar -xf recognition_demo_data_en_v1.1.tar
```

解压完毕后,`recognition_demo_data_v1.1` 文件夹下应有如下文件结构:

H
HydrogenSulfate 已提交
356
```log
357 358 359 360 361 362 363 364 365 366 367 368 369 370
├── recognition_demo_data_v1.1
│   ├── gallery_cartoon
│   ├── gallery_logo
│   ├── gallery_product
│   ├── gallery_vehicle
│   ├── test_cartoon
│   ├── test_logo
│   ├── test_product
│   └── test_vehicle
├── ...
```

按照上述步骤下载模型和测试数据后,您可以进行相关方向识别模型的测试。

littletomatodonkey's avatar
littletomatodonkey 已提交
371
* 更多关于主体检测的介绍可以参考:[主体检测教程文档](../image_recognition_pipeline/mainbody_detection.md);关于特征提取的介绍可以参考:[特征提取教程文档](../image_recognition_pipeline/feature_extraction.md);关于向量检索的介绍可以参考:[向量检索教程文档](../image_recognition_pipeline/vector_search.md)