# 图像识别快速开始 本文档包含3个部分:环境配置、图像识别体验、未知类别的图像识别体验。 如果图像类别已经存在于图像索引库中,那么可以直接参考[图像识别体验](#图像识别体验)章节,完成图像识别过程;如果希望识别未知类别的图像,即图像类别之前不存在于索引库中,那么可以参考[未知类别的图像识别体验](#未知类别的图像识别体验)章节,完成建立索引并识别的过程。 ## 目录 * [1. 环境配置](#环境配置) * [2. 图像识别体验](#图像识别体验) * [2.1 下载、解压inference 模型与demo数据](#下载、解压inference_模型与demo数据) * [2.2 商品别与检索](#商品识别与检索) * [2.2.1 识别单张图像](#识别单张图像) * [2.2.2 基于文件夹的批量识别](#基于文件夹的批量识别) * [3. 未知类别的图像识别体验](#未知类别的图像识别体验) * [3.1 准备新的数据与标签](#准备新的数据与标签) * [3.2 建立新的索引库](#建立新的索引库) * [3.3 基于新的索引库的图像识别](#基于新的索引库的图像识别) ## 1. 环境配置 * 安装:请先参考[快速安装](./install.md)配置PaddleClas运行环境。 * 进入`deploy`运行目录。本部分所有内容与命令均需要在`deploy`目录下运行,可以通过下面的命令进入`deploy`目录。 ``` cd deploy ``` ## 2. 图像识别体验 检测模型与4个方向(Logo、动漫人物、车辆、商品)的识别inference模型、测试数据下载地址以及对应的配置文件地址如下。 | 模型简介 | 推荐场景 | 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) | [build_logo.yaml](../../../deploy/configs/build_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) | [build_cartoon.yaml](../../../deploy/configs/build_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) | [build_vehicle.yaml](../../../deploy/configs/build_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) | [build_product.yaml](../../../deploy/configs/build_product.yaml) | 本章节demo数据下载地址如下: [数据下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/recognition_demo_data_v1.0.tar)。 **注意** 1. windows 环境下如果没有安装wget,可以按照下面的步骤安装wget与tar命令,也可以在,下载模型时将链接复制到浏览器中下载,并解压放置在相应目录下;linux或者macOS用户可以右键点击,然后复制下载链接,即可通过`wget`命令下载。 2. 如果macOS环境下没有安装`wget`命令,可以运行下面的命令进行安装。 ```shell # 安装 homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; # 安装wget brew install wget ``` 3. 如果希望在windows环境下安装wget,可以参考:[链接](https://www.cnblogs.com/jeshy/p/10518062.html);如果希望在windows环境中安装tar命令,可以参考:[链接](https://www.cnblogs.com/chooperman/p/14190107.html)。 * 可以按照下面的命令下载并解压数据与模型 ```shell mkdir models cd models # 下载识别inference模型并解压 wget {模型下载链接地址} && tar -xf {压缩包的名称} cd .. # 下载demo数据并解压 wget {数据下载链接地址} && tar -xf {压缩包的名称} ``` ### 2.1 下载、解压inference 模型与demo数据 以商品识别为例,下载demo数据集以及通用检测、识别模型,命令如下。 ```shell mkdir models cd models # 下载通用检测inference模型并解压 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 # 下载识别inference模型并解压 wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/product_ResNet50_vd_aliproduct_v1.0_infer.tar && tar -xf product_ResNet50_vd_aliproduct_v1.0_infer.tar cd ../ # 下载demo数据并解压 wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/recognition_demo_data_v1.0.tar && tar -xf recognition_demo_data_v1.0.tar ``` 解压完毕后,`recognition_demo_data_v1.0`文件夹下应有如下文件结构: ``` ├── recognition_demo_data_v1.0 │ ├── gallery_cartoon │ ├── gallery_logo │ ├── gallery_product │ ├── gallery_vehicle │ ├── test_cartoon │ ├── test_logo │ ├── test_product │ └── test_vehicle ├── ... ``` 其中`gallery_xxx`文件夹中存放的是用于构建索引库的原始图像,`test_xxx`文件夹中存放的是用于测试识别效果的图像列表。 `models`文件夹下应有如下文件结构: ``` ├── product_ResNet50_vd_aliproduct_v1.0_infer │ ├── inference.pdiparams │ ├── inference.pdiparams.info │ └── inference.pdmodel ├── ppyolov2_r50vd_dcn_mainbody_v1.0_infer │ ├── inference.pdiparams │ ├── inference.pdiparams.info │ └── inference.pdmodel ``` ### 2.2 商品识别与检索 以商品识别demo为例,展示识别与检索过程(如果希望尝试其他方向的识别与检索效果,在下载解压好对应的demo数据与模型之后,替换对应的配置文件即可完成预测)。 #### 2.2.1 识别单张图像 运行下面的命令,对图像`./recognition_demo_data_v1.0/test_product/daoxiangcunjinzhubing_6.jpg`进行识别与检索 ```shell # 使用下面的命令使用GPU进行预测 python3.7 python/predict_system.py -c configs/inference_product.yaml # 使用下面的命令使用CPU进行预测 python3.7 python/predict_system.py -c configs/inference_product.yaml -o Global.use_gpu=False ``` 注意:这里使用了默认编译生成的库文件进行特征索引,如果与您的环境不兼容,导致程序报错,可以参考[向量检索教程](../../../deploy/vector_search/README.md)重新编译库文件。 待检索图像如下所示。