quick_start_recognition.md 22.1 KB
Newer Older
littletomatodonkey's avatar
littletomatodonkey 已提交
1 2
# 图像识别快速开始

H
HydrogenSulfate 已提交
3
本文档包含 2 个部分:PP-ShiTu android端 demo 快速体验与PP-ShiTu PC端 demo 快速体验。
littletomatodonkey's avatar
littletomatodonkey 已提交
4 5 6 7 8

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

## 目录

H
HydrogenSulfate 已提交
9 10 11
- [1. PP-ShiTu android端 demo 快速体验](#1-pp-shitu-android端-demo-快速体验)
  - [1.1 安装 PP-ShiTu android demo](#11-安装-pp-shitu-android-demo)
  - [1.2 功能体验](#12-功能体验)
H
HydrogenSulfate 已提交
12 13
    - [1.2.1 图像检索](#121-图像检索)
    - [1.2.2 图像加库](#122-图像加库)
14 15
    - [1.2.3 保存检索库](#123-保存检索库)
    - [1.2.4 初始化检索库](#124-初始化检索库)
H
HydrogenSulfate 已提交
16
    - [1.2.5 查看检索库标签](#125-查看检索库标签)
H
HydrogenSulfate 已提交
17
  - [1.3 功能详细介绍](#13-功能详细介绍)
H
HydrogenSulfate 已提交
18 19
    - [1.3.1 图像检索](#131-图像检索)
    - [1.3.2 图像加库](#132-图像加库)
20 21
    - [1.3.3 保存检索库](#133-保存检索库)
    - [1.3.4 初始化检索库](#134-初始化检索库)
22
    - [1.3.5 查看检索库标签](#135-查看检索库标签)
H
HydrogenSulfate 已提交
23 24 25 26 27
- [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-瓶装饮料识别与检索)
H
HydrogenSulfate 已提交
28 29
      - [2.2.2.1 识别单张图像](#2221-识别单张图像)
      - [2.2.2.2 基于文件夹的批量识别](#2222-基于文件夹的批量识别)
H
HydrogenSulfate 已提交
30 31 32 33
  - [2.3 未知类别的图像识别体验](#23-未知类别的图像识别体验)
    - [2.3.1 准备新的数据与标签](#231-准备新的数据与标签)
    - [2.3.2 建立新的索引库](#232-建立新的索引库)
    - [2.3.3 基于新的索引库的图像识别](#233-基于新的索引库的图像识别)
H
HydrogenSulfate 已提交
34
  - [2.4 服务端识别模型列表](#24-服务端识别模型列表)
H
HydrogenSulfate 已提交
35

H
HydrogenSulfate 已提交
36
<a name="PP-ShiTu android端 快速体验"></a>
H
HydrogenSulfate 已提交
37 38

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

H
HydrogenSulfate 已提交
40 41
<a name="安装"></a>

H
HydrogenSulfate 已提交
42
### 1.1 安装 PP-ShiTu android demo
S
sibo2rr 已提交
43

H
HydrogenSulfate 已提交
44
可以通过扫描二维码或者[点击链接](https://paddle-imagenet-models-name.bj.bcebos.com/demos/PP-ShiTu.apk)下载并安装APP
45

D
dongshuilong 已提交
46
<div align=center><img src="../../images/quick_start/android_demo/PPShiTu_qrcode.png" height="400" width="400"/></div>
H
HydrogenSulfate 已提交
47 48

<a name="功能体验"></a>
H
HydrogenSulfate 已提交
49

H
HydrogenSulfate 已提交
50
### 1.2 功能体验
51
目前 PP-ShiTu android demo 具有图像检索、图像加库、保存检索库、初始化检索库、查看检索库标签等基本功能,接下来介绍如何体验这几个功能。
H
HydrogenSulfate 已提交
52

H
HydrogenSulfate 已提交
53 54 55 56 57
#### 1.2.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便会将图像中的主体框标注出来并且在图像下方给出预测的类别以及预测时间等信息。

假设待检索的图像如下:

58
<img src="../../images/recognition/drink_data_demo/test_images/nongfu_spring.jpeg" width="400" height="600"/>
H
HydrogenSulfate 已提交
59 60

得到的检索结果可视化如下:
61

H
HydrogenSulfate 已提交
62
<img src="../../images/quick_start/android_demo/android_nongfu_spring.JPG" width="400" height="800"/>
63

H
HydrogenSulfate 已提交
64
#### 1.2.2 图像加库
H
HydrogenSulfate 已提交
65
点击上方的“拍照上传”按钮<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`),点击“确定”按钮,即可将图片对应的特征向量与标签加入检索库。
66

67 68
#### 1.2.3 保存检索库
点击上方的“保存修改”按钮<img src="../../images/quick_start/android_demo/baocunxiugai_100.png" width="25" height="25"/>,即可将当前库以 `latest` 的库名保存下来。
69

H
HydrogenSulfate 已提交
70
#### 1.2.4 初始化检索库
71
点击上方的“初始化 ”按钮<img src="../../images/quick_start/android_demo/reset_100.png" width="25" height="25"/>,即可将当前库初始化为 `original`
72

H
HydrogenSulfate 已提交
73
#### 1.2.5 查看检索库标签
H
HydrogenSulfate 已提交
74
点击“类别查询”按钮<img src="../../images/quick_start/android_demo/leibiechaxun_100.png" width="25" height="25"/>,即可在弹窗中查看。
H
HydrogenSulfate 已提交
75 76

<a name="功能介绍"></a>
H
HydrogenSulfate 已提交
77

H
HydrogenSulfate 已提交
78 79
### 1.3 功能详细介绍

H
HydrogenSulfate 已提交
80 81 82 83 84 85
#### 1.3.1 图像检索
在选择好要检索的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量并在检索库中检索,返回并显示最终的检索结果。

#### 1.3.2 图像加库
在选择好要入库的图片之后,首先会通过检测模型进行主体检测,得到图像中的物体的区域,然后将这块区域裁剪出来输入到识别模型中,得到对应的特征向量,再与用户输入的图像标签一起加入到检索库中。

86 87
#### 1.3.3 保存检索库
将当前程序中的库以 `latest` 的库名保存到手机中,并且自动切换到该库上。保存逻辑与一般软件的“另存为”类似。如果当前库已经是 `latest` 则会自动覆盖,如果是 `original` 则会切换到 `latest`
H
HydrogenSulfate 已提交
88

H
HydrogenSulfate 已提交
89
#### 1.3.4 初始化检索库
90
初始化库时会自动将检索库和标签库切换成 `original.index``original.txt`,并自动删除手机中的 `latest.index``latest.txt`(如果存在的话)。
H
HydrogenSulfate 已提交
91

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


## 2. PP-ShiTu PC端 demo 快速体验
H
HydrogenSulfate 已提交
97 98 99

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

H
HydrogenSulfate 已提交
100
### 2.1 环境配置
littletomatodonkey's avatar
littletomatodonkey 已提交
101

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

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

H
HydrogenSulfate 已提交
106
  ```shell
littletomatodonkey's avatar
littletomatodonkey 已提交
107 108 109 110
  cd deploy
  ```

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

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

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

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

118 119
| 模型简介                | 推荐场景  | inference 模型 | 预测配置文件  |
| ---------------------- | -------- | -----------  | ------------ |
120 121
| 轻量级通用主体检测模型 | 通用场景 | [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)                     | -                                                                        |
| 轻量级通用识别模型     | 通用场景 | [tar 格式下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.tar) \| [zip 格式下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/PP-ShiTuV2/general_PPLCNetV2_base_pretrained_v1.0_infer.zip) | [inference_general.yaml](../../../deploy/configs/inference_general.yaml) |
G
gaotingquan 已提交
122

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

H
HydrogenSulfate 已提交
125 126 127
本章节 demo 数据下载地址如下: [drink_dataset_v2.0.tar(瓶装饮料数据)](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar)

下面以 **drink_dataset_v2.0.tar** 为例介绍PC端的 PP-ShiTu 快速体验流程。用户也可以自行下载并解压其它场景的数据进行体验:[22种场景数据下载](../introduction/ppshitu_application_scenarios.md#1-应用场景介绍)
littletomatodonkey's avatar
littletomatodonkey 已提交
128

129
如果希望体验服务端主体检测和各垂类方向的识别模型,可以参考 [2.4 服务端识别模型列表](#24-服务端识别模型列表)
littletomatodonkey's avatar
littletomatodonkey 已提交
130

littletomatodonkey's avatar
littletomatodonkey 已提交
131 132
**注意**

133 134 135 136 137 138 139 140 141
- windows 环境下如果没有安装 wget, 可以按照下面的步骤安装 wget 与 tar 命令,也可以在下载模型时将链接复制到浏览器中下载,并解压放置在相应目录下; linux 或者 macOS 用户可以右键点击,然后复制下载链接,即可通过 `wget` 命令下载。
- 如果 macOS 环境下没有安装 `wget` 命令,可以运行下面的命令进行安装。
    ```shell
    # 安装 homebrew
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)";
    # 安装 wget
    brew install wget
    ```
- 如果希望在 windows 环境下安装 wget,可以参考:[链接](https://www.cnblogs.com/jeshy/p/10518062.html);如果希望在 windows 环境中安装 tar 命令,可以参考:[链接](https://www.cnblogs.com/chooperman/p/14190107.html)
littletomatodonkey's avatar
littletomatodonkey 已提交
142

H
HydrogenSulfate 已提交
143
<a name="2.2.1"></a>
G
gaotingquan 已提交
144

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

littletomatodonkey's avatar
littletomatodonkey 已提交
147
下载 demo 数据集以及轻量级主体检测、识别模型,命令如下。
littletomatodonkey's avatar
littletomatodonkey 已提交
148 149 150 151 152

```shell
mkdir models
cd models
# 下载通用检测 inference 模型并解压
littletomatodonkey's avatar
littletomatodonkey 已提交
153
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 已提交
154
# 下载识别 inference 模型并解压
H
HydrogenSulfate 已提交
155
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_PPLCNetV2_base_pretrained_v1.0_infer.tar
littletomatodonkey's avatar
littletomatodonkey 已提交
156 157 158

cd ../
# 下载 demo 数据并解压
H
HydrogenSulfate 已提交
159
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar && tar -xf drink_dataset_v2.0.tar
littletomatodonkey's avatar
littletomatodonkey 已提交
160 161
```

H
HydrogenSulfate 已提交
162
解压完毕后,`drink_dataset_v2.0/` 文件夹下应有如下文件结构:
littletomatodonkey's avatar
littletomatodonkey 已提交
163

H
HydrogenSulfate 已提交
164
```log
H
HydrogenSulfate 已提交
165
├── drink_dataset_v2.0/
littletomatodonkey's avatar
littletomatodonkey 已提交
166 167
│   ├── gallery/
│   ├── index/
168 169
│   ├── index_all/
│   └── test_images/
littletomatodonkey's avatar
littletomatodonkey 已提交
170 171 172
├── ...
```

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

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

H
HydrogenSulfate 已提交
177
```log
H
HydrogenSulfate 已提交
178
├── general_PPLCNetV2_base_pretrained_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
179 180 181
│   ├── inference.pdiparams
│   ├── inference.pdiparams.info
│   └── inference.pdmodel
littletomatodonkey's avatar
littletomatodonkey 已提交
182
├── picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
183 184 185 186 187 188 189
│   ├── inference.pdiparams
│   ├── inference.pdiparams.info
│   └── inference.pdmodel
```

**注意**

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

```shell
193 194 195
python3.7 python/build_gallery.py \
-c configs/inference_general.yaml \
-o Global.rec_inference_model_dir=./models/general_PPLCNetV2_base_pretrained_v1.0_infer
littletomatodonkey's avatar
littletomatodonkey 已提交
196 197
```

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

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

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

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

```python
H
HydrogenSulfate 已提交
207
python3.7 -m pip install faiss-cpu==1.7.1post2
littletomatodonkey's avatar
littletomatodonkey 已提交
208 209
```

210
若使用时,不能正常引用,则 `uninstall` 之后,重新 `install`,尤其是 windows 下。
littletomatodonkey's avatar
littletomatodonkey 已提交
211 212 213

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

H
HydrogenSulfate 已提交
214
##### 2.2.2.1 识别单张图像
littletomatodonkey's avatar
littletomatodonkey 已提交
215

H
HydrogenSulfate 已提交
216
运行下面的命令,对图像 `./drink_dataset_v2.0/test_images/100.jpeg` 进行识别与检索
littletomatodonkey's avatar
littletomatodonkey 已提交
217

218 219 220 221
待检索图像如下所示

![](../../images/recognition/drink_data_demo/test_images/100.jpeg)

littletomatodonkey's avatar
littletomatodonkey 已提交
222
```shell
S
sibo2rr 已提交
223
# 使用下面的命令使用 GPU 进行预测
littletomatodonkey's avatar
littletomatodonkey 已提交
224
python3.7 python/predict_system.py -c configs/inference_general.yaml
225

S
sibo2rr 已提交
226
# 使用下面的命令使用 CPU 进行预测
littletomatodonkey's avatar
littletomatodonkey 已提交
227
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.use_gpu=False
littletomatodonkey's avatar
littletomatodonkey 已提交
228 229 230 231 232
```


最终输出结果如下。

H
HydrogenSulfate 已提交
233
```log
H
HydrogenSulfate 已提交
234
[{'bbox': [437, 71, 660, 728], 'rec_docs': '元气森林', 'rec_scores': 0.7740249}, {'bbox': [221, 72, 449, 701], 'rec_docs': '元气森林', 'rec_scores': 0.6950992}, {'bbox': [794, 104, 979, 652], 'rec_docs': '元气森林', 'rec_scores': 0.6305153}]
littletomatodonkey's avatar
littletomatodonkey 已提交
235 236
```

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

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

H
HydrogenSulfate 已提交
241
![](../../images/recognition/drink_data_demo/output/100.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
242 243 244


<a name="基于文件夹的批量识别"></a>
H
HydrogenSulfate 已提交
245 246

##### 2.2.2.2 基于文件夹的批量识别
littletomatodonkey's avatar
littletomatodonkey 已提交
247 248 249 250

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

```shell
S
sibo2rr 已提交
251
# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
H
HydrogenSulfate 已提交
252
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.infer_imgs="./drink_dataset_v2.0/test_images/"
littletomatodonkey's avatar
littletomatodonkey 已提交
253 254 255 256
```

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

H
HydrogenSulfate 已提交
257
```log
littletomatodonkey's avatar
littletomatodonkey 已提交
258
...
H
HydrogenSulfate 已提交
259 260 261 262 263 264 265 266 267 268 269
[{'bbox': [0, 0, 600, 600], 'rec_docs': '红牛-强化型', 'rec_scores': 0.74081033}]
Inference: 120.39852142333984 ms per batch image
[{'bbox': [0, 0, 514, 436], 'rec_docs': '康师傅矿物质水', 'rec_scores': 0.6918598}]
Inference: 32.045602798461914 ms per batch image
[{'bbox': [138, 40, 573, 1198], 'rec_docs': '乐虎功能饮料', 'rec_scores': 0.68214047}]
Inference: 113.41428756713867 ms per batch image
[{'bbox': [328, 7, 467, 272], 'rec_docs': '脉动', 'rec_scores': 0.60406065}]
Inference: 122.04337120056152 ms per batch image
[{'bbox': [242, 82, 498, 726], 'rec_docs': '味全_每日C', 'rec_scores': 0.5428652}]
Inference: 37.95266151428223 ms per batch image
[{'bbox': [437, 71, 660, 728], 'rec_docs': '元气森林', 'rec_scores': 0.7740249}, {'bbox': [221, 72, 449, 701], 'rec_docs': '元气森林', 'rec_scores': 0.6950992}, {'bbox': [794, 104, 979, 652], 'rec_docs': '元气森林', 'rec_scores': 0.6305153}]
littletomatodonkey's avatar
littletomatodonkey 已提交
270 271 272
...
```

273
所有图像的识别结果可视化图像也保存在 `output` 文件夹内。
littletomatodonkey's avatar
littletomatodonkey 已提交
274 275 276 277 278

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

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

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

281 282 283 284 285 286 287
对图像 `./drink_dataset_v2.0/test_images/mosilian.jpeg` 进行识别

待检索图像如下

![](../../images/recognition/drink_data_demo/test_images/mosilian.jpeg)

执行如下识别命令
littletomatodonkey's avatar
littletomatodonkey 已提交
288 289 290

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

294
可以发现输出结果为空
littletomatodonkey's avatar
littletomatodonkey 已提交
295 296 297

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

298
当索引库中的图像无法覆盖我们实际识别的场景时,即识别未知类别的图像前,我们需要将该未知类别的相似图像(至少一张)添加到索引库中,从而完成对未知类别的图像识别。这一过程不需要重新训练模型,以识别 `mosilian.jpeg` 为例,只需按以下步骤重新构建新的索引库即可。
littletomatodonkey's avatar
littletomatodonkey 已提交
299 300

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

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

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

306
然后需要编辑记录了图像路径和标签信息的文本文件,这里 PaddleClas 将更新后的标签信息文件放在了 `drink_dataset_v2.0/gallery/drink_label_all.txt` 文件中。与原始的 `drink_dataset_v2.0/gallery/drink_label.txt` 标签文件进行对比,可以发现新增了光明和三元系列牛奶的索引图像。
littletomatodonkey's avatar
littletomatodonkey 已提交
307

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

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

H
HydrogenSulfate 已提交
312
#### 2.3.2 建立新的索引库
littletomatodonkey's avatar
littletomatodonkey 已提交
313

314
使用下面的命令构建新的索引库 `index_all`
littletomatodonkey's avatar
littletomatodonkey 已提交
315 316

```shell
H
HydrogenSulfate 已提交
317
python3.7 python/build_gallery.py -c configs/inference_general.yaml -o IndexProcess.data_file="./drink_dataset_v2.0/gallery/drink_label_all.txt" -o IndexProcess.index_dir="./drink_dataset_v2.0/index_all"
littletomatodonkey's avatar
littletomatodonkey 已提交
318 319
```

320
最终构建完毕的新的索引库保存在文件夹 `./drink_dataset_v2.0/index_all` 下。具体 `yaml` 请参考[向量检索文档](../image_recognition_pipeline/vector_search.md)
littletomatodonkey's avatar
littletomatodonkey 已提交
321 322 323

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

H
HydrogenSulfate 已提交
324
#### 2.3.3 基于新的索引库的图像识别
littletomatodonkey's avatar
littletomatodonkey 已提交
325

326
使用新的索引库,重新对 `mosilian.jpeg` 图像进行识别,运行命令如下。
littletomatodonkey's avatar
littletomatodonkey 已提交
327 328 329

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

输出结果如下。

H
HydrogenSulfate 已提交
335
```log
H
HydrogenSulfate 已提交
336
[{'bbox': [290, 297, 564, 919], 'rec_docs': '光明_莫斯利安', 'rec_scores': 0.59137374}]
littletomatodonkey's avatar
littletomatodonkey 已提交
337 338
```

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

S
sibo2rr 已提交
341
![](../../images/recognition/drink_data_demo/output/mosilian.jpeg)
littletomatodonkey's avatar
littletomatodonkey 已提交
342 343


H
HydrogenSulfate 已提交
344
<a name="5"></a>
H
HydrogenSulfate 已提交
345

H
HydrogenSulfate 已提交
346
### 2.4 服务端识别模型列表
littletomatodonkey's avatar
littletomatodonkey 已提交
347

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

350 351
| 模型简介         | 推荐场景       | inference 模型   | 预测配置文件                                                             |
| ---------------- | -------------- | ------------  | ----------- |
H
HydrogenSulfate 已提交
352 353 354 355 356 357
| 通用主体检测模型 | 通用场景       | [模型下载链接](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 已提交
358

359
可以按照如下命令下载上述模型到 `deploy/models` 文件夹中,以供识别任务使用
S
sibo2rr 已提交
360
```shell
361
cd ./deploy
S
sibo2rr 已提交
362
mkdir -p models
363

S
sibo2rr 已提交
364
cd ./models
365
# 下载服务器端通用主体检测模型并解压
S
sibo2rr 已提交
366
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
367
# 下载通用识别模型并解压
368 369 370
wget {识别模型下载链接地址} && tar -xf {压缩包的名称}
```

371
然后使用如下命令下载各个识别场景的测试数据:
372 373

```shell
S
sibo2rr 已提交
374
# 回到 deploy 目录下
S
sibo2rr 已提交
375
cd ..
376 377 378 379 380 381
# 下载测试数据并解压
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 已提交
382
```log
383 384 385 386 387 388 389 390 391 392 393 394
├── recognition_demo_data_v1.1
│   ├── gallery_cartoon
│   ├── gallery_logo
│   ├── gallery_product
│   ├── gallery_vehicle
│   ├── test_cartoon
│   ├── test_logo
│   ├── test_product
│   └── test_vehicle
├── ...
```

395
按照上述步骤下载模型和测试数据后,您可以重新建立索引库,并进行相关方向识别模型的测试。
396

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