Skip to content

Latest commit

 

History

History
203 lines (157 loc) · 13.4 KB

application_scenarios.md

File metadata and controls

203 lines (157 loc) · 13.4 KB

PP-ShiTu应用场景介绍

该文档介绍了PP-ShiTu提供的各种应用场景库简介、下载链接以及使用简介。


目录

1. 应用场景介绍

PP-ShiTu对原数据集进行了Gallery库和Query库划分,并生成了对应的Index索引库,具体应用场景介绍和下载地址如下表所示。

场景 示例图 场景简介 Recall@1 场景库下载地址 原数据集下载地址
104种花细分类识别 0.9788 104flowers 原数据下载地址
交通工具 车、船等交通工具粗分类识别 0.9307 Vechicles 原数据下载地址
动物 各种动物识别 0.9078 AnimalImageDataset 原数据下载地址
时装 首饰、挎包、化妆品等时尚商品识别 0.9555 FashionProductImageSmall 原数据下载地址
球类 各种球类识别 0.9769 Balls 原数据下载地址
狗识别 狗细分类识别,包括69种狗的图像 0.9606 添加技术交流群后即可获得 原数据下载地址
宝石 宝石种类识别 0.9653 添加技术交流群后即可获得 原数据下载地址
鸟类 鸟细分类识别,包括400种各种姿态的鸟类图像 0.9673 添加技术交流群后即可获得 原数据下载地址
运动种类 100种运动图像识别 0.9413 添加技术交流群后即可获得 原数据下载地址
乐器 30种不同乐器种类识别 0.9467 添加技术交流群后即可获得 原数据下载地址
宝可梦 宝可梦神奇宝贝识别 0.9236 添加技术交流群后即可获得 原数据下载地址
船种类识别 0.9242 添加技术交流群后即可获得 原数据下载地址
鞋子 鞋子种类识别,包括靴子、拖鞋等 0.9000 添加技术交流群后即可获得 原数据下载地址
巴黎建筑 巴黎著名建筑景点识别,如:巴黎铁塔、圣母院等 1.000 添加技术交流群后即可获得 原数据下载地址
蝴蝶 75种蝴蝶细分类识别 0.9360 添加技术交流群后即可获得 原数据下载地址
野外植物 野外植物识别 0.9758 添加技术交流群后即可获得 原数据下载地址
天气 各种天气场景识别,如:雨天、打雷、下雪等 0.9924 添加技术交流群后即可获得 原数据下载地址
坚果 各种坚果种类识别 0.9412 添加技术交流群后即可获得 原数据下载地址
垃圾 12种垃圾分类识别 0.9845 添加技术交流群后即可获得 原数据下载地址
航拍场景 各种航拍场景识别,如机场、火车站等 0.9797 添加技术交流群后即可获得 原数据下载地址
蔬菜 各种蔬菜识别 0.8929 添加技术交流群后即可获得 原数据下载地址

添加二维码获取相关场景库及大礼包

2. 使用说明

2.1 环境配置

  • 安装:请先参考文档环境准备配置PaddleClas运行环境
  • 进入deploy运行目录,本部分所有内容与命令均需要在deploy目录下运行,可以通过下面命令进入deploy目录。
cd deploy

2.2 下载、解压场景库数据

首先创建存放场景库的地址deploy/datasets:

mkdir datasets

下载并解压对应场景库到deploy/datasets中。

cd datasets

# 下载并解压场景库数据
wget {场景库下载链接} && tar -xf {压缩包的名称}

dataset_name为例,解压完毕后,datasets/dataset_name文件夹下应有如下文件结构:

├── dataset_name/
│   ├── Gallery/
│   ├── Index/
│   ├── Query/
│   ├── gallery_list.txt/
│   ├── query_list.txt/
│   ├── label_list.txt/
├── ...

其中,Gallery文件夹中存放的是用于构建索引库的原始图像,Index表示基于原始图像构建得到的索引库信息,Query文件夹存放的是用于检索的图像列表,gallery_list.txtquery_list.txt分别为索引库和检索图像的标签文件,label_list.txt是标签的中英文对照文件(注意:商标场景库文件不包含中英文对照文件)。

2.3 准备模型

创建存放模型的文件夹deploy/models,并下载轻量级主体检测、识别模型,命令如下:

cd ..
mkdir models
cd models

# 下载检测模型并解压
# wget {检测模型下载链接} && tar -xf {检测模型压缩包名称}
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

# 下载识别 inference 模型并解压
#wget {识别模型下载链接} && tar -xf {识别模型压缩包名称}
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

解压完成后,models文件夹下有如下文件结构:

├── inference_model_name
│   ├── inference.pdiparams
│   ├── inference.pdiparams.info
│   └── inference.pdmodel
└── det_model_name
    ├── inference.pdiparams
    ├── inference.pdiparams.info
    └── inference.pdmodel

2.4 场景库识别与检索

动物识别场景为例,展示识别和检索过程(如果希望尝试其他场景库的识别与检索效果,在下载解压好对应的场景库数据和模型后,替换对应的配置文件即可完成预测)。

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

pip install faiss-cpu==1.7.1post2

若使用时,不能正常引用,则uninstall之后,重新install,尤其是在windows下。

2.4.1 识别单张图像

假设需要测试./datasets/AnimalImageDataset/Query/羚羊/0a37838e99.jpg这张图像识别和检索效果。

首先分别修改配置文件./configs/inference_general.yaml中的Global.det_inference_model_dirGlobal.rec_inference_model_dir字段为对应的检测和识别模型文件夹,以及修改测试图像地址字段Global.infer_imgs示例如下:

Global:
  infer_imgs: './datasets/AnimalImageDataset/Query/羚羊/0a37838e99.jpg'
  det_inference_model_dir: './models/picodet_PPLCNet_x2_5_mainbody_lite_v1.0_infer.tar'
  rec_inference_model_dir: './models/general_PPLCNetV2_base_pretrained_v1.0_infer.tar'

并修改配置文件./configs/inference_general.yaml中的IndexProcess.index_dir字段为对应场景index库地址:

IndexProcess:
  index_dir:'./datasets/AnimalImageDataset/Index/'

运行下面的命令,对图像./datasets/AnimalImageDataset/Query/羚羊/0a37838e99.jpg进行识别与检索

# 使用下面的命令使用 GPU 进行预测
python3.7 python/predict_system.py -c configs/inference_general.yaml

# 使用下面的命令使用 CPU 进行预测
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.use_gpu=False

最终输出结果如下:

[{'bbox': [609, 70, 1079, 629], 'rec_docs': '羚羊', 'rec_scores': 0.6571544}]

其中bbox表示检测出的主体所在位置,rec_docs表示索引库中与检测框最为相似的类别,rec_scores表示对应的置信度。 检测的可视化结果也保存在output文件夹下,对于本张图像,识别结果可视化如下所示。

2.4.2 基于文件夹的批量识别

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

# 使用下面的命令使用 GPU 进行预测,如果希望使用 CPU 预测,可以在命令后面添加 -o Global.use_gpu=False
python3.7 python/predict_system.py -c configs/inference_general.yaml -o Global.infer_imgs="./datasets/AnimalImageDataset/Query/羚羊"

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

...
[{'bbox': [0, 0, 1200, 675], 'rec_docs': '羚羊', 'rec_scores': 0.6153812}]
[{'bbox': [0, 0, 275, 183], 'rec_docs': '羚羊', 'rec_scores': 0.77218026}]
[{'bbox': [264, 79, 1088, 850], 'rec_docs': '羚羊', 'rec_scores': 0.81452656}]
[{'bbox': [0, 0, 188, 268], 'rec_docs': '羚羊', 'rec_scores': 0.637074}]
[{'bbox': [118, 41, 235, 161], 'rec_docs': '羚羊', 'rec_scores': 0.67315465}]
[{'bbox': [0, 0, 175, 287], 'rec_docs': '羚羊', 'rec_scores': 0.68271667}]
[{'bbox': [0, 0, 310, 163], 'rec_docs': '羚羊', 'rec_scores': 0.6706451}]
...

所有图像的识别结果可视化图像也保存在output文件夹内。