# 图像识别快速开始 本文档包含 3 个部分:环境配置、图像识别体验、未知类别的图像识别体验。 如果图像类别已经存在于图像索引库中,那么可以直接参考[图像识别体验](#图像识别体验)章节,完成图像识别过程;如果希望识别未知类别的图像,即图像类别之前不存在于索引库中,那么可以参考[未知类别的图像识别体验](#未知类别的图像识别体验)章节,完成建立索引并识别的过程。 ## 目录 * [1. 环境配置](#环境配置) * [2. 图像识别体验](#图像识别体验) * [2.1 下载、解压 inference 模型与 demo 数据](#2.1) * [2.2 瓶装饮料识别与检索](#瓶装饮料识别与检索) * [2.2.1 识别单张图像](#识别单张图像) * [2.2.2 基于文件夹的批量识别](#基于文件夹的批量识别) * [3. 未知类别的图像识别体验](#未知类别的图像识别体验) * [3.1 准备新的数据与标签](#准备新的数据与标签) * [3.2 建立新的索引库](#建立新的索引库) * [3.3 基于新的索引库的图像识别](#基于新的索引库的图像识别) * [4. 服务端识别模型列表](#4) ## 1. 环境配置 * 安装:请先参考 [Paddle 安装教程](../installation/install_paddle.md) 以及 [PaddleClas 安装教程](../installation/install_paddleclas.md) 配置 PaddleClas 运行环境。 * 进入 `deploy` 运行目录。本部分所有内容与命令均需要在 `deploy` 目录下运行,可以通过下面的命令进入 `deploy` 目录。 ``` cd deploy ``` ## 2. 图像识别体验 轻量级通用主体检测模型与轻量级通用识别模型和配置文件下载方式如下表所示。 | 模型简介 | 推荐场景 | inference 模型 | 预测配置文件 | | ------------ | ------------- | -------- | ------- | | 轻量级通用主体检测模型 | 通用场景 |[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/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) | | 轻量级通用识别二值模型 | 检索库很大, 存储受限场景 | [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) | 注意:由于部分解压缩软件在解压上述 `tar` 格式文件时存在问题,建议非命令行用户下载 `zip` 格式文件并解压。`tar` 格式文件建议使用命令 `tar xf xxx.tar` 解压。 本章节 demo 数据下载地址如下: [瓶装饮料数据下载链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar)。 如果希望体验服务端主体检测和各垂类方向的识别模型,可以参考[第4章](#4)。 **注意** 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 ``` 4. 如果希望在 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/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/general_PPLCNet_x2_5_lite_v1.0_infer.tar && tar -xf general_PPLCNet_x2_5_lite_v1.0_infer.tar cd ../ # 下载 demo 数据并解压 wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/drink_dataset_v1.0.tar && tar -xf drink_dataset_v1.0.tar ``` 解压完毕后,`drink_dataset_v1.0/` 文件夹下应有如下文件结构: ``` ├── drink_dataset_v1.0/ │ ├── gallery/ │ ├── index/ │ ├── test_images/ ├── ... ``` 其中 `gallery` 文件夹中存放的是用于构建索引库的原始图像,`index` 表示基于原始图像构建得到的索引库信息,`test_images` 文件夹中存放的是用于测试识别效果的图像列表。 `models` 文件夹下应有如下文件结构: ``` ├── general_PPLCNet_x2_5_lite_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 ``` **注意** 如果使用服务端通用识别模型,Demo 数据需要重新提取特征、够建索引,方式如下: ```shell # 下面是使用下载的服务端商品识别模型进行索引库构建 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 ``` ### 2.2 瓶装饮料识别与检索 以瓶装饮料识别 demo 为例,展示识别与检索过程(如果希望尝试其他方向的识别与检索效果,在下载解压好对应的 demo 数据与模型之后,替换对应的配置文件即可完成预测)。 注意,此部分使用了 `faiss` 作为检索库,安装方法如下: ```python pip install faiss-cpu==1.7.1post2 ``` 若使用时,不能正常引用,则 `uninstall` 之后,重新 `install`,尤其是 windows 下。 #### 2.2.1 识别单张图像 运行下面的命令,对图像 `./drink_dataset_v1.0/test_images/nongfu_spring.jpeg` 进行识别与检索 ```shell # 使用下面的命令使用 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 ``` 待检索图像如下所示。