Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
b889101f
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b889101f
编写于
1月 17, 2023
作者:
weixin_46524038
提交者:
cuicheng01
1月 31, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add docs and config
上级
373a026a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
280 addition
and
2 deletion
+280
-2
deploy/configs/practical_models/watermark_exists/inference_watermark_exists.yaml
...l_models/watermark_exists/inference_watermark_exists.yaml
+36
-0
deploy/images/practical/watermark_exists/clear_example.png
deploy/images/practical/watermark_exists/clear_example.png
+0
-0
deploy/images/practical/watermark_exists/watermark_example.png
...y/images/practical/watermark_exists/watermark_example.png
+0
-0
docs/zh_CN/models/practical_models/EfficientNetB3_watermark.md
...zh_CN/models/practical_models/EfficientNetB3_watermark.md
+160
-0
ppcls/arch/backbone/variant_models/efficientnet_variant.py
ppcls/arch/backbone/variant_models/efficientnet_variant.py
+2
-2
ppcls/configs/practical_models/EfficientNetB3_watermark.yaml
ppcls/configs/practical_models/EfficientNetB3_watermark.yaml
+82
-0
未找到文件。
deploy/configs/practical_models/watermark_exists/inference_watermark_exists.yaml
0 → 100644
浏览文件 @
b889101f
Global
:
infer_imgs
:
"
./images/practical/watermark_exists/watermark_example.png"
inference_model_dir
:
"
./models/EfficientNetB3_watermark_infer"
batch_size
:
1
use_gpu
:
True
enable_mkldnn
:
False
cpu_num_threads
:
10
enable_benchmark
:
True
use_fp16
:
False
ir_optim
:
True
use_tensorrt
:
False
gpu_mem
:
8000
enable_profile
:
False
PreProcess
:
transform_ops
:
-
ResizeImage
:
resize_short
:
256
-
CropImage
:
size
:
224
-
NormalizeImage
:
scale
:
0.00392157
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
channel_num
:
3
-
ToCHWImage
:
PostProcess
:
main_indicator
:
ThreshOutput
ThreshOutput
:
threshold
:
0.5
label_0
:
contains_watermark
label_1
:
no_watermark
SavePreLabel
:
save_dir
:
./pre_label/
deploy/images/practical/watermark_exists/clear_example.png
0 → 100644
浏览文件 @
b889101f
147.8 KB
deploy/images/practical/watermark_exists/watermark_example.png
0 → 100644
浏览文件 @
b889101f
146.9 KB
docs/zh_CN/models/practical_models/EfficientNetB3_watermark.md
0 → 100644
浏览文件 @
b889101f
# 有水印/无水印分类模型
------
## 目录
-
[
1. 模型和应用场景介绍
](
#1
)
-
[
2. 模型快速体验
](
#2
)
-
[
2.1 安装 paddlepaddle
](
#2.1
)
-
[
2.2 安装 paddleclas
](
#2.2
)
-
[
3. 模型预测
](
#3
)
-
[
3.1 环境配置
](
#3.1
)
-
[
3.2 模型预测
](
#3.2
)
-
[
3.2.1 基于训练引擎预测
](
#3.2.1
)
-
[
3.2.2 基于推理引擎预测
](
#3.2.2
)
<a
name=
"1"
></a>
## 1. 模型和应用场景介绍
该案例提供了用户使用 PaddleClas 的基于 EfficientNetB3 网络构建有水印/无水印(这里的水印包括数字照片上留下的一些logo、信息、网址等)的分类模型。该模型可以广泛应用于审核场景、海量数据过滤场景等。具体有无水印的图片对比如下:
<center><img
src=
'https://user-images.githubusercontent.com/94225063/212879681-f115d6f8-85c8-4cda-a07e-5f5b00d8236a.jpeg'
width=
800
></center>
可以看到,左图中有水印,右图中无水印。
<a
name=
"2"
></a>
## 2. 模型快速体验
<a
name=
"2.1"
></a>
### 2.1 安装 paddlepaddle
-
您的机器安装的是 CUDA9 或 CUDA10,请运行以下命令安装
```
bash
python3
-m
pip
install
paddlepaddle-gpu
-i
https://mirror.baidu.com/pypi/simple
```
-
您的机器是 CPU,请运行以下命令安装
```
bash
python3
-m
pip
install
paddlepaddle
-i
https://mirror.baidu.com/pypi/simple
```
更多的版本需求,请参照
[
飞桨官网安装文档
](
https://www.paddlepaddle.org.cn/install/quick
)
中的说明进行操作。
<a
name=
"2.2"
></a>
### 2.2 安装 paddleclas
使用如下命令快速安装 paddleclas:
```
pip3 install paddleclas
```
<a
name=
"3"
></a>
## 3. 模型预测
<a
name=
"3.1"
></a>
### 3.1 环境配置
*
安装:请先参考文档
[
环境准备
](
../../installation.md
)
配置 PaddleClas 运行环境。
<a
name=
"3.2"
></a>
### 3.2 模型预测
<a
name=
"3.2.1"
></a>
### 3.2.1 基于训练引擎预测
模型训练完成之后,可以加载训练得到的预训练模型,进行模型预测。在模型库的
`tools/infer.py`
中提供了完整的示例,只需执行下述命令即可完成模型预测:
```
python
python3
tools
/
infer
.
py
\
-
c
.
/
ppcls
/
configs
/
practical_models
/
EfficientNetB3_watermark
.
yaml
\
-
o
Arch
.
pretrained
=
True
```
输出结果如下:
```
[{'class_ids': [0], 'scores': [0.9653296619653702], 'label_names': ['contains_watermark'], 'file_name': 'deploy/images/practical/watermark_exists/watermark_example.png'}]
```
**备注:**
*
这里
`-o Arch.pretrained=True"`
指定了使用训练好的预训练权重,如果指定其他权重,只需替换对应的路径即可。
*
默认是对
`deploy/images/practical/watermark_exists/watermark_example.png`
进行预测,此处也可以通过增加字段
`-o Infer.infer_imgs=xxx`
对其他图片预测。
*
二分类默认的阈值为0.5, 如果需要指定阈值,可以重写
`Infer.PostProcess.threshold`
。
<a
name=
"3.2.2"
></a>
### 3.2.2 基于推理引擎预测
Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。相比于直接基于预训练模型进行预测,Paddle Inference可使用 MKLDNN、CUDNN、TensorRT 进行预测加速,从而实现更优的推理性能。更多关于 Paddle Inference 推理引擎的介绍,可以参考
[
Paddle Inference官网教程
](
https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/infer/inference/inference_cn.html
)
。
首先,我们提供了将权重和模型转换的脚本,执行该脚本可以得到对应的 inference 模型:
```
bash
python3 tools/export_model.py
\
-c
./ppcls/configs/practical_models/EfficientNetB3_watermark.yaml
\
-o
Arch.pretrained
=
True
\
-o
Global.save_inference_dir
=
deploy/models/EfficientNetB3_watermark_infer
```
执行完该脚本后会在
`deploy/models/`
下生成
`EfficientNetB3_watermark_infer`
文件夹,
`models`
文件夹下应有如下文件结构:
```
├── EfficientNetB3_watermark_infer
│ ├── inference.pdiparams
│ ├── inference.pdiparams.info
│ └── inference.pdmodel
```
当然,也可以选择直接下载的方式:
```
cd deploy/models
# 下载 inference 模型并解压
wget https://paddleclas.bj.bcebos.com/models/practical/inference/EfficientNetB3_watermark_infer.tar && tar -xf EfficientNetB3_watermark_infer.tar
```
解压完毕后,
`models`
文件夹下应有如下文件结构:
```
├── EfficientNetB3_watermark_infer
│ ├── inference.pdiparams
│ ├── inference.pdiparams.info
│ └── inference.pdmodel
```
得到 inference 模型之后基于推理引擎进行预测:
返回
`deploy`
目录:
```
cd ../
```
运行下面的命令,对图像
`./images/practical/watermark_exists/watermark_example.png`
进行有水印/无水印分类。
```
shell
# 使用下面的命令使用 GPU 进行预测
python3.7 python/predict_cls.py
-c
./configs/practical_models/watermark_exists/inference_watermark_exists.yaml
# 使用下面的命令使用 CPU 进行预测
python3.7 python/predict_cls.py
-c
./configs/practical_models/watermark_exists/inference_watermark_exists.yaml
-o
Global.use_gpu
=
False
```
输出结果如下。
```
watermark_example.png: class id(s): [0], score(s): [0.97], label_name(s): ['contains_watermark']
```
**备注:**
二分类默认的阈值为0.5, 如果需要指定阈值,可以重写
`Infer.PostProcess.threshold`
。
ppcls/arch/backbone/variant_models/efficientnet_variant.py
浏览文件 @
b889101f
...
@@ -4,7 +4,7 @@ from ..model_zoo.efficientnet import EfficientNetB3, _load_pretrained
...
@@ -4,7 +4,7 @@ from ..model_zoo.efficientnet import EfficientNetB3, _load_pretrained
MODEL_URLS
=
{
MODEL_URLS
=
{
"EfficientNetB3_watermark"
:
"EfficientNetB3_watermark"
:
"https://paddle
-imagenet-models-name.bj.bcebos.com/dygraph
/EfficientNetB3_watermark_pretrained.pdparams"
"https://paddle
clas.bj.bcebos.com/models/practical/pretrained
/EfficientNetB3_watermark_pretrained.pdparams"
}
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -21,7 +21,7 @@ def EfficientNetB3_watermark(padding_type='DYNAMIC',
...
@@ -21,7 +21,7 @@ def EfficientNetB3_watermark(padding_type='DYNAMIC',
# 1536 is the orginal in_features
# 1536 is the orginal in_features
nn
.
Linear
(
nn
.
Linear
(
in_features
=
1536
,
out_features
=
625
),
in_features
=
1536
,
out_features
=
625
),
nn
.
ReLU
(),
# ReLu to be the activation function
nn
.
ReLU
(),
nn
.
Dropout
(
p
=
0.3
),
nn
.
Dropout
(
p
=
0.3
),
nn
.
Linear
(
nn
.
Linear
(
in_features
=
625
,
out_features
=
256
),
in_features
=
625
,
out_features
=
256
),
...
...
ppcls/configs/practical_models/EfficientNetB3_watermark.yaml
0 → 100644
浏览文件 @
b889101f
# global configs
Global
:
checkpoints
:
null
pretrained_model
:
null
output_dir
:
./output/
device
:
gpu
save_interval
:
1
eval_during_train
:
True
eval_interval
:
1
epochs
:
50
print_batch_step
:
10
use_visualdl
:
False
# used for static mode and model export
image_shape
:
[
3
,
224
,
224
]
save_inference_dir
:
./inference
# training model under @to_static
to_static
:
False
use_dali
:
False
# model architecture
Arch
:
name
:
EfficientNetB3_watermark
class_num
:
2
# data loader for train and eval
DataLoader
:
Train
:
dataset
:
name
:
ImageNetDataset
image_root
:
./dataset/
cls_label_path
:
./dataset/train_list.txt
transform_ops
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
ResizeImage
:
size
:
224
-
RandFlipImage
:
flip_code
:
1
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
sampler
:
name
:
DistributedBatchSampler
batch_size
:
128
drop_last
:
False
shuffle
:
True
loader
:
num_workers
:
4
use_shared_memory
:
False
Infer
:
infer_imgs
:
deploy/images/practical/watermark_exists/watermark_example.png
batch_size
:
1
transforms
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
ResizeImage
:
resize_short
:
256
-
CropImage
:
size
:
224
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
ToCHWImage
:
PostProcess
:
name
:
ThreshOutput
threshold
:
0.5
label_0
:
contains_watermark
label_1
:
no_watermark
Metric
:
Eval
:
-
TprAtFpr
:
max_fpr
:
0.01
-
TopkAcc
:
topk
:
[
1
,
2
]
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录