Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
56d82ea0
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看板
未验证
提交
56d82ea0
编写于
6月 07, 2021
作者:
B
Bin Lu
提交者:
GitHub
6月 07, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #797 from FredHuang16/patch-6
add logo config
上级
77e43fd0
c13fe196
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
208 addition
and
1 deletion
+208
-1
ppcls/arch/gears/circlemargin.py
ppcls/arch/gears/circlemargin.py
+1
-1
ppcls/configs/Logo/ResNet50_ReID.yaml
ppcls/configs/Logo/ResNet50_ReID.yaml
+158
-0
ppcls/data/__init__.py
ppcls/data/__init__.py
+2
-0
ppcls/data/dataloader/logo_dataset.py
ppcls/data/dataloader/logo_dataset.py
+47
-0
未找到文件。
ppcls/arch/gears/circlemargin.py
浏览文件 @
56d82ea0
...
...
@@ -20,7 +20,7 @@ import paddle.nn.functional as F
class
CircleMargin
(
nn
.
Layer
):
def
__init__
(
self
,
embedding_size
,
class_num
,
margin
,
scale
):
super
(
Circle
Softmax
,
self
).
__init__
()
super
(
Circle
Margin
,
self
).
__init__
()
self
.
scale
=
scale
self
.
margin
=
margin
self
.
embedding_size
=
embedding_size
...
...
ppcls/configs/Logo/ResNet50_ReID.yaml
0 → 100644
浏览文件 @
56d82ea0
# global configs
Global
:
checkpoints
:
null
pretrained_model
:
null
output_dir
:
"
./output/"
device
:
"
gpu"
class_num
:
3000
save_interval
:
1
eval_during_train
:
True
eval_interval
:
1
epochs
:
120
print_batch_step
:
10
use_visualdl
:
False
# used for static mode and model export
image_shape
:
[
3
,
224
,
224
]
save_inference_dir
:
"
./inference"
eval_mode
:
"
retrieval"
# model architecture
Arch
:
name
:
"
RecModel"
Backbone
:
name
:
"
ResNet50_last_stage_stride1"
pretrained
:
True
BackboneStopLayer
:
name
:
"
adaptive_avg_pool2d_0"
Neck
:
name
:
"
VehicleNeck"
in_channels
:
2048
out_channels
:
512
Head
:
name
:
"
CircleMargin"
margin
:
0.35
scale
:
64
embedding_size
:
512
# loss function config for traing/eval process
Loss
:
Train
:
-
CELoss
:
weight
:
1.0
-
PairwiseCosface
:
margin
:
0.35
gamma
:
64
weight
:
1.0
Eval
:
-
CELoss
:
weight
:
1.0
Optimizer
:
name
:
Momentum
momentum
:
0.9
lr
:
name
:
Cosine
learning_rate
:
0.01
regularizer
:
name
:
'
L2'
coeff
:
0.0001
# data loader for train and eval
DataLoader
:
Train
:
dataset
:
name
:
LogoDataset
image_root
:
"
dataset/LogoDet-3K-crop/train/"
cls_label_path
:
"
dataset/LogoDet-3K-crop/LogoDet-3K+train.txt"
transform_ops
:
-
ResizeImage
:
size
:
224
-
RandFlipImage
:
flip_code
:
1
-
AugMix
:
prob
:
0.5
-
NormalizeImage
:
scale
:
0.00392157
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
RandomErasing
:
EPSILON
:
0.5
sampler
:
name
:
DistributedRandomIdentitySampler
batch_size
:
128
num_instances
:
2
drop_last
:
False
loader
:
num_workers
:
6
use_shared_memory
:
False
Eval
:
Query
:
# TOTO: modify to the latest trainer
dataset
:
name
:
LogoDataset
image_root
:
"
dataset/LogoDet-3K-crop/val/"
cls_label_path
:
"
LogoDet-3K-crop/LogoDet-3K+query.txt"
transform_ops
:
-
ResizeImage
:
size
:
224
-
NormalizeImage
:
scale
:
0.00392157
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
:
False
loader
:
num_workers
:
10
use_shared_memory
:
False
Gallery
:
# TOTO: modify to the latest trainer
dataset
:
name
:
LogoDataset
image_root
:
"
dataset/LogoDet-3K-crop/train/"
cls_label_path
:
"
dataset/LogoDet-3K-crop/LogoDet-3K+gallery.txt"
transform_ops
:
-
ResizeImage
:
size
:
224
-
NormalizeImage
:
scale
:
0.00392157
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
:
False
loader
:
num_workers
:
10
use_shared_memory
:
False
Metric
:
Eval
:
-
Recallk
:
topk
:
[
1
,
5
]
-
mAP
:
{}
Infer
:
infer_imgs
:
"
docs/images/whl/demo.jpg"
batch_size
:
10
transforms
:
-
DecodeImage
:
to_rgb
:
True
channel_first
:
False
-
ResizeImage
:
resize_short
:
224
-
NormalizeImage
:
scale
:
1.0/255.0
mean
:
[
0.485
,
0.456
,
0.406
]
std
:
[
0.229
,
0.224
,
0.225
]
order
:
'
'
-
ToCHWImage
:
ppcls/data/__init__.py
浏览文件 @
56d82ea0
...
...
@@ -25,8 +25,10 @@ from ppcls.data.dataloader.imagenet_dataset import ImageNetDataset
from
ppcls.data.dataloader.multilabel_dataset
import
MultiLabelDataset
from
ppcls.data.dataloader.common_dataset
import
create_operators
from
ppcls.data.dataloader.vehicle_dataset
import
CompCars
,
VeriWild
from
ppcls.data.dataloader.logo_dataset
import
LogoDataset
from
ppcls.data.dataloader.icartoon_dataset
import
ICartoonDataset
# sampler
from
ppcls.data.dataloader.DistributedRandomIdentitySampler
import
DistributedRandomIdentitySampler
from
ppcls.data.preprocess
import
transform
...
...
ppcls/data/dataloader/logo_dataset.py
0 → 100644
浏览文件 @
56d82ea0
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from
__future__
import
print_function
import
io
import
tarfile
import
numpy
as
np
from
PIL
import
Image
#all use default backend
import
paddle
from
paddle.io
import
Dataset
import
pickle
import
os
import
cv2
import
random
from
.common_dataset
import
CommonDataset
class
LogoDataset
(
CommonDataset
):
def
_load_anno
(
self
):
assert
os
.
path
.
exists
(
self
.
_cls_path
)
assert
os
.
path
.
exists
(
self
.
_img_root
)
self
.
images
=
[]
self
.
labels
=
[]
with
open
(
self
.
_cls_path
)
as
fd
:
lines
=
fd
.
readlines
()
for
l
in
lines
:
l
=
l
.
strip
().
split
(
"
\t
"
)
if
l
[
0
]
==
'image_id'
:
continue
self
.
images
.
append
(
os
.
path
.
join
(
self
.
_img_root
,
l
[
3
]))
self
.
labels
.
append
(
int
(
l
[
1
])
-
1
)
assert
os
.
path
.
exists
(
self
.
images
[
-
1
])
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录