Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
b659527b
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b659527b
编写于
10月 27, 2022
作者:
悟、
提交者:
Tingquan Gao
10月 28, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add ppshitu whl.md
上级
9d3c22f5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
168 addition
and
1 deletion
+168
-1
docs/zh_CN/deployment/PP-ShiTu/whl.md
docs/zh_CN/deployment/PP-ShiTu/whl.md
+155
-0
paddleclas.py
paddleclas.py
+13
-1
未找到文件。
docs/zh_CN/deployment/PP-ShiTu/whl.md
0 → 100644
浏览文件 @
b659527b
# PP-ShiTu Whl 使用说明
PaddleClas 支持 Python Whl 包方式进行预测。
---
## 目录
<a
name=
"1"
></a>
## 1. 安装 paddleclas
*
**[推荐]**
直接 pip 安装:
```
bash
pip3
install
paddleclas
```
*
如需使用 PaddleClas develop 分支体验最新功能,或是需要基于 PaddleClas 进行二次开发,请本地构建安装:
```
bash
python3 setup.py
install
```
*
进入
`deploy`
运行目录。本部分所有内容与命令均需要在
`deploy`
目录下运行,可以通过下面的命令进入
`deploy`
目录。
```
shell
cd
deploy
```
<a
name=
"2"
></a>
## 2. 快速开始
<a
name=
"2.1"
></a>
### 2.1 构建索引库
下载demo数据集以及轻量级主题检测、识别模型,命令如下:
```
shell
mkdir
models
cd
models
# 下载通用检测 inference 模型并解压
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
# 下载识别 inference 模型并解压
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
cd
../
# 下载 demo 数据并解压
wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v2.0.tar
&&
tar
-xf
drink_dataset_v2.0.tar
```
解压完毕后,
`drink_dataset_v2.0/`
文件夹下应有如下文件结构:
```
log
├── drink_dataset_v2.0/
│ ├── gallery/
│ ├── index/
│ ├── index_all/
│ └── test_images/
├── ...
```
其中
`gallery`
文件夹中存放的是用于构建索引库的原始图像,
`index`
表示基于原始图像构建得到的索引库信息,
`test_images`
文件夹中存放的是用于测试识别效果的图像列表。
`models`
文件夹下应有如下文件结构:
```
log
├── general_PPLCNetV2_base_pretrained_v1.0_infer
│ ├── inference.pdiparams
│ ├── inference.pdiparams.info
│ └── inference.pdmodel
├── picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer
│ ├── inference.pdiparams
│ ├── inference.pdiparams.info
│ └── inference.pdmodel
```
**在Python代码中构建索引库**
```
python
from
paddleclas
import
PaddleClas
build
=
PaddleClas
(
build_gallery
=
True
,
gallery_image_root
=
'./drink_dataset_v2.0/gallery/'
,
gallery_data_file
=
'./drink_dataset_v2.0/gallery/drink_label.txt'
,
index_dir
=
'./drink_dataset_v2.0/index'
)
```
参数说明:
-
build_gallery:是否使用索引库构建模式,默认为
`False`
。
-
gallery_image_root:构建索引库使用的
`gallery`
图像地址。
-
gallery_data_file:构建索引库图像的真值文件。
-
index_dir:索引库存放地址。
**在命令行中构建索引库**
```
shell
paddleclas
--build_gallery
=
True
--model_name
=
"PP-ShiTuV2"
\
-o
IndexProcess.image_root
=
./drink_dataset_v2.0/gallery/
\
-o
IndexProcess.index_dir
=
./drink_dataset_v2.0/index
\
-o
IndexProcess.data_file
=
./drink_dataset_v2.0/gallery/drink_label.txt
```
其中参数
`build_gallery(bool)`
控制是否使用索引库构建模式,默认为
`False`
。
同时可以通过
`-o`
指令更改构建索引库使用的配置,字段说明如下:
-
IndexProcess.image_root(str): 构建索引库使用的
`gallery`
图像地址。
-
IndexProcess.index_dir(str): 索引库存放地址。
-
IndexProcess.data_file(str): 构建索引库图像的真值文件。
<a
name=
"2.2"
></a>
### 2.2 瓶装饮料识别
体验瓶装饮料识别,对图像
`./drink_dataset_v2.0/test_images/001.jpeg`
进行识别与检索。
待检索图像如下:
![](
../../../images/recognition/drink_data_demo/test_images/100.jpeg
)
**在Python代码中进行识别和检索**
```
python
from
paddleclas
import
PaddleClas
clas
=
PaddleClas
(
model_name
=
'PP-ShiTuV2'
,
index_dir
=
'./drink_dataset_v2.0/index'
)
infer_imgs
=
'./drink_dataset_v2.0/test_images/001.jpeg'
result
=
clas
.
predict
(
infer_imgs
,
predict_type
=
'shitu'
)
print
(
next
(
result
))
```
参数说明:
-
model_name(str):用于检索和识别的模型。
-
index_dir(str):用于检索的索引库地址。
最终输出结果如下:
```
[{'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}]
```
**在命令行中进行识别和检索**
```
shell
paddleclas
--model_name
=
PP-ShiTuV2
--predict_type
=
shitu
\
-o
Global.infer_imgs
=
'./drink_dataset_v2.0/test_images/001.jpeg'
\
-o
IndexProcess.index_dir
=
'./drink_dataset_v2.0/index'
```
其中参数
`model_name`
为用于检索和识别的模型、
`predict_type`
设置为'shitu'模式。
同时可以通过
`-o`
指令更改检索图像以及索引库,字段说明如下:
-
Global.infer_imgs(str):待检索图像地址。
-
IndexProcess.index_dir(str): 索引库存放地址。
最终输出结果如下:
```
[{'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}], filename: ./drink_dataset_v2.0/test_images/100.jpeg
```
paddleclas.py
浏览文件 @
b659527b
...
@@ -554,6 +554,10 @@ class PaddleClas(object):
...
@@ -554,6 +554,10 @@ class PaddleClas(object):
"""
"""
def
__init__
(
self
,
def
__init__
(
self
,
build_gallery
:
bool
=
False
,
gallery_image_root
:
str
=
None
,
gallery_data_file
:
str
=
None
,
index_dir
:
str
=
None
,
model_name
:
str
=
None
,
model_name
:
str
=
None
,
inference_model_dir
:
str
=
None
,
inference_model_dir
:
str
=
None
,
**
kwargs
):
**
kwargs
):
...
@@ -568,13 +572,19 @@ class PaddleClas(object):
...
@@ -568,13 +572,19 @@ class PaddleClas(object):
"""
"""
super
().
__init__
()
super
().
__init__
()
if
kwargs
.
get
(
"build_gallery"
,
False
)
:
if
build_gallery
:
self
.
model_type
,
inference_model_dir
=
self
.
_check_input_model
(
self
.
model_type
,
inference_model_dir
=
self
.
_check_input_model
(
model_name
model_name
if
model_name
else
"PP-ShiTuV2"
,
inference_model_dir
)
if
model_name
else
"PP-ShiTuV2"
,
inference_model_dir
)
self
.
_config
=
init_config
(
self
.
model_type
,
model_name
self
.
_config
=
init_config
(
self
.
model_type
,
model_name
if
model_name
else
"PP-ShiTuV2"
,
if
model_name
else
"PP-ShiTuV2"
,
inference_model_dir
,
**
kwargs
)
inference_model_dir
,
**
kwargs
)
if
gallery_image_root
:
self
.
_config
.
IndexProcess
.
image_root
=
gallery_image_root
if
gallery_data_file
:
self
.
_config
.
IndexProcess
.
data_file
=
gallery_data_file
if
index_dir
:
self
.
_config
.
IndexProcess
.
index_dir
=
index_dir
logger
.
info
(
"Building Gallery..."
)
logger
.
info
(
"Building Gallery..."
)
GalleryBuilder
(
self
.
_config
)
GalleryBuilder
(
self
.
_config
)
...
@@ -586,6 +596,8 @@ class PaddleClas(object):
...
@@ -586,6 +596,8 @@ class PaddleClas(object):
inference_model_dir
,
**
kwargs
)
inference_model_dir
,
**
kwargs
)
if
self
.
model_type
==
"shitu"
:
if
self
.
model_type
==
"shitu"
:
if
index_dir
:
self
.
_config
.
IndexProcess
.
index_dir
=
index_dir
self
.
predictor
=
SystemPredictor
(
self
.
_config
)
self
.
predictor
=
SystemPredictor
(
self
.
_config
)
else
:
else
:
self
.
predictor
=
ClsPredictor
(
self
.
_config
)
self
.
predictor
=
ClsPredictor
(
self
.
_config
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录