diff --git a/README.md b/README.md index 9e3128d2c8a062913d7f912728807c28ec4ce5a3..6b7bf691a79871e7c4bf6bf8fe6e1d321d9e6c41 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ PaddleClas的目的是为工业界和学术界提供一个图像分类任务相关的百宝箱,特色如下: - 模型库:ResNet_vd、MobileNetV3等23种系列的分类网络结构和训练技巧,以及对应的117个分类预训练模型和性能评估 -- 高阶使用:高精度的实用知识蒸馏方案(准确率82.39%的ResNet50_vd和78.9%的MobileNetV3)、8种数据增广方法的复现和验证 +- 高阶支持:高精度的知识蒸馏方案(准确率82.39%的ResNet50_vd和78.9%的MobileNetV3)、8种数据增广方法的复现和验证 - 应用拓展:常见视觉任务的特色方案,包括图像分类领域的迁移学习(百度自研的10万类图像分类预训练模型)和通用目标检测(mAP 47.8%的实用检测方案)等 @@ -34,7 +34,7 @@ src="docs/images/models/mobile_arm_top1.png" width="700"> - TODO - [ ] EfficientLite、GhostNet、RegNet论文指标复现和性能评估 -## 高阶使用 +## 高阶支持 除了提供丰富的分类网络结构和预训练模型,PaddleClas也支持了一系列有助于图像分类任务效果和效率提升的算法或工具。 ### 知识蒸馏 @@ -45,7 +45,7 @@ src="docs/images/models/mobile_arm_top1.png" width="700"> src="docs/images/distillation/distillation_perform.png" width="700"> -PaddleClas提供了一种简单的半监督标签知识蒸馏方案(SSLD,Simple Semi-supervised Label Distillation),使用该方案大幅提升了使用该方案大幅提升了ResNet101_vd,ResNet50_vd、MobileNetV1、MobileNetV2和MobileNetV3在ImageNet数据集上分类效果,如上图所示。该知识蒸馏方案的框架图如下,详细的知识蒸馏方法介绍以及使用正在持续更新中。 +PaddleClas提供了一种简单的半监督标签知识蒸馏方案(SSLD,Simple Semi-supervised Label Distillation),使用该方案大幅提升了ResNet101_vd,ResNet50_vd、MobileNetV1、MobileNetV2和MobileNetV3在ImageNet数据集上分类效果,如上图所示。该知识蒸馏方案的框架图如下,详细的知识蒸馏方法介绍以及使用正在持续更新中。
### 数据增广 -在图像分类任务中,图像数据的增广是一种常用的正则化方法,可以有效提升图像分类的效果,尤其对于数据量不足或者模型网络较大的场景。PaddleClas支持了最新的8种数据增广算法的复现和在统一实验环境下的效果评估,如下图所示。每种数据增广方法的详细介绍、对比的实验环境以及使用正在持续更新中。 +在图像分类任务中,图像数据的增广是一种常用的正则化方法,可以有效提升图像分类的效果,尤其对于数据量不足或者模型网络较大的场景。PaddleClas支持了最新的8种数据增广算法的复现和在统一实验环境下的效果评估,下图展示了不同数据增广方式在ResNet50上的表现。每种数据增广方法的详细介绍、对比的实验环境以及使用正在持续更新中。
- [ ] 更多的优化器支持和效果验证 - [ ] 支持模型可解释性工具 +## 开始使用 +PaddleClas的安装说明、模型训练、预测、评估以及模型微调(fine-tuning)请参考文档教程中的[**初级使用章节**](https://paddleclas.readthedocs.io/zh_CN/latest/tutorials/index.html),SSLD知识蒸馏和数据增广的高阶使用正在持续更新中。 + ## 应用拓展 效果更优的图像分类网络结构和预训练模型往往有助于提升其他视觉任务的效果,PaddleClas提供了一系列在常见视觉任务中的特色方案。 diff --git a/docs/images/models/main_fps_top1.png b/docs/images/models/main_fps_top1.png index ec221b44f63430a45a987ed6ee1d488e3dca3395..a7149d7de16c71dbd3359efdbcee519a486a2278 100755 Binary files a/docs/images/models/main_fps_top1.png and b/docs/images/models/main_fps_top1.png differ diff --git a/docs/zh_CN/models/ResNet_and_vd.md b/docs/zh_CN/models/ResNet_and_vd.md index 5c305b94d331a9c89bf4f33714a7b6250b67c4cf..bc2946e99bc270c084c146808188da53c475ebae 100644 --- a/docs/zh_CN/models/ResNet_and_vd.md +++ b/docs/zh_CN/models/ResNet_and_vd.md @@ -41,7 +41,7 @@ ResNet系列模型是在2015年提出的,一举在ILSVRC2015比赛中取得冠 | ResNet152_vd | 0.806 | 0.953 | | | 23.530 | 60.210 | | ResNet200_vd | 0.809 | 0.953 | | | 30.530 | 74.740 | | ResNet50_vd_ssld | 0.824 | 0.961 | | | 8.670 | 25.580 | -| ResNet101_vd_ssld | 0.835 | 0.968 | | | 16.100 | 44.570 | +| ResNet101_vd_ssld | 0.837 | 0.967 | | | 16.100 | 44.570 | diff --git a/ppcls/data/reader.py b/ppcls/data/reader.py index 70160a4d65f89a4e97049330f5cb4993dbb35d4f..e68ebd77e9d4f9c901be434e8248b57e7eb0127b 100755 --- a/ppcls/data/reader.py +++ b/ppcls/data/reader.py @@ -13,16 +13,15 @@ #limitations under the License. import cv2 - import numpy as np import os import signal import paddle -import imaug -from imaug import transform -from imaug import MixupOperator +from . import imaug +from .imaug import transform +from .imaug import MixupOperator from ppcls.utils import logger trainers_num = int(os.environ.get('PADDLE_TRAINERS_NUM', 1)) @@ -190,9 +189,9 @@ def partial_reader(params, full_lines, part_id=0, part_num=1): for line in full_lines: img_path, label = line.split() img_path = os.path.join(params['data_dir'], img_path) - img = open(img_path).read() - img = transform(img, ops) - yield (img, int(label)) + with open(img_path, 'rb') as f: + img = f.read() + yield (transform(img, ops), int(label)) return reader diff --git a/ppcls/modeling/utils.py b/ppcls/modeling/utils.py index acc4d1948264e72c3cffad52b8139331cfb28420..e7787b8122f086c44e712b46a263a37c91992e00 100644 --- a/ppcls/modeling/utils.py +++ b/ppcls/modeling/utils.py @@ -12,10 +12,11 @@ #See the License for the specific language governing permissions and #limitations under the License. -import architectures import types from difflib import SequenceMatcher +from . import architectures + def get_architectures(): """ diff --git a/ppcls/optimizer/__init__.py b/ppcls/optimizer/__init__.py index 9a192d9a14182185f686dcd68506579926cc8efa..1997992293ab3e7350025c5b43e8619d139fe44f 100644 --- a/ppcls/optimizer/__init__.py +++ b/ppcls/optimizer/__init__.py @@ -15,5 +15,5 @@ from . import optimizer from . import learning_rate -from optimizer import OptimizerBuilder -from learning_rate import LearningRateBuilder +from .optimizer import OptimizerBuilder +from .learning_rate import LearningRateBuilder