diff --git a/README.md b/README.md index 15934752a397e3a804a374a25927aa64dc08f0b4..6341096d89b284899111693f3b3f2779241e795b 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ - 2021.06.22,23,24 PaddleOCR官方研发团队带来技术深入解读三日直播课,6月22日、23日、24日晚上20:30,[直播地址](https://live.bilibili.com/21689802) - 2021.06.16 PaddleClas v2.2版本升级,集成Metric learning,向量检索等组件。新增商品识别、动漫人物识别、车辆识别和logo识别等4个图像识别应用。新增LeViT、Twins、TNT、DLA、HarDNet、RedNet系列30个预训练模型。 - 2021.05.14 添加`SwinTransformer` 系列模型。 -- 2021.04.15 添加`MixNet_L`和`ReXNet_3_0`系列模型。 - +- 2021.04.15 添加`MixNet_L`和`ReXNet_3_0`系列模型。 + [more](./docs/zh_CN/update_history.md) ## 特性 diff --git a/deploy/configs/inference_product.yaml b/deploy/configs/inference_product.yaml index a59f5d670c0d871cbc1a60ea3f6cb506cde3a321..4a6aa572c316a8d4c84bffb812f81cad6f13be18 100644 --- a/deploy/configs/inference_product.yaml +++ b/deploy/configs/inference_product.yaml @@ -1,11 +1,11 @@ Global: - infer_imgs: "./dataset/product_demo_data_v1.0/query" + infer_imgs: "./dataset/product_demo_data_v1.0/query/wangzai.jpg" det_inference_model_dir: "./models/ppyolov2_r50vd_dcn_mainbody_v1.0_infer" rec_inference_model_dir: "./models/product_ResNet50_vd_aliproduct_v1.0_infer" batch_size: 1 image_shape: [3, 640, 640] threshold: 0.2 - max_det_results: 2 + max_det_results: 1 labe_list: - foreground diff --git a/docs/images/recognition/product_demo/anmuxi.jpg b/docs/images/recognition/product_demo/anmuxi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..735ea5a4c3a5e9d15be84651c2513cf82aedde01 Binary files /dev/null and b/docs/images/recognition/product_demo/anmuxi.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/001.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..586aef2004ba24af75955bbd991478acd4627145 Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/001.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/002.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8d4285d8b20bd10c5d261ca649c8192413336f80 Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/002.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/003.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/003.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4efa2b1ef53cfd19181bfddfa8f23aa6ca46eac Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/003.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/004.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/004.jpg new file mode 100644 index 0000000000000000000000000000000000000000..017aa82aa36fddd999a3de5fa8629369789a8900 Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/004.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/005.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/005.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7d6f8825d476d811bedef7fca0c90cddc08ccff Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/005.jpg differ diff --git a/docs/images/recognition/product_demo/gallery/anmuxi/006.jpg b/docs/images/recognition/product_demo/gallery/anmuxi/006.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36a8e5de7ce9d101b13500b7d2f6f3771204255f Binary files /dev/null and b/docs/images/recognition/product_demo/gallery/anmuxi/006.jpg differ diff --git a/docs/images/recognition/product_demo/wangzai.jpg b/docs/images/recognition/product_demo/wangzai.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe7aa77d9f478452d5fbaebf58f8e8f7c3251951 Binary files /dev/null and b/docs/images/recognition/product_demo/wangzai.jpg differ diff --git a/docs/images/recognition/product_demo/wangzai_det_result.jpg b/docs/images/recognition/product_demo/wangzai_det_result.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7552d122cd09cb8e3a9e6fd7ff982da023cfa3a Binary files /dev/null and b/docs/images/recognition/product_demo/wangzai_det_result.jpg differ diff --git a/docs/zh_CN/application/mainbody_detection.md b/docs/zh_CN/application/mainbody_detection.md new file mode 100644 index 0000000000000000000000000000000000000000..213cfd5961c7bc964e9f407ac2eade212b2de39b --- /dev/null +++ b/docs/zh_CN/application/mainbody_detection.md @@ -0,0 +1,42 @@ +# 主体检测 + +主体检测技术是目前应用非常广泛的一种检测技术,它指的是检测出图片中最突出的主体坐标位置,然后将图像中的对应区域裁剪下来,进行识别,从而完成整个识别过程。主体检测是识别任务的前序步骤,可以有效提升识别精度。 + +本部分主要从数据集、模型训练2个方面对该部分内容进行介绍。 + +## 1. 数据集 + +在PaddleClas的识别任务中,训练主体检测模型时主要用到了以下几个数据集。 + +| 数据集 | 数据量 | 主体检测任务中使用的数据量 | 场景 | 数据集地址 | +| ------------ | ------------- | -------| ------- | -------- | +| Objects365 | 170W | 6k | 通用场景 | [地址](https://www.objects365.org/overview.html) | +| COCO2017 | 12W | 5k | 通用场景 | [地址](https://cocodataset.org/) | +| iCartoonFace | 2k | 2k | 动漫人脸检测 | [地址](https://github.com/luxiangju-PersonAI/iCartoonFace) | +| LogoDet-3k | 3k | 2k | Logo检测 | [地址](https://github.com/Wangjing1551/LogoDet-3K-Dataset) | +| RPC | 3k | 3k | 商品检测 | [地址](https://rpc-dataset.github.io/) | + +在实际训练的过程中,将所有数据集混合在一起。由于是主体检测,这里将所有标注出的检测框对应的类别都修改为"前景"的类别,最终融合的数据集中只包含1个类别,即前景。 + + +## 2. 模型训练 + +目标检测方法种类繁多,比较常用的有两阶段检测器(如FasterRCNN系列等);单阶段检测器(如YOLO、SSD等);anchor-free检测器(如FCOS等)。 + +PP-YOLO由[PaddleDetection](https://github.com/PaddlePaddle/PaddleDetection)提出,从骨干网络、数据增广、正则化策略、损失函数、后处理等多个角度对yolov3模型进行深度优化,最终在"速度-精度"方面达到了业界领先的水平。具体地,优化的策略如下。 + +- 更优的骨干网络: ResNet50vd-DCN +- 更大的训练batch size: 8 GPUs,每GPU batch_size=24,对应调整学习率和迭代轮数 +- [Drop Block](https://arxiv.org/abs/1810.12890) +- [Exponential Moving Average](https://www.investopedia.com/terms/e/ema.asp) +- [IoU Loss](https://arxiv.org/pdf/1902.09630.pdf) +- [Grid Sensitive](https://arxiv.org/abs/2004.10934) +- [Matrix NMS](https://arxiv.org/pdf/2003.10152.pdf) +- [CoordConv](https://arxiv.org/abs/1807.03247) +- [Spatial Pyramid Pooling](https://arxiv.org/abs/1406.4729) +- 更优的预训练模型 + +更多关于PP-YOLO的详细介绍可以参考:[PP-YOLO 模型](https://github.com/PaddlePaddle/PaddleDetection/blob/release%2F2.1/configs/ppyolo/README_cn.md) + +在主体检测任务中,为了保证检测效果,我们使用ResNet50vd-DCN的骨干网络,使用配置文件[ppyolov2_r50vd_dcn_365e_coco.yml](https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.1/configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml),更换为自定义的主体检测数据集,进行训练,最终得到检测模型。 +主体检测模型的inference模型下载地址为:[链接](https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/models/inference/ppyolov2_r50vd_dcn_mainbody_v1.0_infer.tar)。 diff --git a/docs/zh_CN/tutorials/quick_start_recognition.md b/docs/zh_CN/tutorials/quick_start_recognition.md index df89fe5d33063425c6fc51f436ec28b3e14ba86d..fdaff7250e6cf981ae6efb7618e5a0c13b6b1d54 100644 --- a/docs/zh_CN/tutorials/quick_start_recognition.md +++ b/docs/zh_CN/tutorials/quick_start_recognition.md @@ -13,14 +13,15 @@ * [2.2.1 识别单张图像](#识别单张图像) * [2.2.2 基于文件夹的批量识别](#基于文件夹的批量识别) * [3. 未知类别的图像识别体验](#未知类别的图像识别体验) - * [3.1 基于自己的数据集构建索引库](#基于自己的数据集构建索引库) - * [3.2 基于新的索引库的图像识别](#基于新的索引库的图像识别) + * [3.1 准备新的数据与标签](#准备新的数据与标签) + * [3.2 建立新的索引库](#建立新的索引库) + * [3.3 基于新的索引库的图像识别](#基于新的索引库的图像识别) ## 1. 环境配置 -* 安装:请先参考[快速安装](./installation.md)配置PaddleClas运行环境。 +* 安装:请先参考[快速安装](./install.md)配置PaddleClas运行环境。 * 进入`deploy`运行目录。本部分所有内容与命令均需要在`deploy`目录下运行,可以通过下面的命令进入`deploy`目录。 @@ -65,7 +66,7 @@ cd .. ### 2.1 下载、解压inference 模型与demo数据 -Logo识别为例,下载通用检测、识别模型以及Logo识别demo数据,命令如下。 +以商品识别为例,下载通用检测、识别模型以及商品识别demo数据,命令如下。 ```shell mkdir models @@ -73,20 +74,20 @@ 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/logo_rec_ResNet50_Logo3K_v1.0_infer.tar && tar -xf logo_rec_ResNet50_Logo3K_v1.0_infer.tar +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 .. mkdir dataset cd dataset # 下载demo数据并解压 -wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/logo_demo_data_v1.0.tar && tar -xf logo_demo_data_v1.0.tar +wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/rec/data/product_demo_data_v1.0.tar && tar -xf product_demo_data_v1.0.tar cd .. ``` 解压完毕后,`dataset`文件夹下应有如下文件结构: ``` -├── logo_demo_data_v1.0 +├── product_demo_data_v1.0 │ ├── data_file.txt │ ├── gallery │ ├── index @@ -99,7 +100,7 @@ cd .. `models`文件夹下应有如下文件结构: ``` -├── logo_rec_ResNet50_Logo3K_v1.0_infer +├── product_ResNet50_vd_aliproduct_v1.0_infer │ ├── inference.pdiparams │ ├── inference.pdiparams.info │ └── inference.pdmodel @@ -109,35 +110,42 @@ cd .. │ └── inference.pdmodel ``` - -### 2.2 Logo识别与检索 + +### 2.2 商品识别与检索 -以Logo识别demo为例,展示识别与检索过程(如果希望尝试其他方向的识别与检索效果,在下载解压好对应的demo数据与模型之后,替换对应的配置文件即可完成预测)。 +以商品识别demo为例,展示识别与检索过程(如果希望尝试其他方向的识别与检索效果,在下载解压好对应的demo数据与模型之后,替换对应的配置文件即可完成预测)。 #### 2.2.1 识别单张图像 -运行下面的命令,对图像`./dataset/logo_demo_data_v1.0/query/logo_auxx-1.jpg`进行识别与检索 +运行下面的命令,对图像`./dataset/product_demo_data_v1.0/query/wangzai.jpg`进行识别与检索 ```shell -python3.7 python/predict_system.py -c configs/inference_logo.yaml +python3.7 python/predict_system.py -c configs/inference_product.yaml ``` 待检索图像如下所示。