Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
4d496f78
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
接近 2 年 前同步成功
通知
116
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看板
提交
4d496f78
编写于
6月 29, 2021
作者:
littletomatodonkey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix class_dim
上级
b4147375
变更
36
隐藏空白更改
内联
并排
Showing
36 changed file
with
1332 addition
and
761 deletion
+1332
-761
ppcls/arch/backbone/model_zoo/alexnet.py
ppcls/arch/backbone/model_zoo/alexnet.py
+11
-4
ppcls/arch/backbone/model_zoo/darknet.py
ppcls/arch/backbone/model_zoo/darknet.py
+12
-5
ppcls/arch/backbone/model_zoo/densenet.py
ppcls/arch/backbone/model_zoo/densenet.py
+26
-13
ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py
...s/arch/backbone/model_zoo/distilled_vision_transformer.py
+70
-25
ppcls/arch/backbone/model_zoo/dla.py
ppcls/arch/backbone/model_zoo/dla.py
+209
-148
ppcls/arch/backbone/model_zoo/dpn.py
ppcls/arch/backbone/model_zoo/dpn.py
+19
-12
ppcls/arch/backbone/model_zoo/efficientnet.py
ppcls/arch/backbone/model_zoo/efficientnet.py
+43
-33
ppcls/arch/backbone/model_zoo/ghostnet.py
ppcls/arch/backbone/model_zoo/ghostnet.py
+17
-10
ppcls/arch/backbone/model_zoo/googlenet.py
ppcls/arch/backbone/model_zoo/googlenet.py
+12
-9
ppcls/arch/backbone/model_zoo/gvt.py
ppcls/arch/backbone/model_zoo/gvt.py
+28
-16
ppcls/arch/backbone/model_zoo/hardnet.py
ppcls/arch/backbone/model_zoo/hardnet.py
+66
-40
ppcls/arch/backbone/model_zoo/inception_v4.py
ppcls/arch/backbone/model_zoo/inception_v4.py
+9
-4
ppcls/arch/backbone/model_zoo/levit.py
ppcls/arch/backbone/model_zoo/levit.py
+58
-27
ppcls/arch/backbone/model_zoo/mixnet.py
ppcls/arch/backbone/model_zoo/mixnet.py
+21
-12
ppcls/arch/backbone/model_zoo/mobilenet_v2.py
ppcls/arch/backbone/model_zoo/mobilenet_v2.py
+32
-18
ppcls/arch/backbone/model_zoo/rednet.py
ppcls/arch/backbone/model_zoo/rednet.py
+35
-40
ppcls/arch/backbone/model_zoo/regnet.py
ppcls/arch/backbone/model_zoo/regnet.py
+39
-19
ppcls/arch/backbone/model_zoo/repvgg.py
ppcls/arch/backbone/model_zoo/repvgg.py
+57
-31
ppcls/arch/backbone/model_zoo/res2net.py
ppcls/arch/backbone/model_zoo/res2net.py
+14
-9
ppcls/arch/backbone/model_zoo/res2net_vd.py
ppcls/arch/backbone/model_zoo/res2net_vd.py
+26
-10
ppcls/arch/backbone/model_zoo/resnest.py
ppcls/arch/backbone/model_zoo/resnest.py
+22
-12
ppcls/arch/backbone/model_zoo/resnet_vc.py
ppcls/arch/backbone/model_zoo/resnet_vc.py
+9
-8
ppcls/arch/backbone/model_zoo/resnext.py
ppcls/arch/backbone/model_zoo/resnext.py
+35
-17
ppcls/arch/backbone/model_zoo/resnext101_wsl.py
ppcls/arch/backbone/model_zoo/resnext101_wsl.py
+33
-15
ppcls/arch/backbone/model_zoo/resnext_vd.py
ppcls/arch/backbone/model_zoo/resnext_vd.py
+41
-15
ppcls/arch/backbone/model_zoo/rexnet.py
ppcls/arch/backbone/model_zoo/rexnet.py
+26
-16
ppcls/arch/backbone/model_zoo/se_resnet_vd.py
ppcls/arch/backbone/model_zoo/se_resnet_vd.py
+17
-12
ppcls/arch/backbone/model_zoo/se_resnext.py
ppcls/arch/backbone/model_zoo/se_resnext.py
+37
-15
ppcls/arch/backbone/model_zoo/se_resnext_vd.py
ppcls/arch/backbone/model_zoo/se_resnext_vd.py
+23
-12
ppcls/arch/backbone/model_zoo/shufflenet_v2.py
ppcls/arch/backbone/model_zoo/shufflenet_v2.py
+32
-18
ppcls/arch/backbone/model_zoo/squeezenet.py
ppcls/arch/backbone/model_zoo/squeezenet.py
+13
-8
ppcls/arch/backbone/model_zoo/swin_transformer.py
ppcls/arch/backbone/model_zoo/swin_transformer.py
+64
-22
ppcls/arch/backbone/model_zoo/tnt.py
ppcls/arch/backbone/model_zoo/tnt.py
+136
-80
ppcls/arch/backbone/model_zoo/vision_transformer.py
ppcls/arch/backbone/model_zoo/vision_transformer.py
+3
-3
ppcls/arch/backbone/model_zoo/xception.py
ppcls/arch/backbone/model_zoo/xception.py
+23
-15
ppcls/arch/backbone/model_zoo/xception_deeplab.py
ppcls/arch/backbone/model_zoo/xception_deeplab.py
+14
-8
未找到文件。
ppcls/arch/backbone/model_zoo/alexnet.py
浏览文件 @
4d496f78
...
@@ -23,10 +23,14 @@ import math
...
@@ -23,10 +23,14 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"AlexNet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/AlexNet_pretrained.pdparams"
}
MODEL_URLS
=
{
"AlexNet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/AlexNet_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
class
ConvPoolLayer
(
nn
.
Layer
):
class
ConvPoolLayer
(
nn
.
Layer
):
def
__init__
(
self
,
def
__init__
(
self
,
input_channels
,
input_channels
,
...
@@ -64,7 +68,7 @@ class ConvPoolLayer(nn.Layer):
...
@@ -64,7 +68,7 @@ class ConvPoolLayer(nn.Layer):
class
AlexNetDY
(
nn
.
Layer
):
class
AlexNetDY
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
):
def
__init__
(
self
,
class_
nu
m
=
1000
):
super
(
AlexNetDY
,
self
).
__init__
()
super
(
AlexNetDY
,
self
).
__init__
()
stdv
=
1.0
/
math
.
sqrt
(
3
*
11
*
11
)
stdv
=
1.0
/
math
.
sqrt
(
3
*
11
*
11
)
...
@@ -119,7 +123,7 @@ class AlexNetDY(nn.Layer):
...
@@ -119,7 +123,7 @@ class AlexNetDY(nn.Layer):
name
=
"fc7_offset"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)))
name
=
"fc7_offset"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)))
self
.
_fc8
=
Linear
(
self
.
_fc8
=
Linear
(
in_features
=
4096
,
in_features
=
4096
,
out_features
=
class_
di
m
,
out_features
=
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
name
=
"fc8_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
name
=
"fc8_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
bias_attr
=
ParamAttr
(
bias_attr
=
ParamAttr
(
...
@@ -143,6 +147,7 @@ class AlexNetDY(nn.Layer):
...
@@ -143,6 +147,7 @@ class AlexNetDY(nn.Layer):
x
=
self
.
_fc8
(
x
)
x
=
self
.
_fc8
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -155,7 +160,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -155,7 +160,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
AlexNet
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
AlexNet
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
AlexNetDY
(
**
kwargs
)
model
=
AlexNetDY
(
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"AlexNet"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"AlexNet"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/darknet.py
浏览文件 @
4d496f78
...
@@ -23,10 +23,14 @@ import math
...
@@ -23,10 +23,14 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"DarkNet53"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DarkNet53_pretrained.pdparams"
}
MODEL_URLS
=
{
"DarkNet53"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DarkNet53_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
class
ConvBNLayer
(
nn
.
Layer
):
class
ConvBNLayer
(
nn
.
Layer
):
def
__init__
(
self
,
def
__init__
(
self
,
input_channels
,
input_channels
,
...
@@ -77,7 +81,7 @@ class BasicBlock(nn.Layer):
...
@@ -77,7 +81,7 @@ class BasicBlock(nn.Layer):
class
DarkNet
(
nn
.
Layer
):
class
DarkNet
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
):
def
__init__
(
self
,
class_
nu
m
=
1000
):
super
(
DarkNet
,
self
).
__init__
()
super
(
DarkNet
,
self
).
__init__
()
self
.
stages
=
[
1
,
2
,
8
,
8
,
4
]
self
.
stages
=
[
1
,
2
,
8
,
8
,
4
]
...
@@ -126,7 +130,7 @@ class DarkNet(nn.Layer):
...
@@ -126,7 +130,7 @@ class DarkNet(nn.Layer):
stdv
=
1.0
/
math
.
sqrt
(
1024.0
)
stdv
=
1.0
/
math
.
sqrt
(
1024.0
)
self
.
_out
=
Linear
(
self
.
_out
=
Linear
(
1024
,
1024
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
name
=
"fc_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
name
=
"fc_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -172,6 +176,7 @@ class DarkNet(nn.Layer):
...
@@ -172,6 +176,7 @@ class DarkNet(nn.Layer):
x
=
self
.
_out
(
x
)
x
=
self
.
_out
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -183,8 +188,10 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -183,8 +188,10 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
DarkNet53
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DarkNet53
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DarkNet
(
**
kwargs
)
model
=
DarkNet
(
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DarkNet53"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DarkNet53"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/densenet.py
浏览文件 @
4d496f78
...
@@ -28,12 +28,18 @@ import math
...
@@ -28,12 +28,18 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"DenseNet121"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet121_pretrained.pdparams"
,
MODEL_URLS
=
{
"DenseNet161"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet161_pretrained.pdparams"
,
"DenseNet121"
:
"DenseNet169"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet169_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet121_pretrained.pdparams"
,
"DenseNet201"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet201_pretrained.pdparams"
,
"DenseNet161"
:
"DenseNet264"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet264_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet161_pretrained.pdparams"
,
}
"DenseNet169"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet169_pretrained.pdparams"
,
"DenseNet201"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet201_pretrained.pdparams"
,
"DenseNet264"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DenseNet264_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -196,7 +202,7 @@ class ConvBNLayer(nn.Layer):
...
@@ -196,7 +202,7 @@ class ConvBNLayer(nn.Layer):
class
DenseNet
(
nn
.
Layer
):
class
DenseNet
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
60
,
bn_size
=
4
,
dropout
=
0
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
60
,
bn_size
=
4
,
dropout
=
0
,
class_
nu
m
=
1000
):
super
(
DenseNet
,
self
).
__init__
()
super
(
DenseNet
,
self
).
__init__
()
supported_layers
=
[
121
,
161
,
169
,
201
,
264
]
supported_layers
=
[
121
,
161
,
169
,
201
,
264
]
...
@@ -269,7 +275,7 @@ class DenseNet(nn.Layer):
...
@@ -269,7 +275,7 @@ class DenseNet(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
num_features
,
num_features
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -289,6 +295,7 @@ class DenseNet(nn.Layer):
...
@@ -289,6 +295,7 @@ class DenseNet(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -301,31 +308,37 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -301,31 +308,37 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
DenseNet121
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DenseNet121
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DenseNet
(
layers
=
121
,
**
kwargs
)
model
=
DenseNet
(
layers
=
121
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet121"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet121"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DenseNet161
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DenseNet161
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DenseNet
(
layers
=
161
,
**
kwargs
)
model
=
DenseNet
(
layers
=
161
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet161"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet161"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DenseNet169
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DenseNet169
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DenseNet
(
layers
=
169
,
**
kwargs
)
model
=
DenseNet
(
layers
=
169
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet169"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet169"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DenseNet201
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DenseNet201
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DenseNet
(
layers
=
201
,
**
kwargs
)
model
=
DenseNet
(
layers
=
201
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet201"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet201"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DenseNet264
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DenseNet264
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DenseNet
(
layers
=
264
,
**
kwargs
)
model
=
DenseNet
(
layers
=
264
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet264"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DenseNet264"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/distilled_vision_transformer.py
浏览文件 @
4d496f78
...
@@ -19,15 +19,23 @@ from .vision_transformer import VisionTransformer, Identity, trunc_normal_, zero
...
@@ -19,15 +19,23 @@ from .vision_transformer import VisionTransformer, Identity, trunc_normal_, zero
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"DeiT_tiny_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_tiny_patch16_224_pretrained.pdparams"
,
"DeiT_tiny_patch16_224"
:
"DeiT_small_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_small_patch16_224_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_tiny_patch16_224_pretrained.pdparams"
,
"DeiT_base_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_patch16_224_pretrained.pdparams"
,
"DeiT_small_patch16_224"
:
"DeiT_tiny_distilled_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_tiny_distilled_patch16_224_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_small_patch16_224_pretrained.pdparams"
,
"DeiT_small_distilled_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_small_distilled_patch16_224_pretrained.pdparams"
,
"DeiT_base_patch16_224"
:
"DeiT_base_distilled_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_distilled_patch16_224_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_patch16_224_pretrained.pdparams"
,
"DeiT_base_patch16_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_patch16_384_pretrained.pdparams"
,
"DeiT_tiny_distilled_patch16_224"
:
"DeiT_base_distilled_patch16_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_distilled_patch16_384_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_tiny_distilled_patch16_224_pretrained.pdparams"
,
}
"DeiT_small_distilled_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_small_distilled_patch16_224_pretrained.pdparams"
,
"DeiT_base_distilled_patch16_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_distilled_patch16_224_pretrained.pdparams"
,
"DeiT_base_patch16_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_patch16_384_pretrained.pdparams"
,
"DeiT_base_distilled_patch16_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DeiT_base_distilled_patch16_384_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -36,7 +44,7 @@ class DistilledVisionTransformer(VisionTransformer):
...
@@ -36,7 +44,7 @@ class DistilledVisionTransformer(VisionTransformer):
def
__init__
(
self
,
def
__init__
(
self
,
img_size
=
224
,
img_size
=
224
,
patch_size
=
16
,
patch_size
=
16
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
embed_dim
=
768
,
embed_dim
=
768
,
depth
=
12
,
depth
=
12
,
num_heads
=
12
,
num_heads
=
12
,
...
@@ -48,7 +56,7 @@ class DistilledVisionTransformer(VisionTransformer):
...
@@ -48,7 +56,7 @@ class DistilledVisionTransformer(VisionTransformer):
super
().
__init__
(
super
().
__init__
(
img_size
=
img_size
,
img_size
=
img_size
,
patch_size
=
patch_size
,
patch_size
=
patch_size
,
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
embed_dim
=
embed_dim
,
embed_dim
=
embed_dim
,
depth
=
depth
,
depth
=
depth
,
num_heads
=
num_heads
,
num_heads
=
num_heads
,
...
@@ -68,7 +76,7 @@ class DistilledVisionTransformer(VisionTransformer):
...
@@ -68,7 +76,7 @@ class DistilledVisionTransformer(VisionTransformer):
self
.
head_dist
=
nn
.
Linear
(
self
.
head_dist
=
nn
.
Linear
(
self
.
embed_dim
,
self
.
embed_dim
,
self
.
class_
dim
)
if
self
.
class_di
m
>
0
else
Identity
()
self
.
class_
num
)
if
self
.
class_nu
m
>
0
else
Identity
()
trunc_normal_
(
self
.
dist_token
)
trunc_normal_
(
self
.
dist_token
)
trunc_normal_
(
self
.
pos_embed
)
trunc_normal_
(
self
.
pos_embed
)
...
@@ -109,7 +117,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -109,7 +117,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
DeiT_tiny_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DeiT_tiny_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
VisionTransformer
(
model
=
VisionTransformer
(
...
@@ -121,7 +129,11 @@ def DeiT_tiny_patch16_224(pretrained=False, use_ssld=False, **kwargs):
...
@@ -121,7 +129,11 @@ def DeiT_tiny_patch16_224(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_tiny_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_tiny_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -135,7 +147,11 @@ def DeiT_small_patch16_224(pretrained=False, use_ssld=False, **kwargs):
...
@@ -135,7 +147,11 @@ def DeiT_small_patch16_224(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_small_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_small_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -149,11 +165,16 @@ def DeiT_base_patch16_224(pretrained=False, use_ssld=False, **kwargs):
...
@@ -149,11 +165,16 @@ def DeiT_base_patch16_224(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DeiT_tiny_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DeiT_tiny_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DistilledVisionTransformer
(
model
=
DistilledVisionTransformer
(
patch_size
=
16
,
patch_size
=
16
,
embed_dim
=
192
,
embed_dim
=
192
,
...
@@ -163,11 +184,17 @@ def DeiT_tiny_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs):
...
@@ -163,11 +184,17 @@ def DeiT_tiny_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_tiny_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_tiny_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DeiT_small_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DeiT_small_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DistilledVisionTransformer
(
model
=
DistilledVisionTransformer
(
patch_size
=
16
,
patch_size
=
16
,
embed_dim
=
384
,
embed_dim
=
384
,
...
@@ -177,11 +204,16 @@ def DeiT_small_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs)
...
@@ -177,11 +204,16 @@ def DeiT_small_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs)
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_small_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_small_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DeiT_base_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DeiT_base_distilled_patch16_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DistilledVisionTransformer
(
model
=
DistilledVisionTransformer
(
patch_size
=
16
,
patch_size
=
16
,
embed_dim
=
768
,
embed_dim
=
768
,
...
@@ -191,7 +223,11 @@ def DeiT_base_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs):
...
@@ -191,7 +223,11 @@ def DeiT_base_distilled_patch16_224(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_distilled_patch16_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -206,11 +242,16 @@ def DeiT_base_patch16_384(pretrained=False, use_ssld=False, **kwargs):
...
@@ -206,11 +242,16 @@ def DeiT_base_patch16_384(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_patch16_384"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_patch16_384"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
DeiT_base_distilled_patch16_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DeiT_base_distilled_patch16_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DistilledVisionTransformer
(
model
=
DistilledVisionTransformer
(
img_size
=
384
,
img_size
=
384
,
patch_size
=
16
,
patch_size
=
16
,
...
@@ -221,5 +262,9 @@ def DeiT_base_distilled_patch16_384(pretrained=False, use_ssld=False, **kwargs):
...
@@ -221,5 +262,9 @@ def DeiT_base_distilled_patch16_384(pretrained=False, use_ssld=False, **kwargs):
qkv_bias
=
True
,
qkv_bias
=
True
,
epsilon
=
1e-6
,
epsilon
=
1e-6
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_distilled_patch16_384"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DeiT_base_distilled_patch16_384"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/dla.py
浏览文件 @
4d496f78
...
@@ -23,7 +23,6 @@ from paddle.nn.initializer import Normal, Constant
...
@@ -23,7 +23,6 @@ from paddle.nn.initializer import Normal, Constant
from
ppcls.arch.backbone.base.theseus_layer
import
Identity
from
ppcls.arch.backbone.base.theseus_layer
import
Identity
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"DLA34"
:
"DLA34"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DLA34_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DLA34_pretrained.pdparams"
,
...
@@ -47,10 +46,8 @@ MODEL_URLS = {
...
@@ -47,10 +46,8 @@ MODEL_URLS = {
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DLA169_pretrained.pdparams"
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DLA169_pretrained.pdparams"
}
}
__all__
=
MODEL_URLS
.
keys
()
__all__
=
MODEL_URLS
.
keys
()
zeros_
=
Constant
(
value
=
0.
)
zeros_
=
Constant
(
value
=
0.
)
ones_
=
Constant
(
value
=
1.
)
ones_
=
Constant
(
value
=
1.
)
...
@@ -59,15 +56,23 @@ class DlaBasic(nn.Layer):
...
@@ -59,15 +56,23 @@ class DlaBasic(nn.Layer):
def
__init__
(
self
,
inplanes
,
planes
,
stride
=
1
,
dilation
=
1
,
**
cargs
):
def
__init__
(
self
,
inplanes
,
planes
,
stride
=
1
,
dilation
=
1
,
**
cargs
):
super
(
DlaBasic
,
self
).
__init__
()
super
(
DlaBasic
,
self
).
__init__
()
self
.
conv1
=
nn
.
Conv2D
(
self
.
conv1
=
nn
.
Conv2D
(
inplanes
,
planes
,
kernel_size
=
3
,
stride
=
stride
,
inplanes
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
planes
,
)
kernel_size
=
3
,
stride
=
stride
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
)
self
.
bn1
=
nn
.
BatchNorm2D
(
planes
)
self
.
bn1
=
nn
.
BatchNorm2D
(
planes
)
self
.
relu
=
nn
.
ReLU
()
self
.
relu
=
nn
.
ReLU
()
self
.
conv2
=
nn
.
Conv2D
(
self
.
conv2
=
nn
.
Conv2D
(
planes
,
planes
,
kernel_size
=
3
,
stride
=
1
,
planes
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
planes
,
)
kernel_size
=
3
,
stride
=
1
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
)
self
.
bn2
=
nn
.
BatchNorm2D
(
planes
)
self
.
bn2
=
nn
.
BatchNorm2D
(
planes
)
self
.
stride
=
stride
self
.
stride
=
stride
...
@@ -91,23 +96,34 @@ class DlaBasic(nn.Layer):
...
@@ -91,23 +96,34 @@ class DlaBasic(nn.Layer):
class
DlaBottleneck
(
nn
.
Layer
):
class
DlaBottleneck
(
nn
.
Layer
):
expansion
=
2
expansion
=
2
def
__init__
(
self
,
inplanes
,
outplanes
,
stride
=
1
,
def
__init__
(
self
,
dilation
=
1
,
cardinality
=
1
,
base_width
=
64
):
inplanes
,
outplanes
,
stride
=
1
,
dilation
=
1
,
cardinality
=
1
,
base_width
=
64
):
super
(
DlaBottleneck
,
self
).
__init__
()
super
(
DlaBottleneck
,
self
).
__init__
()
self
.
stride
=
stride
self
.
stride
=
stride
mid_planes
=
int
(
math
.
floor
(
mid_planes
=
int
(
outplanes
*
(
base_width
/
64
))
*
cardinality
)
math
.
floor
(
outplanes
*
(
base_width
/
64
))
*
cardinality
)
mid_planes
=
mid_planes
//
self
.
expansion
mid_planes
=
mid_planes
//
self
.
expansion
self
.
conv1
=
nn
.
Conv2D
(
inplanes
,
mid_planes
,
kernel_size
=
1
,
bias_attr
=
False
)
self
.
conv1
=
nn
.
Conv2D
(
inplanes
,
mid_planes
,
kernel_size
=
1
,
bias_attr
=
False
)
self
.
bn1
=
nn
.
BatchNorm2D
(
mid_planes
)
self
.
bn1
=
nn
.
BatchNorm2D
(
mid_planes
)
self
.
conv2
=
nn
.
Conv2D
(
self
.
conv2
=
nn
.
Conv2D
(
mid_planes
,
mid_planes
,
kernel_size
=
3
,
mid_planes
,
stride
=
stride
,
padding
=
dilation
,
bias_attr
=
False
,
mid_planes
,
dilation
=
dilation
,
groups
=
cardinality
kernel_size
=
3
,
)
stride
=
stride
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
,
groups
=
cardinality
)
self
.
bn2
=
nn
.
BatchNorm2D
(
mid_planes
)
self
.
bn2
=
nn
.
BatchNorm2D
(
mid_planes
)
self
.
conv3
=
nn
.
Conv2D
(
mid_planes
,
outplanes
,
kernel_size
=
1
,
bias_attr
=
False
)
self
.
conv3
=
nn
.
Conv2D
(
mid_planes
,
outplanes
,
kernel_size
=
1
,
bias_attr
=
False
)
self
.
bn3
=
nn
.
BatchNorm2D
(
outplanes
)
self
.
bn3
=
nn
.
BatchNorm2D
(
outplanes
)
self
.
relu
=
nn
.
ReLU
()
self
.
relu
=
nn
.
ReLU
()
...
@@ -136,9 +152,12 @@ class DlaRoot(nn.Layer):
...
@@ -136,9 +152,12 @@ class DlaRoot(nn.Layer):
def
__init__
(
self
,
in_channels
,
out_channels
,
kernel_size
,
residual
):
def
__init__
(
self
,
in_channels
,
out_channels
,
kernel_size
,
residual
):
super
(
DlaRoot
,
self
).
__init__
()
super
(
DlaRoot
,
self
).
__init__
()
self
.
conv
=
nn
.
Conv2D
(
self
.
conv
=
nn
.
Conv2D
(
in_channels
,
out_channels
,
1
,
stride
=
1
,
in_channels
,
bias_attr
=
False
,
padding
=
(
kernel_size
-
1
)
//
2
out_channels
,
)
1
,
stride
=
1
,
bias_attr
=
False
,
padding
=
(
kernel_size
-
1
)
//
2
)
self
.
bn
=
nn
.
BatchNorm2D
(
out_channels
)
self
.
bn
=
nn
.
BatchNorm2D
(
out_channels
)
self
.
relu
=
nn
.
ReLU
()
self
.
relu
=
nn
.
ReLU
()
self
.
residual
=
residual
self
.
residual
=
residual
...
@@ -155,9 +174,18 @@ class DlaRoot(nn.Layer):
...
@@ -155,9 +174,18 @@ class DlaRoot(nn.Layer):
class
DlaTree
(
nn
.
Layer
):
class
DlaTree
(
nn
.
Layer
):
def
__init__
(
self
,
levels
,
block
,
in_channels
,
out_channels
,
def
__init__
(
self
,
stride
=
1
,
dilation
=
1
,
cardinality
=
1
,
base_width
=
64
,
levels
,
level_root
=
False
,
root_dim
=
0
,
root_kernel_size
=
1
,
block
,
in_channels
,
out_channels
,
stride
=
1
,
dilation
=
1
,
cardinality
=
1
,
base_width
=
64
,
level_root
=
False
,
root_dim
=
0
,
root_kernel_size
=
1
,
root_residual
=
False
):
root_residual
=
False
):
super
(
DlaTree
,
self
).
__init__
()
super
(
DlaTree
,
self
).
__init__
()
if
root_dim
==
0
:
if
root_dim
==
0
:
...
@@ -168,28 +196,45 @@ class DlaTree(nn.Layer):
...
@@ -168,28 +196,45 @@ class DlaTree(nn.Layer):
self
.
downsample
=
nn
.
MaxPool2D
(
self
.
downsample
=
nn
.
MaxPool2D
(
stride
,
stride
=
stride
)
if
stride
>
1
else
Identity
()
stride
,
stride
=
stride
)
if
stride
>
1
else
Identity
()
self
.
project
=
Identity
()
self
.
project
=
Identity
()
cargs
=
dict
(
dilation
=
dilation
,
cardinality
=
cardinality
,
base_width
=
base_width
)
cargs
=
dict
(
dilation
=
dilation
,
cardinality
=
cardinality
,
base_width
=
base_width
)
if
levels
==
1
:
if
levels
==
1
:
self
.
tree1
=
block
(
in_channels
,
out_channels
,
stride
,
**
cargs
)
self
.
tree1
=
block
(
in_channels
,
out_channels
,
stride
,
**
cargs
)
self
.
tree2
=
block
(
out_channels
,
out_channels
,
1
,
**
cargs
)
self
.
tree2
=
block
(
out_channels
,
out_channels
,
1
,
**
cargs
)
if
in_channels
!=
out_channels
:
if
in_channels
!=
out_channels
:
self
.
project
=
nn
.
Sequential
(
self
.
project
=
nn
.
Sequential
(
nn
.
Conv2D
(
in_channels
,
out_channels
,
kernel_size
=
1
,
stride
=
1
,
bias_attr
=
False
),
nn
.
Conv2D
(
in_channels
,
out_channels
,
kernel_size
=
1
,
stride
=
1
,
bias_attr
=
False
),
nn
.
BatchNorm2D
(
out_channels
))
nn
.
BatchNorm2D
(
out_channels
))
else
:
else
:
cargs
.
update
(
dict
(
root_kernel_size
=
root_kernel_size
,
root_residual
=
root_residual
))
cargs
.
update
(
dict
(
root_kernel_size
=
root_kernel_size
,
root_residual
=
root_residual
))
self
.
tree1
=
DlaTree
(
self
.
tree1
=
DlaTree
(
levels
-
1
,
block
,
in_channels
,
levels
-
1
,
out_channels
,
stride
,
root_dim
=
0
,
**
cargs
block
,
)
in_channels
,
out_channels
,
stride
,
root_dim
=
0
,
**
cargs
)
self
.
tree2
=
DlaTree
(
self
.
tree2
=
DlaTree
(
levels
-
1
,
block
,
out_channels
,
levels
-
1
,
out_channels
,
root_dim
=
root_dim
+
out_channels
,
**
cargs
block
,
)
out_channels
,
out_channels
,
root_dim
=
root_dim
+
out_channels
,
**
cargs
)
if
levels
==
1
:
if
levels
==
1
:
self
.
root
=
DlaRoot
(
root_dim
,
out_channels
,
root_kernel_size
,
root_residual
)
self
.
root
=
DlaRoot
(
root_dim
,
out_channels
,
root_kernel_size
,
root_residual
)
self
.
level_root
=
level_root
self
.
level_root
=
level_root
self
.
root_dim
=
root_dim
self
.
root_dim
=
root_dim
...
@@ -214,12 +259,20 @@ class DlaTree(nn.Layer):
...
@@ -214,12 +259,20 @@ class DlaTree(nn.Layer):
class
DLA
(
nn
.
Layer
):
class
DLA
(
nn
.
Layer
):
def
__init__
(
self
,
levels
,
channels
,
in_chans
=
3
,
cardinality
=
1
,
def
__init__
(
self
,
base_width
=
64
,
block
=
DlaBottleneck
,
residual_root
=
False
,
levels
,
drop_rate
=
0.0
,
class_dim
=
1000
,
with_pool
=
True
):
channels
,
in_chans
=
3
,
cardinality
=
1
,
base_width
=
64
,
block
=
DlaBottleneck
,
residual_root
=
False
,
drop_rate
=
0.0
,
class_num
=
1000
,
with_pool
=
True
):
super
(
DLA
,
self
).
__init__
()
super
(
DLA
,
self
).
__init__
()
self
.
channels
=
channels
self
.
channels
=
channels
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
with_pool
=
with_pool
self
.
with_pool
=
with_pool
self
.
cardinality
=
cardinality
self
.
cardinality
=
cardinality
self
.
base_width
=
base_width
self
.
base_width
=
base_width
...
@@ -227,46 +280,72 @@ class DLA(nn.Layer):
...
@@ -227,46 +280,72 @@ class DLA(nn.Layer):
self
.
base_layer
=
nn
.
Sequential
(
self
.
base_layer
=
nn
.
Sequential
(
nn
.
Conv2D
(
nn
.
Conv2D
(
in_chans
,
channels
[
0
],
kernel_size
=
7
,
in_chans
,
stride
=
1
,
padding
=
3
,
bias_attr
=
False
channels
[
0
],
),
kernel_size
=
7
,
stride
=
1
,
padding
=
3
,
bias_attr
=
False
),
nn
.
BatchNorm2D
(
channels
[
0
]),
nn
.
BatchNorm2D
(
channels
[
0
]),
nn
.
ReLU
())
nn
.
ReLU
())
self
.
level0
=
self
.
_make_conv_level
(
channels
[
0
],
channels
[
0
],
levels
[
0
])
self
.
level0
=
self
.
_make_conv_level
(
channels
[
0
],
channels
[
0
],
self
.
level1
=
self
.
_make_conv_level
(
channels
[
0
],
channels
[
1
],
levels
[
1
],
stride
=
2
)
levels
[
0
])
self
.
level1
=
self
.
_make_conv_level
(
channels
[
0
],
channels
[
1
],
levels
[
1
],
stride
=
2
)
cargs
=
dict
(
cargs
=
dict
(
cardinality
=
cardinality
,
cardinality
=
cardinality
,
base_width
=
base_width
,
base_width
=
base_width
,
root_residual
=
residual_root
root_residual
=
residual_root
)
)
self
.
level2
=
DlaTree
(
self
.
level2
=
DlaTree
(
levels
[
2
],
block
,
channels
[
1
],
levels
[
2
],
channels
[
2
],
2
,
level_root
=
False
,
**
cargs
block
,
)
channels
[
1
],
channels
[
2
],
2
,
level_root
=
False
,
**
cargs
)
self
.
level3
=
DlaTree
(
self
.
level3
=
DlaTree
(
levels
[
3
],
block
,
channels
[
2
],
levels
[
3
],
channels
[
3
],
2
,
level_root
=
True
,
**
cargs
block
,
)
channels
[
2
],
channels
[
3
],
2
,
level_root
=
True
,
**
cargs
)
self
.
level4
=
DlaTree
(
self
.
level4
=
DlaTree
(
levels
[
4
],
block
,
channels
[
3
],
levels
[
4
],
channels
[
4
],
2
,
level_root
=
True
,
**
cargs
block
,
)
channels
[
3
],
channels
[
4
],
2
,
level_root
=
True
,
**
cargs
)
self
.
level5
=
DlaTree
(
self
.
level5
=
DlaTree
(
levels
[
5
],
block
,
channels
[
4
],
levels
[
5
],
channels
[
5
],
2
,
level_root
=
True
,
**
cargs
block
,
)
channels
[
4
],
channels
[
5
],
2
,
level_root
=
True
,
**
cargs
)
self
.
feature_info
=
[
self
.
feature_info
=
[
# rare to have a meaningful stride 1 level
# rare to have a meaningful stride 1 level
dict
(
num_chs
=
channels
[
0
],
reduction
=
1
,
module
=
'level0'
),
dict
(
dict
(
num_chs
=
channels
[
1
],
reduction
=
2
,
module
=
'level1'
),
num_chs
=
channels
[
0
],
reduction
=
1
,
module
=
'level0'
),
dict
(
num_chs
=
channels
[
2
],
reduction
=
4
,
module
=
'level2'
),
dict
(
dict
(
num_chs
=
channels
[
3
],
reduction
=
8
,
module
=
'level3'
),
num_chs
=
channels
[
1
],
reduction
=
2
,
module
=
'level1'
),
dict
(
num_chs
=
channels
[
4
],
reduction
=
16
,
module
=
'level4'
),
dict
(
dict
(
num_chs
=
channels
[
5
],
reduction
=
32
,
module
=
'level5'
),
num_chs
=
channels
[
2
],
reduction
=
4
,
module
=
'level2'
),
dict
(
num_chs
=
channels
[
3
],
reduction
=
8
,
module
=
'level3'
),
dict
(
num_chs
=
channels
[
4
],
reduction
=
16
,
module
=
'level4'
),
dict
(
num_chs
=
channels
[
5
],
reduction
=
32
,
module
=
'level5'
),
]
]
self
.
num_features
=
channels
[
-
1
]
self
.
num_features
=
channels
[
-
1
]
...
@@ -274,8 +353,8 @@ class DLA(nn.Layer):
...
@@ -274,8 +353,8 @@ class DLA(nn.Layer):
if
with_pool
:
if
with_pool
:
self
.
global_pool
=
nn
.
AdaptiveAvgPool2D
(
1
)
self
.
global_pool
=
nn
.
AdaptiveAvgPool2D
(
1
)
if
class_
di
m
>
0
:
if
class_
nu
m
>
0
:
self
.
fc
=
nn
.
Conv2D
(
self
.
num_features
,
class_
di
m
,
1
)
self
.
fc
=
nn
.
Conv2D
(
self
.
num_features
,
class_
nu
m
,
1
)
for
m
in
self
.
sublayers
():
for
m
in
self
.
sublayers
():
if
isinstance
(
m
,
nn
.
Conv2D
):
if
isinstance
(
m
,
nn
.
Conv2D
):
...
@@ -291,12 +370,14 @@ class DLA(nn.Layer):
...
@@ -291,12 +370,14 @@ class DLA(nn.Layer):
for
i
in
range
(
convs
):
for
i
in
range
(
convs
):
modules
.
extend
([
modules
.
extend
([
nn
.
Conv2D
(
nn
.
Conv2D
(
inplanes
,
planes
,
kernel_size
=
3
,
inplanes
,
planes
,
kernel_size
=
3
,
stride
=
stride
if
i
==
0
else
1
,
stride
=
stride
if
i
==
0
else
1
,
padding
=
dilation
,
bias_attr
=
False
,
dilation
=
dilation
padding
=
dilation
,
)
,
bias_attr
=
False
,
nn
.
BatchNorm2D
(
planes
),
dilation
=
dilation
),
nn
.
BatchNorm2D
(
planes
),
nn
.
ReLU
()
nn
.
ReLU
()
])
])
inplanes
=
planes
inplanes
=
planes
return
nn
.
Sequential
(
*
modules
)
return
nn
.
Sequential
(
*
modules
)
...
@@ -321,7 +402,7 @@ class DLA(nn.Layer):
...
@@ -321,7 +402,7 @@ class DLA(nn.Layer):
if
self
.
drop_rate
>
0.
:
if
self
.
drop_rate
>
0.
:
x
=
F
.
dropout
(
x
,
p
=
self
.
drop_rate
,
training
=
self
.
training
)
x
=
F
.
dropout
(
x
,
p
=
self
.
drop_rate
,
training
=
self
.
training
)
if
self
.
class_
di
m
>
0
:
if
self
.
class_
nu
m
>
0
:
x
=
self
.
fc
(
x
)
x
=
self
.
fc
(
x
)
x
=
x
.
flatten
(
1
)
x
=
x
.
flatten
(
1
)
...
@@ -342,124 +423,104 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -342,124 +423,104 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
DLA34
(
pretrained
=
False
,
**
kwargs
):
def
DLA34
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
channels
=
(
16
,
32
,
64
,
128
,
256
,
512
),
channels
=
(
16
,
32
,
64
,
128
,
256
,
512
),
block
=
DlaBasic
,
block
=
DlaBasic
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA34"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA34"
])
return
model
return
model
def
DLA46_c
(
pretrained
=
False
,
**
kwargs
):
def
DLA46_c
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA46_c"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA46_c"
])
return
model
return
model
def
DLA46x_c
(
pretrained
=
False
,
**
kwargs
):
def
DLA46x_c
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
2
,
1
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
cardinality
=
32
,
cardinality
=
32
,
base_width
=
4
,
base_width
=
4
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA46x_c"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA46x_c"
])
return
model
return
model
def
DLA60
(
pretrained
=
False
,
**
kwargs
):
def
DLA60
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60"
])
return
model
return
model
def
DLA60x
(
pretrained
=
False
,
**
kwargs
):
def
DLA60x
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
cardinality
=
32
,
cardinality
=
32
,
base_width
=
4
,
base_width
=
4
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60x"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60x"
])
return
model
return
model
def
DLA60x_c
(
pretrained
=
False
,
**
kwargs
):
def
DLA60x_c
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
levels
=
(
1
,
1
,
1
,
2
,
3
,
1
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
channels
=
(
16
,
32
,
64
,
64
,
128
,
256
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
cardinality
=
32
,
cardinality
=
32
,
base_width
=
4
,
base_width
=
4
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60x_c"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA60x_c"
])
return
model
return
model
def
DLA102
(
pretrained
=
False
,
**
kwargs
):
def
DLA102
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
residual_root
=
True
,
residual_root
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102"
])
return
model
return
model
def
DLA102x
(
pretrained
=
False
,
**
kwargs
):
def
DLA102x
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
cardinality
=
32
,
cardinality
=
32
,
base_width
=
4
,
base_width
=
4
,
residual_root
=
True
,
residual_root
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102x"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102x"
])
return
model
return
model
def
DLA102x2
(
pretrained
=
False
,
**
kwargs
):
def
DLA102x2
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
levels
=
(
1
,
1
,
1
,
3
,
4
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
cardinality
=
64
,
cardinality
=
64
,
base_width
=
4
,
base_width
=
4
,
residual_root
=
True
,
residual_root
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102x2"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA102x2"
])
return
model
return
model
def
DLA169
(
pretrained
=
False
,
**
kwargs
):
def
DLA169
(
pretrained
=
False
,
**
kwargs
):
model
=
DLA
(
model
=
DLA
(
levels
=
(
1
,
1
,
2
,
3
,
5
,
1
),
levels
=
(
1
,
1
,
2
,
3
,
5
,
1
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
channels
=
(
16
,
32
,
128
,
256
,
512
,
1024
),
block
=
DlaBottleneck
,
block
=
DlaBottleneck
,
residual_root
=
True
,
residual_root
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA169"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DLA169"
])
return
model
return
model
ppcls/arch/backbone/model_zoo/dpn.py
浏览文件 @
4d496f78
...
@@ -29,12 +29,18 @@ import math
...
@@ -29,12 +29,18 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"DPN68"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN68_pretrained.pdparams"
,
MODEL_URLS
=
{
"DPN92"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN92_pretrained.pdparams"
,
"DPN68"
:
"DPN98"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN98_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN68_pretrained.pdparams"
,
"DPN107"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN107_pretrained.pdparams"
,
"DPN92"
:
"DPN131"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN131_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN92_pretrained.pdparams"
,
}
"DPN98"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN98_pretrained.pdparams"
,
"DPN107"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN107_pretrained.pdparams"
,
"DPN131"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/DPN131_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -211,10 +217,10 @@ class DualPathFactory(nn.Layer):
...
@@ -211,10 +217,10 @@ class DualPathFactory(nn.Layer):
class
DPN
(
nn
.
Layer
):
class
DPN
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
68
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
68
,
class_
nu
m
=
1000
):
super
(
DPN
,
self
).
__init__
()
super
(
DPN
,
self
).
__init__
()
self
.
_class_
dim
=
class_di
m
self
.
_class_
num
=
class_nu
m
args
=
self
.
get_net_args
(
layers
)
args
=
self
.
get_net_args
(
layers
)
bws
=
args
[
'bw'
]
bws
=
args
[
'bw'
]
...
@@ -309,7 +315,7 @@ class DPN(nn.Layer):
...
@@ -309,7 +315,7 @@ class DPN(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
out_channel
,
out_channel
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -400,7 +406,8 @@ class DPN(nn.Layer):
...
@@ -400,7 +406,8 @@ class DPN(nn.Layer):
net_arg
[
'init_padding'
]
=
init_padding
net_arg
[
'init_padding'
]
=
init_padding
return
net_arg
return
net_arg
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -411,7 +418,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -411,7 +418,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
else
:
else
:
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
DPN68
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DPN68
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
...
@@ -441,4 +448,4 @@ def DPN107(pretrained=False, use_ssld=False, **kwargs):
...
@@ -441,4 +448,4 @@ def DPN107(pretrained=False, use_ssld=False, **kwargs):
def
DPN131
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
DPN131
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
DPN
(
layers
=
131
,
**
kwargs
)
model
=
DPN
(
layers
=
131
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DPN131"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"DPN131"
])
return
model
return
model
\ No newline at end of file
ppcls/arch/backbone/model_zoo/efficientnet.py
浏览文件 @
4d496f78
...
@@ -11,16 +11,26 @@ import copy
...
@@ -11,16 +11,26 @@ import copy
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"EfficientNetB0_small"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB0_small_pretrained.pdparams"
,
MODEL_URLS
=
{
"EfficientNetB0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB0_pretrained.pdparams"
,
"EfficientNetB0_small"
:
"EfficientNetB1"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB1_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB0_small_pretrained.pdparams"
,
"EfficientNetB2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB2_pretrained.pdparams"
,
"EfficientNetB0"
:
"EfficientNetB3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB3_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB0_pretrained.pdparams"
,
"EfficientNetB4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB4_pretrained.pdparams"
,
"EfficientNetB1"
:
"EfficientNetB5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB5_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB1_pretrained.pdparams"
,
"EfficientNetB6"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB6_pretrained.pdparams"
,
"EfficientNetB2"
:
"EfficientNetB7"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB7_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB2_pretrained.pdparams"
,
}
"EfficientNetB3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB3_pretrained.pdparams"
,
"EfficientNetB4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB4_pretrained.pdparams"
,
"EfficientNetB5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB5_pretrained.pdparams"
,
"EfficientNetB6"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB6_pretrained.pdparams"
,
"EfficientNetB7"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/EfficientNetB7_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -725,7 +735,7 @@ class EfficientNet(nn.Layer):
...
@@ -725,7 +735,7 @@ class EfficientNet(nn.Layer):
padding_type
=
"SAME"
,
padding_type
=
"SAME"
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
EfficientNet
,
self
).
__init__
()
super
(
EfficientNet
,
self
).
__init__
()
model_name
=
'efficientnet-'
+
name
model_name
=
'efficientnet-'
+
name
...
@@ -778,7 +788,7 @@ class EfficientNet(nn.Layer):
...
@@ -778,7 +788,7 @@ class EfficientNet(nn.Layer):
param_attr
,
bias_attr
=
init_fc_layer
(
"_fc"
)
param_attr
,
bias_attr
=
init_fc_layer
(
"_fc"
)
self
.
_fc
=
Linear
(
self
.
_fc
=
Linear
(
output_channels
,
output_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
param_attr
,
weight_attr
=
param_attr
,
bias_attr
=
bias_attr
)
bias_attr
=
bias_attr
)
...
@@ -792,7 +802,7 @@ class EfficientNet(nn.Layer):
...
@@ -792,7 +802,7 @@ class EfficientNet(nn.Layer):
x
=
self
.
_fc
(
x
)
x
=
self
.
_fc
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -803,14 +813,14 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -803,14 +813,14 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
else
:
else
:
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
EfficientNetB0_small
(
padding_type
=
'DYNAMIC'
,
def
EfficientNetB0_small
(
padding_type
=
'DYNAMIC'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
False
,
use_se
=
False
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b0'
,
name
=
'b0'
,
...
@@ -825,8 +835,8 @@ def EfficientNetB0_small(padding_type='DYNAMIC',
...
@@ -825,8 +835,8 @@ def EfficientNetB0_small(padding_type='DYNAMIC',
def
EfficientNetB0
(
padding_type
=
'SAME'
,
def
EfficientNetB0
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b0'
,
name
=
'b0'
,
...
@@ -841,8 +851,8 @@ def EfficientNetB0(padding_type='SAME',
...
@@ -841,8 +851,8 @@ def EfficientNetB0(padding_type='SAME',
def
EfficientNetB1
(
padding_type
=
'SAME'
,
def
EfficientNetB1
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b1'
,
name
=
'b1'
,
...
@@ -857,8 +867,8 @@ def EfficientNetB1(padding_type='SAME',
...
@@ -857,8 +867,8 @@ def EfficientNetB1(padding_type='SAME',
def
EfficientNetB2
(
padding_type
=
'SAME'
,
def
EfficientNetB2
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b2'
,
name
=
'b2'
,
...
@@ -873,8 +883,8 @@ def EfficientNetB2(padding_type='SAME',
...
@@ -873,8 +883,8 @@ def EfficientNetB2(padding_type='SAME',
def
EfficientNetB3
(
padding_type
=
'SAME'
,
def
EfficientNetB3
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b3'
,
name
=
'b3'
,
...
@@ -889,8 +899,8 @@ def EfficientNetB3(padding_type='SAME',
...
@@ -889,8 +899,8 @@ def EfficientNetB3(padding_type='SAME',
def
EfficientNetB4
(
padding_type
=
'SAME'
,
def
EfficientNetB4
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b4'
,
name
=
'b4'
,
...
@@ -905,8 +915,8 @@ def EfficientNetB4(padding_type='SAME',
...
@@ -905,8 +915,8 @@ def EfficientNetB4(padding_type='SAME',
def
EfficientNetB5
(
padding_type
=
'SAME'
,
def
EfficientNetB5
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b5'
,
name
=
'b5'
,
...
@@ -921,8 +931,8 @@ def EfficientNetB5(padding_type='SAME',
...
@@ -921,8 +931,8 @@ def EfficientNetB5(padding_type='SAME',
def
EfficientNetB6
(
padding_type
=
'SAME'
,
def
EfficientNetB6
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b6'
,
name
=
'b6'
,
...
@@ -937,8 +947,8 @@ def EfficientNetB6(padding_type='SAME',
...
@@ -937,8 +947,8 @@ def EfficientNetB6(padding_type='SAME',
def
EfficientNetB7
(
padding_type
=
'SAME'
,
def
EfficientNetB7
(
padding_type
=
'SAME'
,
override_params
=
None
,
override_params
=
None
,
use_se
=
True
,
use_se
=
True
,
pretrained
=
False
,
pretrained
=
False
,
use_ssld
=
False
,
use_ssld
=
False
,
**
kwargs
):
**
kwargs
):
model
=
EfficientNet
(
model
=
EfficientNet
(
name
=
'b7'
,
name
=
'b7'
,
...
@@ -947,4 +957,4 @@ def EfficientNetB7(padding_type='SAME',
...
@@ -947,4 +957,4 @@ def EfficientNetB7(padding_type='SAME',
use_se
=
use_se
,
use_se
=
use_se
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"EfficientNetB7"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"EfficientNetB7"
])
return
model
return
model
\ No newline at end of file
ppcls/arch/backbone/model_zoo/ghostnet.py
浏览文件 @
4d496f78
...
@@ -23,10 +23,14 @@ from paddle.nn.initializer import Uniform, KaimingNormal
...
@@ -23,10 +23,14 @@ from paddle.nn.initializer import Uniform, KaimingNormal
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"GhostNet_x0_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x0_5_pretrained.pdparams"
,
MODEL_URLS
=
{
"GhostNet_x1_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x1_0_pretrained.pdparams"
,
"GhostNet_x0_5"
:
"GhostNet_x1_3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x1_3_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x0_5_pretrained.pdparams"
,
}
"GhostNet_x1_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x1_0_pretrained.pdparams"
,
"GhostNet_x1_3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GhostNet_x1_3_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -215,7 +219,7 @@ class GhostBottleneck(nn.Layer):
...
@@ -215,7 +219,7 @@ class GhostBottleneck(nn.Layer):
class
GhostNet
(
nn
.
Layer
):
class
GhostNet
(
nn
.
Layer
):
def
__init__
(
self
,
scale
,
class_
di
m
=
1000
):
def
__init__
(
self
,
scale
,
class_
nu
m
=
1000
):
super
(
GhostNet
,
self
).
__init__
()
super
(
GhostNet
,
self
).
__init__
()
self
.
cfgs
=
[
self
.
cfgs
=
[
# k, t, c, SE, s
# k, t, c, SE, s
...
@@ -290,7 +294,7 @@ class GhostNet(nn.Layer):
...
@@ -290,7 +294,7 @@ class GhostNet(nn.Layer):
stdv
=
1.0
/
math
.
sqrt
(
self
.
_fc0_output_channels
*
1.0
)
stdv
=
1.0
/
math
.
sqrt
(
self
.
_fc0_output_channels
*
1.0
)
self
.
fc_1
=
Linear
(
self
.
fc_1
=
Linear
(
self
.
_fc0_output_channels
,
self
.
_fc0_output_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
name
=
"fc_1_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
name
=
"fc_1_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
bias_attr
=
ParamAttr
(
name
=
"fc_1_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_1_offset"
))
...
@@ -322,7 +326,7 @@ class GhostNet(nn.Layer):
...
@@ -322,7 +326,7 @@ class GhostNet(nn.Layer):
new_v
+=
divisor
new_v
+=
divisor
return
new_v
return
new_v
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -338,17 +342,20 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -338,17 +342,20 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
GhostNet_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
GhostNet_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
GhostNet
(
scale
=
0.5
,
**
kwargs
)
model
=
GhostNet
(
scale
=
0.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x0_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x0_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
GhostNet_x1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
GhostNet_x1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
GhostNet
(
scale
=
1.0
,
**
kwargs
)
model
=
GhostNet
(
scale
=
1.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x1_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x1_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
GhostNet_x1_3
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
GhostNet_x1_3
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
GhostNet
(
scale
=
1.3
,
**
kwargs
)
model
=
GhostNet
(
scale
=
1.3
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x1_3"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GhostNet_x1_3"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/googlenet.py
浏览文件 @
4d496f78
...
@@ -10,8 +10,10 @@ import math
...
@@ -10,8 +10,10 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"GoogLeNet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GoogLeNet_pretrained.pdparams"
,
MODEL_URLS
=
{
}
"GoogLeNet"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/GoogLeNet_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -101,7 +103,7 @@ class Inception(nn.Layer):
...
@@ -101,7 +103,7 @@ class Inception(nn.Layer):
class
GoogLeNetDY
(
nn
.
Layer
):
class
GoogLeNetDY
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
):
def
__init__
(
self
,
class_
nu
m
=
1000
):
super
(
GoogLeNetDY
,
self
).
__init__
()
super
(
GoogLeNetDY
,
self
).
__init__
()
self
.
_conv
=
ConvLayer
(
3
,
64
,
7
,
2
,
name
=
"conv1"
)
self
.
_conv
=
ConvLayer
(
3
,
64
,
7
,
2
,
name
=
"conv1"
)
self
.
_pool
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
)
self
.
_pool
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
)
...
@@ -134,7 +136,7 @@ class GoogLeNetDY(nn.Layer):
...
@@ -134,7 +136,7 @@ class GoogLeNetDY(nn.Layer):
self
.
_drop
=
Dropout
(
p
=
0.4
,
mode
=
"downscale_in_infer"
)
self
.
_drop
=
Dropout
(
p
=
0.4
,
mode
=
"downscale_in_infer"
)
self
.
_fc_out
=
Linear
(
self
.
_fc_out
=
Linear
(
1024
,
1024
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
xavier
(
1024
,
1
,
"out"
),
weight_attr
=
xavier
(
1024
,
1
,
"out"
),
bias_attr
=
ParamAttr
(
name
=
"out_offset"
))
bias_attr
=
ParamAttr
(
name
=
"out_offset"
))
self
.
_pool_o1
=
AvgPool2D
(
kernel_size
=
5
,
stride
=
3
)
self
.
_pool_o1
=
AvgPool2D
(
kernel_size
=
5
,
stride
=
3
)
...
@@ -147,7 +149,7 @@ class GoogLeNetDY(nn.Layer):
...
@@ -147,7 +149,7 @@ class GoogLeNetDY(nn.Layer):
self
.
_drop_o1
=
Dropout
(
p
=
0.7
,
mode
=
"downscale_in_infer"
)
self
.
_drop_o1
=
Dropout
(
p
=
0.7
,
mode
=
"downscale_in_infer"
)
self
.
_out1
=
Linear
(
self
.
_out1
=
Linear
(
1024
,
1024
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
xavier
(
1024
,
1
,
"out1"
),
weight_attr
=
xavier
(
1024
,
1
,
"out1"
),
bias_attr
=
ParamAttr
(
name
=
"out1_offset"
))
bias_attr
=
ParamAttr
(
name
=
"out1_offset"
))
self
.
_pool_o2
=
AvgPool2D
(
kernel_size
=
5
,
stride
=
3
)
self
.
_pool_o2
=
AvgPool2D
(
kernel_size
=
5
,
stride
=
3
)
...
@@ -160,7 +162,7 @@ class GoogLeNetDY(nn.Layer):
...
@@ -160,7 +162,7 @@ class GoogLeNetDY(nn.Layer):
self
.
_drop_o2
=
Dropout
(
p
=
0.7
,
mode
=
"downscale_in_infer"
)
self
.
_drop_o2
=
Dropout
(
p
=
0.7
,
mode
=
"downscale_in_infer"
)
self
.
_out2
=
Linear
(
self
.
_out2
=
Linear
(
1024
,
1024
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
xavier
(
1024
,
1
,
"out2"
),
weight_attr
=
xavier
(
1024
,
1
,
"out2"
),
bias_attr
=
ParamAttr
(
name
=
"out2_offset"
))
bias_attr
=
ParamAttr
(
name
=
"out2_offset"
))
...
@@ -205,8 +207,8 @@ class GoogLeNetDY(nn.Layer):
...
@@ -205,8 +207,8 @@ class GoogLeNetDY(nn.Layer):
x
=
self
.
_drop_o2
(
x
)
x
=
self
.
_drop_o2
(
x
)
out2
=
self
.
_out2
(
x
)
out2
=
self
.
_out2
(
x
)
return
[
out
,
out1
,
out2
]
return
[
out
,
out1
,
out2
]
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -222,5 +224,6 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -222,5 +224,6 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
GoogLeNet
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
GoogLeNet
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
GoogLeNetDY
(
**
kwargs
)
model
=
GoogLeNetDY
(
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GoogLeNet"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"GoogLeNet"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/gvt.py
浏览文件 @
4d496f78
...
@@ -25,18 +25,23 @@ from .vision_transformer import Block as ViTBlock
...
@@ -25,18 +25,23 @@ from .vision_transformer import Block as ViTBlock
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"pcpvt_small"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_small_pretrained.pdparams"
,
"pcpvt_small"
:
"pcpvt_base"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_base_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_small_pretrained.pdparams"
,
"pcpvt_large"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_large_pretrained.pdparams"
,
"pcpvt_base"
:
"alt_gvt_small"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_small_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_base_pretrained.pdparams"
,
"alt_gvt_base"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_base_pretrained.pdparams"
,
"pcpvt_large"
:
"alt_gvt_large"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_large_pretrained.pdparams"
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/pcpvt_large_pretrained.pdparams"
,
}
"alt_gvt_small"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_small_pretrained.pdparams"
,
"alt_gvt_base"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_base_pretrained.pdparams"
,
"alt_gvt_large"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/alt_gvt_large_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
class
GroupAttention
(
nn
.
Layer
):
class
GroupAttention
(
nn
.
Layer
):
"""LSA: self attention within a group.
"""LSA: self attention within a group.
"""
"""
...
@@ -522,7 +527,7 @@ class ALTGVT(PCPVT):
...
@@ -522,7 +527,7 @@ class ALTGVT(PCPVT):
img_size
=
224
,
img_size
=
224
,
patch_size
=
4
,
patch_size
=
4
,
in_chans
=
3
,
in_chans
=
3
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
embed_dims
=
[
64
,
128
,
256
],
embed_dims
=
[
64
,
128
,
256
],
num_heads
=
[
1
,
2
,
4
],
num_heads
=
[
1
,
2
,
4
],
mlp_ratios
=
[
4
,
4
,
4
],
mlp_ratios
=
[
4
,
4
,
4
],
...
@@ -536,7 +541,7 @@ class ALTGVT(PCPVT):
...
@@ -536,7 +541,7 @@ class ALTGVT(PCPVT):
sr_ratios
=
[
4
,
2
,
1
],
sr_ratios
=
[
4
,
2
,
1
],
block_cls
=
GroupBlock
,
block_cls
=
GroupBlock
,
wss
=
[
7
,
7
,
7
]):
wss
=
[
7
,
7
,
7
]):
super
().
__init__
(
img_size
,
patch_size
,
in_chans
,
class_
di
m
,
embed_dims
,
super
().
__init__
(
img_size
,
patch_size
,
in_chans
,
class_
nu
m
,
embed_dims
,
num_heads
,
mlp_ratios
,
qkv_bias
,
qk_scale
,
drop_rate
,
num_heads
,
mlp_ratios
,
qkv_bias
,
qk_scale
,
drop_rate
,
attn_drop_rate
,
drop_path_rate
,
norm_layer
,
depths
,
attn_drop_rate
,
drop_path_rate
,
norm_layer
,
depths
,
sr_ratios
,
block_cls
)
sr_ratios
,
block_cls
)
...
@@ -568,6 +573,7 @@ class ALTGVT(PCPVT):
...
@@ -568,6 +573,7 @@ class ALTGVT(PCPVT):
cur
+=
depths
[
k
]
cur
+=
depths
[
k
]
self
.
apply
(
self
.
_init_weights
)
self
.
apply
(
self
.
_init_weights
)
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -593,7 +599,8 @@ def pcpvt_small(pretrained=False, use_ssld=False, **kwargs):
...
@@ -593,7 +599,8 @@ def pcpvt_small(pretrained=False, use_ssld=False, **kwargs):
depths
=
[
3
,
4
,
6
,
3
],
depths
=
[
3
,
4
,
6
,
3
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_small"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_small"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -609,7 +616,8 @@ def pcpvt_base(pretrained=False, use_ssld=False, **kwargs):
...
@@ -609,7 +616,8 @@ def pcpvt_base(pretrained=False, use_ssld=False, **kwargs):
depths
=
[
3
,
4
,
18
,
3
],
depths
=
[
3
,
4
,
18
,
3
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_base"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_base"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -625,7 +633,8 @@ def pcpvt_large(pretrained=False, use_ssld=False, **kwargs):
...
@@ -625,7 +633,8 @@ def pcpvt_large(pretrained=False, use_ssld=False, **kwargs):
depths
=
[
3
,
8
,
27
,
3
],
depths
=
[
3
,
8
,
27
,
3
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_large"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"pcpvt_large"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -642,7 +651,8 @@ def alt_gvt_small(pretrained=False, use_ssld=False, **kwargs):
...
@@ -642,7 +651,8 @@ def alt_gvt_small(pretrained=False, use_ssld=False, **kwargs):
wss
=
[
7
,
7
,
7
,
7
],
wss
=
[
7
,
7
,
7
,
7
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_small"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_small"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -659,7 +669,8 @@ def alt_gvt_base(pretrained=False, use_ssld=False, **kwargs):
...
@@ -659,7 +669,8 @@ def alt_gvt_base(pretrained=False, use_ssld=False, **kwargs):
wss
=
[
7
,
7
,
7
,
7
],
wss
=
[
7
,
7
,
7
,
7
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_base"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_base"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -676,5 +687,6 @@ def alt_gvt_large(pretrained=False, use_ssld=False, **kwargs):
...
@@ -676,5 +687,6 @@ def alt_gvt_large(pretrained=False, use_ssld=False, **kwargs):
wss
=
[
7
,
7
,
7
,
7
],
wss
=
[
7
,
7
,
7
,
7
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
sr_ratios
=
[
8
,
4
,
2
,
1
],
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_large"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"alt_gvt_large"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/hardnet.py
浏览文件 @
4d496f78
...
@@ -17,7 +17,6 @@ import paddle.nn as nn
...
@@ -17,7 +17,6 @@ import paddle.nn as nn
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
'HarDNet39_ds'
:
'HarDNet39_ds'
:
'https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/HarDNet39_ds_pretrained.pdparams'
,
'https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/HarDNet39_ds_pretrained.pdparams'
,
...
@@ -29,51 +28,70 @@ MODEL_URLS = {
...
@@ -29,51 +28,70 @@ MODEL_URLS = {
'https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/HarDNet85_pretrained.pdparams'
'https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/HarDNet85_pretrained.pdparams'
}
}
__all__
=
MODEL_URLS
.
keys
()
__all__
=
MODEL_URLS
.
keys
()
def
ConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
3
,
stride
=
1
,
bias_attr
=
False
):
def
ConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
3
,
stride
=
1
,
bias_attr
=
False
):
layer
=
nn
.
Sequential
(
layer
=
nn
.
Sequential
(
(
'conv'
,
nn
.
Conv2D
(
(
'conv'
,
nn
.
Conv2D
(
in_channels
,
out_channels
,
kernel_size
=
kernel_size
,
in_channels
,
stride
=
stride
,
padding
=
kernel_size
//
2
,
groups
=
1
,
bias_attr
=
bias_attr
out_channels
,
)),
kernel_size
=
kernel_size
,
(
'norm'
,
nn
.
BatchNorm2D
(
out_channels
)),
stride
=
stride
,
(
'relu'
,
nn
.
ReLU6
())
padding
=
kernel_size
//
2
,
)
groups
=
1
,
bias_attr
=
bias_attr
)),
(
'norm'
,
nn
.
BatchNorm2D
(
out_channels
)),
(
'relu'
,
nn
.
ReLU6
()))
return
layer
return
layer
def
DWConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
3
,
stride
=
1
,
bias_attr
=
False
):
def
DWConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
3
,
stride
=
1
,
bias_attr
=
False
):
layer
=
nn
.
Sequential
(
layer
=
nn
.
Sequential
(
(
'dwconv'
,
nn
.
Conv2D
(
(
'dwconv'
,
nn
.
Conv2D
(
in_channels
,
out_channels
,
kernel_size
=
kernel_size
,
in_channels
,
stride
=
stride
,
padding
=
1
,
groups
=
out_channels
,
bias_attr
=
bias_attr
out_channels
,
)),
kernel_size
=
kernel_size
,
(
'norm'
,
nn
.
BatchNorm2D
(
out_channels
))
stride
=
stride
,
)
padding
=
1
,
groups
=
out_channels
,
bias_attr
=
bias_attr
)),
(
'norm'
,
nn
.
BatchNorm2D
(
out_channels
)))
return
layer
return
layer
def
CombConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
1
,
stride
=
1
):
def
CombConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
1
,
stride
=
1
):
layer
=
nn
.
Sequential
(
layer
=
nn
.
Sequential
(
(
'layer1'
,
ConvLayer
(
in_channels
,
out_channels
,
kernel_size
=
kernel_size
)),
(
'layer1'
,
ConvLayer
(
(
'layer2'
,
DWConvLayer
(
out_channels
,
out_channels
,
stride
=
stride
))
in_channels
,
out_channels
,
kernel_size
=
kernel_size
)),
)
(
'layer2'
,
DWConvLayer
(
out_channels
,
out_channels
,
stride
=
stride
)))
return
layer
return
layer
class
HarDBlock
(
nn
.
Layer
):
class
HarDBlock
(
nn
.
Layer
):
def
__init__
(
self
,
in_channels
,
growth_rate
,
grmul
,
n_layers
,
def
__init__
(
self
,
keepBase
=
False
,
residual_out
=
False
,
dwconv
=
False
):
in_channels
,
growth_rate
,
grmul
,
n_layers
,
keepBase
=
False
,
residual_out
=
False
,
dwconv
=
False
):
super
().
__init__
()
super
().
__init__
()
self
.
keepBase
=
keepBase
self
.
keepBase
=
keepBase
self
.
links
=
[]
self
.
links
=
[]
layers_
=
[]
layers_
=
[]
self
.
out_channels
=
0
# if upsample else in_channels
self
.
out_channels
=
0
# if upsample else in_channels
for
i
in
range
(
n_layers
):
for
i
in
range
(
n_layers
):
outch
,
inch
,
link
=
self
.
get_link
(
i
+
1
,
in_channels
,
growth_rate
,
grmul
)
outch
,
inch
,
link
=
self
.
get_link
(
i
+
1
,
in_channels
,
growth_rate
,
grmul
)
self
.
links
.
append
(
link
)
self
.
links
.
append
(
link
)
if
dwconv
:
if
dwconv
:
layers_
.
append
(
CombConvLayer
(
inch
,
outch
))
layers_
.
append
(
CombConvLayer
(
inch
,
outch
))
...
@@ -92,7 +110,7 @@ class HarDBlock(nn.Layer):
...
@@ -92,7 +110,7 @@ class HarDBlock(nn.Layer):
link
=
[]
link
=
[]
for
i
in
range
(
10
):
for
i
in
range
(
10
):
dv
=
2
**
i
dv
=
2
**
i
if
layer
%
dv
==
0
:
if
layer
%
dv
==
0
:
k
=
layer
-
dv
k
=
layer
-
dv
link
.
append
(
k
)
link
.
append
(
k
)
...
@@ -126,7 +144,7 @@ class HarDBlock(nn.Layer):
...
@@ -126,7 +144,7 @@ class HarDBlock(nn.Layer):
t
=
len
(
layers_
)
t
=
len
(
layers_
)
out_
=
[]
out_
=
[]
for
i
in
range
(
t
):
for
i
in
range
(
t
):
if
(
i
==
0
and
self
.
keepBase
)
or
(
i
==
t
-
1
)
or
(
i
%
2
==
1
):
if
(
i
==
0
and
self
.
keepBase
)
or
(
i
==
t
-
1
)
or
(
i
%
2
==
1
):
out_
.
append
(
layers_
[
i
])
out_
.
append
(
layers_
[
i
])
out
=
paddle
.
concat
(
out_
,
1
)
out
=
paddle
.
concat
(
out_
,
1
)
...
@@ -134,8 +152,11 @@ class HarDBlock(nn.Layer):
...
@@ -134,8 +152,11 @@ class HarDBlock(nn.Layer):
class
HarDNet
(
nn
.
Layer
):
class
HarDNet
(
nn
.
Layer
):
def
__init__
(
self
,
depth_wise
=
False
,
arch
=
85
,
def
__init__
(
self
,
class_dim
=
1000
,
with_pool
=
True
):
depth_wise
=
False
,
arch
=
85
,
class_num
=
1000
,
with_pool
=
True
):
super
().
__init__
()
super
().
__init__
()
first_ch
=
[
32
,
64
]
first_ch
=
[
32
,
64
]
second_kernel
=
3
second_kernel
=
3
...
@@ -146,16 +167,16 @@ class HarDNet(nn.Layer):
...
@@ -146,16 +167,16 @@ class HarDNet(nn.Layer):
# HarDNet68
# HarDNet68
ch_list
=
[
128
,
256
,
320
,
640
,
1024
]
ch_list
=
[
128
,
256
,
320
,
640
,
1024
]
gr
=
[
14
,
16
,
20
,
40
,
160
]
gr
=
[
14
,
16
,
20
,
40
,
160
]
n_layers
=
[
8
,
16
,
16
,
16
,
4
]
n_layers
=
[
8
,
16
,
16
,
16
,
4
]
downSamp
=
[
1
,
0
,
1
,
1
,
0
]
downSamp
=
[
1
,
0
,
1
,
1
,
0
]
if
arch
==
85
:
if
arch
==
85
:
# HarDNet85
# HarDNet85
first_ch
=
[
48
,
96
]
first_ch
=
[
48
,
96
]
ch_list
=
[
192
,
256
,
320
,
480
,
720
,
1280
]
ch_list
=
[
192
,
256
,
320
,
480
,
720
,
1280
]
gr
=
[
24
,
24
,
28
,
36
,
48
,
256
]
gr
=
[
24
,
24
,
28
,
36
,
48
,
256
]
n_layers
=
[
8
,
16
,
16
,
16
,
16
,
4
]
n_layers
=
[
8
,
16
,
16
,
16
,
16
,
4
]
downSamp
=
[
1
,
0
,
1
,
0
,
1
,
0
]
downSamp
=
[
1
,
0
,
1
,
0
,
1
,
0
]
drop_rate
=
0.2
drop_rate
=
0.2
elif
arch
==
39
:
elif
arch
==
39
:
...
@@ -163,9 +184,9 @@ class HarDNet(nn.Layer):
...
@@ -163,9 +184,9 @@ class HarDNet(nn.Layer):
first_ch
=
[
24
,
48
]
first_ch
=
[
24
,
48
]
ch_list
=
[
96
,
320
,
640
,
1024
]
ch_list
=
[
96
,
320
,
640
,
1024
]
grmul
=
1.6
grmul
=
1.6
gr
=
[
16
,
20
,
64
,
160
]
gr
=
[
16
,
20
,
64
,
160
]
n_layers
=
[
4
,
16
,
8
,
4
]
n_layers
=
[
4
,
16
,
8
,
4
]
downSamp
=
[
1
,
1
,
1
,
0
]
downSamp
=
[
1
,
1
,
1
,
0
]
if
depth_wise
:
if
depth_wise
:
second_kernel
=
1
second_kernel
=
1
...
@@ -177,12 +198,17 @@ class HarDNet(nn.Layer):
...
@@ -177,12 +198,17 @@ class HarDNet(nn.Layer):
# First Layer: Standard Conv3x3, Stride=2
# First Layer: Standard Conv3x3, Stride=2
self
.
base
.
append
(
self
.
base
.
append
(
ConvLayer
(
in_channels
=
3
,
out_channels
=
first_ch
[
0
],
kernel_size
=
3
,
ConvLayer
(
stride
=
2
,
bias_attr
=
False
))
in_channels
=
3
,
out_channels
=
first_ch
[
0
],
kernel_size
=
3
,
stride
=
2
,
bias_attr
=
False
))
# Second Layer
# Second Layer
self
.
base
.
append
(
self
.
base
.
append
(
ConvLayer
(
first_ch
[
0
],
first_ch
[
1
],
kernel_size
=
second_kernel
))
ConvLayer
(
first_ch
[
0
],
first_ch
[
1
],
kernel_size
=
second_kernel
))
# Maxpooling or DWConv3x3 downsampling
# Maxpooling or DWConv3x3 downsampling
if
max_pool
:
if
max_pool
:
...
@@ -197,7 +223,7 @@ class HarDNet(nn.Layer):
...
@@ -197,7 +223,7 @@ class HarDNet(nn.Layer):
ch
=
blk
.
out_channels
ch
=
blk
.
out_channels
self
.
base
.
append
(
blk
)
self
.
base
.
append
(
blk
)
if
i
==
blks
-
1
and
arch
==
85
:
if
i
==
blks
-
1
and
arch
==
85
:
self
.
base
.
append
(
nn
.
Dropout
(
0.1
))
self
.
base
.
append
(
nn
.
Dropout
(
0.1
))
self
.
base
.
append
(
ConvLayer
(
ch
,
ch_list
[
i
],
kernel_size
=
1
))
self
.
base
.
append
(
ConvLayer
(
ch
,
ch_list
[
i
],
kernel_size
=
1
))
...
@@ -208,17 +234,17 @@ class HarDNet(nn.Layer):
...
@@ -208,17 +234,17 @@ class HarDNet(nn.Layer):
else
:
else
:
self
.
base
.
append
(
DWConvLayer
(
ch
,
ch
,
stride
=
2
))
self
.
base
.
append
(
DWConvLayer
(
ch
,
ch
,
stride
=
2
))
ch
=
ch_list
[
blks
-
1
]
ch
=
ch_list
[
blks
-
1
]
layers
=
[]
layers
=
[]
if
with_pool
:
if
with_pool
:
layers
.
append
(
nn
.
AdaptiveAvgPool2D
((
1
,
1
)))
layers
.
append
(
nn
.
AdaptiveAvgPool2D
((
1
,
1
)))
if
class_
di
m
>
0
:
if
class_
nu
m
>
0
:
layers
.
append
(
nn
.
Flatten
())
layers
.
append
(
nn
.
Flatten
())
layers
.
append
(
nn
.
Dropout
(
drop_rate
))
layers
.
append
(
nn
.
Dropout
(
drop_rate
))
layers
.
append
(
nn
.
Linear
(
ch
,
class_
di
m
))
layers
.
append
(
nn
.
Linear
(
ch
,
class_
nu
m
))
self
.
base
.
append
(
nn
.
Sequential
(
*
layers
))
self
.
base
.
append
(
nn
.
Sequential
(
*
layers
))
...
...
ppcls/arch/backbone/model_zoo/inception_v4.py
浏览文件 @
4d496f78
...
@@ -23,7 +23,10 @@ import math
...
@@ -23,7 +23,10 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"InceptionV4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/InceptionV4_pretrained.pdparams"
}
MODEL_URLS
=
{
"InceptionV4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/InceptionV4_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -392,7 +395,7 @@ class InceptionC(nn.Layer):
...
@@ -392,7 +395,7 @@ class InceptionC(nn.Layer):
class
InceptionV4DY
(
nn
.
Layer
):
class
InceptionV4DY
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
):
def
__init__
(
self
,
class_
nu
m
=
1000
):
super
(
InceptionV4DY
,
self
).
__init__
()
super
(
InceptionV4DY
,
self
).
__init__
()
self
.
_inception_stem
=
InceptionStem
()
self
.
_inception_stem
=
InceptionStem
()
...
@@ -420,7 +423,7 @@ class InceptionV4DY(nn.Layer):
...
@@ -420,7 +423,7 @@ class InceptionV4DY(nn.Layer):
stdv
=
1.0
/
math
.
sqrt
(
1536
*
1.0
)
stdv
=
1.0
/
math
.
sqrt
(
1536
*
1.0
)
self
.
out
=
Linear
(
self
.
out
=
Linear
(
1536
,
1536
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"final_fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"final_fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"final_fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"final_fc_offset"
))
...
@@ -466,7 +469,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -466,7 +469,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
InceptionV4
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
InceptionV4
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
InceptionV4DY
(
**
kwargs
)
model
=
InceptionV4DY
(
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"InceptionV4"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"InceptionV4"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/levit.py
浏览文件 @
4d496f78
...
@@ -27,12 +27,17 @@ from .vision_transformer import trunc_normal_, zeros_, ones_, Identity
...
@@ -27,12 +27,17 @@ from .vision_transformer import trunc_normal_, zeros_, ones_, Identity
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"LeViT_128S"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_128S_pretrained.pdparams"
,
"LeViT_128S"
:
"LeViT_128"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_128_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_128S_pretrained.pdparams"
,
"LeViT_192"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_192_pretrained.pdparams"
,
"LeViT_128"
:
"LeViT_256"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_256_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_128_pretrained.pdparams"
,
"LeViT_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_384_pretrained.pdparams"
,
"LeViT_192"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_192_pretrained.pdparams"
,
"LeViT_256"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_256_pretrained.pdparams"
,
"LeViT_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/LeViT_384_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -326,7 +331,7 @@ class LeViT(nn.Layer):
...
@@ -326,7 +331,7 @@ class LeViT(nn.Layer):
img_size
=
224
,
img_size
=
224
,
patch_size
=
16
,
patch_size
=
16
,
in_chans
=
3
,
in_chans
=
3
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
embed_dim
=
[
192
],
embed_dim
=
[
192
],
key_dim
=
[
64
],
key_dim
=
[
64
],
depth
=
[
12
],
depth
=
[
12
],
...
@@ -341,7 +346,7 @@ class LeViT(nn.Layer):
...
@@ -341,7 +346,7 @@ class LeViT(nn.Layer):
drop_path
=
0
):
drop_path
=
0
):
super
().
__init__
()
super
().
__init__
()
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
num_features
=
embed_dim
[
-
1
]
self
.
num_features
=
embed_dim
[
-
1
]
self
.
embed_dim
=
embed_dim
self
.
embed_dim
=
embed_dim
self
.
distillation
=
distillation
self
.
distillation
=
distillation
...
@@ -403,10 +408,10 @@ class LeViT(nn.Layer):
...
@@ -403,10 +408,10 @@ class LeViT(nn.Layer):
# Classifier head
# Classifier head
self
.
head
=
BN_Linear
(
embed_dim
[
-
1
],
self
.
head
=
BN_Linear
(
embed_dim
[
-
1
],
class_
dim
)
if
class_di
m
>
0
else
Identity
()
class_
num
)
if
class_nu
m
>
0
else
Identity
()
if
distillation
:
if
distillation
:
self
.
head_dist
=
BN_Linear
(
self
.
head_dist
=
BN_Linear
(
embed_dim
[
-
1
],
class_
dim
)
if
class_di
m
>
0
else
Identity
()
embed_dim
[
-
1
],
class_
num
)
if
class_nu
m
>
0
else
Identity
()
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
x
=
self
.
patch_embed
(
x
)
x
=
self
.
patch_embed
(
x
)
...
@@ -423,7 +428,7 @@ class LeViT(nn.Layer):
...
@@ -423,7 +428,7 @@ class LeViT(nn.Layer):
return
x
return
x
def
model_factory
(
C
,
D
,
X
,
N
,
drop_path
,
class_
di
m
,
distillation
):
def
model_factory
(
C
,
D
,
X
,
N
,
drop_path
,
class_
nu
m
,
distillation
):
embed_dim
=
[
int
(
x
)
for
x
in
C
.
split
(
'_'
)]
embed_dim
=
[
int
(
x
)
for
x
in
C
.
split
(
'_'
)]
num_heads
=
[
int
(
x
)
for
x
in
N
.
split
(
'_'
)]
num_heads
=
[
int
(
x
)
for
x
in
N
.
split
(
'_'
)]
depth
=
[
int
(
x
)
for
x
in
X
.
split
(
'_'
)]
depth
=
[
int
(
x
)
for
x
in
X
.
split
(
'_'
)]
...
@@ -444,7 +449,7 @@ def model_factory(C, D, X, N, drop_path, class_dim, distillation):
...
@@ -444,7 +449,7 @@ def model_factory(C, D, X, N, drop_path, class_dim, distillation):
attention_activation
=
act
,
attention_activation
=
act
,
mlp_activation
=
act
,
mlp_activation
=
act
,
hybrid_backbone
=
b16
(
embed_dim
[
0
],
activation
=
act
),
hybrid_backbone
=
b16
(
embed_dim
[
0
],
activation
=
act
),
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
drop_path
=
drop_path
,
drop_path
=
drop_path
,
distillation
=
distillation
)
distillation
=
distillation
)
...
@@ -489,6 +494,7 @@ specification = {
...
@@ -489,6 +494,7 @@ specification = {
},
},
}
}
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -502,46 +508,71 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -502,46 +508,71 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
)
)
def
LeViT_128S
(
pretrained
=
False
,
use_ssld
=
False
,
class_dim
=
1000
,
distillation
=
False
,
**
kwargs
):
def
LeViT_128S
(
pretrained
=
False
,
use_ssld
=
False
,
class_num
=
1000
,
distillation
=
False
,
**
kwargs
):
model
=
model_factory
(
model
=
model_factory
(
**
specification
[
'LeViT_128S'
],
**
specification
[
'LeViT_128S'
],
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
distillation
=
distillation
)
distillation
=
distillation
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_128S"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_128S"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
LeViT_128
(
pretrained
=
False
,
use_ssld
=
False
,
class_dim
=
1000
,
distillation
=
False
,
**
kwargs
):
def
LeViT_128
(
pretrained
=
False
,
use_ssld
=
False
,
class_num
=
1000
,
distillation
=
False
,
**
kwargs
):
model
=
model_factory
(
model
=
model_factory
(
**
specification
[
'LeViT_128'
],
**
specification
[
'LeViT_128'
],
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
distillation
=
distillation
)
distillation
=
distillation
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_128"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_128"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
LeViT_192
(
pretrained
=
False
,
use_ssld
=
False
,
class_dim
=
1000
,
distillation
=
False
,
**
kwargs
):
def
LeViT_192
(
pretrained
=
False
,
use_ssld
=
False
,
class_num
=
1000
,
distillation
=
False
,
**
kwargs
):
model
=
model_factory
(
model
=
model_factory
(
**
specification
[
'LeViT_192'
],
**
specification
[
'LeViT_192'
],
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
distillation
=
distillation
)
distillation
=
distillation
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_192"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_192"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
LeViT_256
(
pretrained
=
False
,
use_ssld
=
False
,
class_dim
=
1000
,
distillation
=
False
,
**
kwargs
):
def
LeViT_256
(
pretrained
=
False
,
use_ssld
=
False
,
class_num
=
1000
,
distillation
=
False
,
**
kwargs
):
model
=
model_factory
(
model
=
model_factory
(
**
specification
[
'LeViT_256'
],
**
specification
[
'LeViT_256'
],
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
distillation
=
distillation
)
distillation
=
distillation
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_256"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_256"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
LeViT_384
(
pretrained
=
False
,
use_ssld
=
False
,
class_dim
=
1000
,
distillation
=
False
,
**
kwargs
):
def
LeViT_384
(
pretrained
=
False
,
use_ssld
=
False
,
class_num
=
1000
,
distillation
=
False
,
**
kwargs
):
model
=
model_factory
(
model
=
model_factory
(
**
specification
[
'LeViT_384'
],
**
specification
[
'LeViT_384'
],
class_
dim
=
class_di
m
,
class_
num
=
class_nu
m
,
distillation
=
distillation
)
distillation
=
distillation
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_384"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"LeViT_384"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/mixnet.py
浏览文件 @
4d496f78
...
@@ -25,9 +25,14 @@ import paddle.nn as nn
...
@@ -25,9 +25,14 @@ import paddle.nn as nn
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"MixNet_S"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_S_pretrained.pdparams"
,
MODEL_URLS
=
{
"MixNet_M"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_M_pretrained.pdparams"
,
"MixNet_S"
:
"MixNet_L"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_L_pretrained.pdparams"
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_S_pretrained.pdparams"
,
"MixNet_M"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_M_pretrained.pdparams"
,
"MixNet_L"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MixNet_L_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -617,7 +622,7 @@ class MixNet(nn.Layer):
...
@@ -617,7 +622,7 @@ class MixNet(nn.Layer):
Number of input channels.
Number of input channels.
in_size : tuple of two ints, default (224, 224)
in_size : tuple of two ints, default (224, 224)
Spatial size of the expected input image.
Spatial size of the expected input image.
class_
di
m : int, default 1000
class_
nu
m : int, default 1000
Number of classification classes.
Number of classification classes.
"""
"""
...
@@ -632,10 +637,10 @@ class MixNet(nn.Layer):
...
@@ -632,10 +637,10 @@ class MixNet(nn.Layer):
se_factors
,
se_factors
,
in_channels
=
3
,
in_channels
=
3
,
in_size
=
(
224
,
224
),
in_size
=
(
224
,
224
),
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
MixNet
,
self
).
__init__
()
super
(
MixNet
,
self
).
__init__
()
self
.
in_size
=
in_size
self
.
in_size
=
in_size
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
features
=
nn
.
Sequential
()
self
.
features
=
nn
.
Sequential
()
self
.
features
.
add_sublayer
(
self
.
features
.
add_sublayer
(
...
@@ -687,7 +692,7 @@ class MixNet(nn.Layer):
...
@@ -687,7 +692,7 @@ class MixNet(nn.Layer):
kernel_size
=
7
,
stride
=
1
))
kernel_size
=
7
,
stride
=
1
))
self
.
output
=
nn
.
Linear
(
self
.
output
=
nn
.
Linear
(
in_features
=
in_channels
,
out_features
=
class_
di
m
)
in_features
=
in_channels
,
out_features
=
class_
nu
m
)
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
x
=
self
.
features
(
x
)
x
=
self
.
features
(
x
)
...
@@ -773,9 +778,11 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -773,9 +778,11 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
MixNet_S
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MixNet_S
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
InceptionV4DY
(
**
kwargs
)
model
=
InceptionV4DY
(
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"InceptionV4"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"InceptionV4"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -786,7 +793,8 @@ def MixNet_S(**kwargs):
...
@@ -786,7 +793,8 @@ def MixNet_S(**kwargs):
"""
"""
model
=
get_mixnet
(
model
=
get_mixnet
(
version
=
"s"
,
width_scale
=
1.0
,
model_name
=
"MixNet_S"
,
**
kwargs
)
version
=
"s"
,
width_scale
=
1.0
,
model_name
=
"MixNet_S"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_S"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_S"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -797,7 +805,8 @@ def MixNet_M(**kwargs):
...
@@ -797,7 +805,8 @@ def MixNet_M(**kwargs):
"""
"""
model
=
get_mixnet
(
model
=
get_mixnet
(
version
=
"m"
,
width_scale
=
1.0
,
model_name
=
"MixNet_M"
,
**
kwargs
)
version
=
"m"
,
width_scale
=
1.0
,
model_name
=
"MixNet_M"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_M"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_M"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -808,6 +817,6 @@ def MixNet_L(**kwargs):
...
@@ -808,6 +817,6 @@ def MixNet_L(**kwargs):
"""
"""
model
=
get_mixnet
(
model
=
get_mixnet
(
version
=
"m"
,
width_scale
=
1.3
,
model_name
=
"MixNet_L"
,
**
kwargs
)
version
=
"m"
,
width_scale
=
1.3
,
model_name
=
"MixNet_L"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_L"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MixNet_L"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/mobilenet_v2.py
浏览文件 @
4d496f78
...
@@ -28,12 +28,20 @@ import math
...
@@ -28,12 +28,20 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"MobileNetV2_x0_25"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_25_pretrained.pdparams"
,
MODEL_URLS
=
{
"MobileNetV2_x0_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_5_pretrained.pdparams"
,
"MobileNetV2_x0_25"
:
"MobileNetV2_x0_75"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_75_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_25_pretrained.pdparams"
,
"MobileNetV2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_pretrained.pdparams"
,
"MobileNetV2_x0_5"
:
"MobileNetV2_x1_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x1_5_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_5_pretrained.pdparams"
,
"MobileNetV2_x2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x2_0_pretrained.pdparams"
}
"MobileNetV2_x0_75"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x0_75_pretrained.pdparams"
,
"MobileNetV2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_pretrained.pdparams"
,
"MobileNetV2_x1_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x1_5_pretrained.pdparams"
,
"MobileNetV2_x2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_x2_0_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -155,10 +163,10 @@ class InvresiBlocks(nn.Layer):
...
@@ -155,10 +163,10 @@ class InvresiBlocks(nn.Layer):
class
MobileNet
(
nn
.
Layer
):
class
MobileNet
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
,
scale
=
1.0
,
prefix_name
=
""
):
def
__init__
(
self
,
class_
nu
m
=
1000
,
scale
=
1.0
,
prefix_name
=
""
):
super
(
MobileNet
,
self
).
__init__
()
super
(
MobileNet
,
self
).
__init__
()
self
.
scale
=
scale
self
.
scale
=
scale
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
bottleneck_params_list
=
[
bottleneck_params_list
=
[
(
1
,
16
,
1
,
1
),
(
1
,
16
,
1
,
1
),
...
@@ -209,7 +217,7 @@ class MobileNet(nn.Layer):
...
@@ -209,7 +217,7 @@ class MobileNet(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
out_c
,
self
.
out_c
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
name
=
prefix_name
+
"fc10_weights"
),
weight_attr
=
ParamAttr
(
name
=
prefix_name
+
"fc10_weights"
),
bias_attr
=
ParamAttr
(
name
=
prefix_name
+
"fc10_offset"
))
bias_attr
=
ParamAttr
(
name
=
prefix_name
+
"fc10_offset"
))
...
@@ -222,8 +230,8 @@ class MobileNet(nn.Layer):
...
@@ -222,8 +230,8 @@ class MobileNet(nn.Layer):
y
=
paddle
.
flatten
(
y
,
start_axis
=
1
,
stop_axis
=-
1
)
y
=
paddle
.
flatten
(
y
,
start_axis
=
1
,
stop_axis
=-
1
)
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -235,39 +243,45 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -235,39 +243,45 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
MobileNetV2_x0_25
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2_x0_25
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
0.25
,
**
kwargs
)
model
=
MobileNet
(
scale
=
0.25
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_25"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_25"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
MobileNetV2_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
0.5
,
**
kwargs
)
model
=
MobileNet
(
scale
=
0.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
MobileNetV2_x0_75
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2_x0_75
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
0.75
,
**
kwargs
)
model
=
MobileNet
(
scale
=
0.75
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_75"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x0_75"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
MobileNetV2
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
1.0
,
**
kwargs
)
model
=
MobileNet
(
scale
=
1.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
MobileNetV2_x1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2_x1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
1.5
,
**
kwargs
)
model
=
MobileNet
(
scale
=
1.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x1_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x1_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
MobileNetV2_x2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
MobileNetV2_x2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
MobileNet
(
scale
=
2.0
,
**
kwargs
)
model
=
MobileNet
(
scale
=
2.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x2_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"MobileNetV2_x2_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/rednet.py
浏览文件 @
4d496f78
...
@@ -19,7 +19,6 @@ from paddle.vision.models import resnet
...
@@ -19,7 +19,6 @@ from paddle.vision.models import resnet
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"RedNet26"
:
"RedNet26"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RedNet26_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RedNet26_pretrained.pdparams"
,
...
@@ -33,7 +32,6 @@ MODEL_URLS = {
...
@@ -33,7 +32,6 @@ MODEL_URLS = {
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RedNet152_pretrained.pdparams"
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RedNet152_pretrained.pdparams"
}
}
__all__
=
MODEL_URLS
.
keys
()
__all__
=
MODEL_URLS
.
keys
()
...
@@ -51,50 +49,53 @@ class Involution(nn.Layer):
...
@@ -51,50 +49,53 @@ class Involution(nn.Layer):
in_channels
=
channels
,
in_channels
=
channels
,
out_channels
=
channels
//
reduction_ratio
,
out_channels
=
channels
//
reduction_ratio
,
kernel_size
=
1
,
kernel_size
=
1
,
bias_attr
=
False
bias_attr
=
False
)),
)),
(
'bn'
,
nn
.
BatchNorm2D
(
channels
//
reduction_ratio
)),
(
'bn'
,
nn
.
BatchNorm2D
(
channels
//
reduction_ratio
)),
(
'activate'
,
nn
.
ReLU
())
(
'activate'
,
nn
.
ReLU
()))
)
self
.
conv2
=
nn
.
Sequential
((
'conv'
,
nn
.
Conv2D
(
self
.
conv2
=
nn
.
Sequential
(
in_channels
=
channels
//
reduction_ratio
,
(
'conv'
,
nn
.
Conv2D
(
out_channels
=
kernel_size
**
2
*
self
.
groups
,
in_channels
=
channels
//
reduction_ratio
,
kernel_size
=
1
,
out_channels
=
kernel_size
**
2
*
self
.
groups
,
stride
=
1
)))
kernel_size
=
1
,
stride
=
1
))
)
if
stride
>
1
:
if
stride
>
1
:
self
.
avgpool
=
nn
.
AvgPool2D
(
stride
,
stride
)
self
.
avgpool
=
nn
.
AvgPool2D
(
stride
,
stride
)
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
weight
=
self
.
conv2
(
self
.
conv1
(
x
if
self
.
stride
==
1
else
self
.
avgpool
(
x
)))
weight
=
self
.
conv2
(
self
.
conv1
(
x
if
self
.
stride
==
1
else
self
.
avgpool
(
x
)))
b
,
c
,
h
,
w
=
weight
.
shape
b
,
c
,
h
,
w
=
weight
.
shape
weight
=
weight
.
reshape
((
b
,
self
.
groups
,
self
.
kernel_size
**
2
,
h
,
w
)).
unsqueeze
(
2
)
weight
=
weight
.
reshape
(
(
b
,
self
.
groups
,
self
.
kernel_size
**
2
,
h
,
w
)).
unsqueeze
(
2
)
out
=
nn
.
functional
.
unfold
(
x
,
self
.
kernel_size
,
self
.
stride
,
(
self
.
kernel_size
-
1
)
//
2
,
1
)
out
=
nn
.
functional
.
unfold
(
x
,
self
.
kernel_size
,
self
.
stride
,
out
=
out
.
reshape
((
b
,
self
.
groups
,
self
.
group_channels
,
self
.
kernel_size
**
2
,
h
,
w
))
(
self
.
kernel_size
-
1
)
//
2
,
1
)
out
=
out
.
reshape
(
(
b
,
self
.
groups
,
self
.
group_channels
,
self
.
kernel_size
**
2
,
h
,
w
))
out
=
(
weight
*
out
).
sum
(
axis
=
3
).
reshape
((
b
,
self
.
channels
,
h
,
w
))
out
=
(
weight
*
out
).
sum
(
axis
=
3
).
reshape
((
b
,
self
.
channels
,
h
,
w
))
return
out
return
out
class
BottleneckBlock
(
resnet
.
BottleneckBlock
):
class
BottleneckBlock
(
resnet
.
BottleneckBlock
):
def
__init__
(
self
,
inplanes
,
planes
,
stride
=
1
,
downsample
=
None
,
def
__init__
(
self
,
groups
=
1
,
base_width
=
64
,
dilation
=
1
,
norm_layer
=
None
):
inplanes
,
super
(
BottleneckBlock
,
self
).
__init__
(
planes
,
inplanes
,
planes
,
stride
,
downsample
,
stride
=
1
,
groups
,
base_width
,
dilation
,
norm_layer
downsample
=
None
,
)
groups
=
1
,
base_width
=
64
,
dilation
=
1
,
norm_layer
=
None
):
super
(
BottleneckBlock
,
self
).
__init__
(
inplanes
,
planes
,
stride
,
downsample
,
groups
,
base_width
,
dilation
,
norm_layer
)
width
=
int
(
planes
*
(
base_width
/
64.
))
*
groups
width
=
int
(
planes
*
(
base_width
/
64.
))
*
groups
self
.
conv2
=
Involution
(
width
,
7
,
stride
)
self
.
conv2
=
Involution
(
width
,
7
,
stride
)
class
RedNet
(
resnet
.
ResNet
):
class
RedNet
(
resnet
.
ResNet
):
def
__init__
(
self
,
block
,
depth
,
class_
di
m
=
1000
,
with_pool
=
True
):
def
__init__
(
self
,
block
,
depth
,
class_
nu
m
=
1000
,
with_pool
=
True
):
super
(
RedNet
,
self
).
__init__
(
super
(
RedNet
,
self
).
__init__
(
block
=
block
,
depth
=
50
,
block
=
block
,
depth
=
50
,
num_classes
=
class_num
,
with_pool
=
with_pool
)
num_classes
=
class_dim
,
with_pool
=
with_pool
)
layer_cfg
=
{
layer_cfg
=
{
26
:
[
1
,
2
,
4
,
1
],
26
:
[
1
,
2
,
4
,
1
],
38
:
[
2
,
3
,
5
,
2
],
38
:
[
2
,
3
,
5
,
2
],
...
@@ -108,7 +109,7 @@ class RedNet(resnet.ResNet):
...
@@ -108,7 +109,7 @@ class RedNet(resnet.ResNet):
self
.
bn1
=
None
self
.
bn1
=
None
self
.
relu
=
None
self
.
relu
=
None
self
.
inplanes
=
64
self
.
inplanes
=
64
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
stem
=
nn
.
Sequential
(
self
.
stem
=
nn
.
Sequential
(
nn
.
Sequential
(
nn
.
Sequential
(
(
'conv'
,
nn
.
Conv2D
(
(
'conv'
,
nn
.
Conv2D
(
...
@@ -117,11 +118,9 @@ class RedNet(resnet.ResNet):
...
@@ -117,11 +118,9 @@ class RedNet(resnet.ResNet):
kernel_size
=
3
,
kernel_size
=
3
,
stride
=
2
,
stride
=
2
,
padding
=
1
,
padding
=
1
,
bias_attr
=
False
bias_attr
=
False
)),
)),
(
'bn'
,
nn
.
BatchNorm2D
(
self
.
inplanes
//
2
)),
(
'bn'
,
nn
.
BatchNorm2D
(
self
.
inplanes
//
2
)),
(
'activate'
,
nn
.
ReLU
())
(
'activate'
,
nn
.
ReLU
())),
),
Involution
(
self
.
inplanes
//
2
,
3
,
1
),
Involution
(
self
.
inplanes
//
2
,
3
,
1
),
nn
.
BatchNorm2D
(
self
.
inplanes
//
2
),
nn
.
BatchNorm2D
(
self
.
inplanes
//
2
),
nn
.
ReLU
(),
nn
.
ReLU
(),
...
@@ -132,12 +131,8 @@ class RedNet(resnet.ResNet):
...
@@ -132,12 +131,8 @@ class RedNet(resnet.ResNet):
kernel_size
=
3
,
kernel_size
=
3
,
stride
=
1
,
stride
=
1
,
padding
=
1
,
padding
=
1
,
bias_attr
=
False
bias_attr
=
False
)),
(
'bn'
,
nn
.
BatchNorm2D
(
self
.
inplanes
)),
)),
(
'activate'
,
nn
.
ReLU
())))
(
'bn'
,
nn
.
BatchNorm2D
(
self
.
inplanes
)),
(
'activate'
,
nn
.
ReLU
())
)
)
self
.
layer1
=
self
.
_make_layer
(
block
,
64
,
layers
[
0
])
self
.
layer1
=
self
.
_make_layer
(
block
,
64
,
layers
[
0
])
self
.
layer2
=
self
.
_make_layer
(
block
,
128
,
layers
[
1
],
stride
=
2
)
self
.
layer2
=
self
.
_make_layer
(
block
,
128
,
layers
[
1
],
stride
=
2
)
...
@@ -156,7 +151,7 @@ class RedNet(resnet.ResNet):
...
@@ -156,7 +151,7 @@ class RedNet(resnet.ResNet):
if
self
.
with_pool
:
if
self
.
with_pool
:
x
=
self
.
avgpool
(
x
)
x
=
self
.
avgpool
(
x
)
if
self
.
class_
di
m
>
0
:
if
self
.
class_
nu
m
>
0
:
x
=
paddle
.
flatten
(
x
,
1
)
x
=
paddle
.
flatten
(
x
,
1
)
x
=
self
.
fc
(
x
)
x
=
self
.
fc
(
x
)
...
...
ppcls/arch/backbone/model_zoo/regnet.py
浏览文件 @
4d496f78
...
@@ -28,13 +28,20 @@ import math
...
@@ -28,13 +28,20 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"RegNetX_200MF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_200MF_pretrained.pdparams"
,
MODEL_URLS
=
{
"RegNetX_4GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_4GF_pretrained.pdparams"
,
"RegNetX_200MF"
:
"RegNetX_32GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_32GF_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_200MF_pretrained.pdparams"
,
"RegNetY_200MF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_200MF_pretrained.pdparams"
,
"RegNetX_4GF"
:
"RegNetY_4GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_4GF_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_4GF_pretrained.pdparams"
,
"RegNetY_32GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_32GF_pretrained.pdparams"
,
"RegNetX_32GF"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetX_32GF_pretrained.pdparams"
,
"RegNetY_200MF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_200MF_pretrained.pdparams"
,
"RegNetY_4GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_4GF_pretrained.pdparams"
,
"RegNetY_32GF"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RegNetY_32GF_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -235,7 +242,7 @@ class RegNet(nn.Layer):
...
@@ -235,7 +242,7 @@ class RegNet(nn.Layer):
bot_mul
,
bot_mul
,
q
=
8
,
q
=
8
,
se_on
=
False
,
se_on
=
False
,
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
RegNet
,
self
).
__init__
()
super
(
RegNet
,
self
).
__init__
()
# Generate RegNet ws per block
# Generate RegNet ws per block
...
@@ -301,7 +308,7 @@ class RegNet(nn.Layer):
...
@@ -301,7 +308,7 @@ class RegNet(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_0.w_0"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_0.w_0"
),
bias_attr
=
ParamAttr
(
name
=
"fc_0.b_0"
))
bias_attr
=
ParamAttr
(
name
=
"fc_0.b_0"
))
...
@@ -315,7 +322,7 @@ class RegNet(nn.Layer):
...
@@ -315,7 +322,7 @@ class RegNet(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -327,12 +334,20 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -327,12 +334,20 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
RegNetX_200MF
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
RegNetX_200MF
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
RegNet
(
model
=
RegNet
(
w_a
=
36.44
,
w_0
=
24
,
w_m
=
2.49
,
d
=
13
,
group_w
=
8
,
bot_mul
=
1.0
,
q
=
8
,
**
kwargs
)
w_a
=
36.44
,
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_200MF"
],
use_ssld
=
use_ssld
)
w_0
=
24
,
w_m
=
2.49
,
d
=
13
,
group_w
=
8
,
bot_mul
=
1.0
,
q
=
8
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_200MF"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -346,7 +361,8 @@ def RegNetX_4GF(pretrained=False, use_ssld=False, **kwargs):
...
@@ -346,7 +361,8 @@ def RegNetX_4GF(pretrained=False, use_ssld=False, **kwargs):
bot_mul
=
1.0
,
bot_mul
=
1.0
,
q
=
8
,
q
=
8
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_4GF"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_4GF"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -360,7 +376,8 @@ def RegNetX_32GF(pretrained=False, use_ssld=False, **kwargs):
...
@@ -360,7 +376,8 @@ def RegNetX_32GF(pretrained=False, use_ssld=False, **kwargs):
bot_mul
=
1.0
,
bot_mul
=
1.0
,
q
=
8
,
q
=
8
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -375,7 +392,8 @@ def RegNetY_200MF(pretrained=False, use_ssld=False, **kwargs):
...
@@ -375,7 +392,8 @@ def RegNetY_200MF(pretrained=False, use_ssld=False, **kwargs):
q
=
8
,
q
=
8
,
se_on
=
True
,
se_on
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -390,7 +408,8 @@ def RegNetY_4GF(pretrained=False, use_ssld=False, **kwargs):
...
@@ -390,7 +408,8 @@ def RegNetY_4GF(pretrained=False, use_ssld=False, **kwargs):
q
=
8
,
q
=
8
,
se_on
=
True
,
se_on
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -405,5 +424,6 @@ def RegNetY_32GF(pretrained=False, use_ssld=False, **kwargs):
...
@@ -405,5 +424,6 @@ def RegNetY_32GF(pretrained=False, use_ssld=False, **kwargs):
q
=
8
,
q
=
8
,
se_on
=
True
,
se_on
=
True
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RegNetX_32GF"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/repvgg.py
浏览文件 @
4d496f78
...
@@ -4,24 +4,37 @@ import numpy as np
...
@@ -4,24 +4,37 @@ import numpy as np
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"RepVGG_A0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A0_pretrained.pdparams"
,
MODEL_URLS
=
{
"RepVGG_A1"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A1_pretrained.pdparams"
,
"RepVGG_A0"
:
"RepVGG_A2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A2_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A0_pretrained.pdparams"
,
"RepVGG_B0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B0_pretrained.pdparams"
,
"RepVGG_A1"
:
"RepVGG_B1"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A1_pretrained.pdparams"
,
"RepVGG_B2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2_pretrained.pdparams"
,
"RepVGG_A2"
:
"RepVGG_B3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_A2_pretrained.pdparams"
,
"RepVGG_B1g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1g2_pretrained.pdparams"
,
"RepVGG_B0"
:
"RepVGG_B1g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1g4_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B0_pretrained.pdparams"
,
"RepVGG_B2g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2g2_pretrained.pdparams"
,
"RepVGG_B1"
:
"RepVGG_B2g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2g4_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1_pretrained.pdparams"
,
"RepVGG_B3g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3g2_pretrained.pdparams"
,
"RepVGG_B2"
:
"RepVGG_B3g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3g4_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2_pretrained.pdparams"
,
}
"RepVGG_B3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3_pretrained.pdparams"
,
"RepVGG_B1g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1g2_pretrained.pdparams"
,
"RepVGG_B1g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B1g4_pretrained.pdparams"
,
"RepVGG_B2g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2g2_pretrained.pdparams"
,
"RepVGG_B2g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B2g4_pretrained.pdparams"
,
"RepVGG_B3g2"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3g2_pretrained.pdparams"
,
"RepVGG_B3g4"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/RepVGG_B3g4_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
optional_groupwise_layers
=
[
2
,
4
,
6
,
8
,
10
,
12
,
14
,
16
,
18
,
20
,
22
,
24
,
26
]
optional_groupwise_layers
=
[
2
,
4
,
6
,
8
,
10
,
12
,
14
,
16
,
18
,
20
,
22
,
24
,
26
]
g2_map
=
{
l
:
2
for
l
in
optional_groupwise_layers
}
g2_map
=
{
l
:
2
for
l
in
optional_groupwise_layers
}
g4_map
=
{
l
:
4
for
l
in
optional_groupwise_layers
}
g4_map
=
{
l
:
4
for
l
in
optional_groupwise_layers
}
...
@@ -174,7 +187,7 @@ class RepVGG(nn.Layer):
...
@@ -174,7 +187,7 @@ class RepVGG(nn.Layer):
num_blocks
,
num_blocks
,
width_multiplier
=
None
,
width_multiplier
=
None
,
override_groups_map
=
None
,
override_groups_map
=
None
,
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
RepVGG
,
self
).
__init__
()
super
(
RepVGG
,
self
).
__init__
()
assert
len
(
width_multiplier
)
==
4
assert
len
(
width_multiplier
)
==
4
...
@@ -200,7 +213,7 @@ class RepVGG(nn.Layer):
...
@@ -200,7 +213,7 @@ class RepVGG(nn.Layer):
self
.
stage4
=
self
.
_make_stage
(
self
.
stage4
=
self
.
_make_stage
(
int
(
512
*
width_multiplier
[
3
]),
num_blocks
[
3
],
stride
=
2
)
int
(
512
*
width_multiplier
[
3
]),
num_blocks
[
3
],
stride
=
2
)
self
.
gap
=
nn
.
AdaptiveAvgPool2D
(
output_size
=
1
)
self
.
gap
=
nn
.
AdaptiveAvgPool2D
(
output_size
=
1
)
self
.
linear
=
nn
.
Linear
(
int
(
512
*
width_multiplier
[
3
]),
class_
di
m
)
self
.
linear
=
nn
.
Linear
(
int
(
512
*
width_multiplier
[
3
]),
class_
nu
m
)
def
_make_stage
(
self
,
planes
,
num_blocks
,
stride
):
def
_make_stage
(
self
,
planes
,
num_blocks
,
stride
):
strides
=
[
stride
]
+
[
1
]
*
(
num_blocks
-
1
)
strides
=
[
stride
]
+
[
1
]
*
(
num_blocks
-
1
)
...
@@ -248,7 +261,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -248,7 +261,7 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
RepVGG_A0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
RepVGG_A0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
RepVGG
(
model
=
RepVGG
(
...
@@ -256,7 +269,8 @@ def RepVGG_A0(pretrained=False, use_ssld=False, **kwargs):
...
@@ -256,7 +269,8 @@ def RepVGG_A0(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
0.75
,
0.75
,
0.75
,
2.5
],
width_multiplier
=
[
0.75
,
0.75
,
0.75
,
2.5
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A0"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -266,7 +280,8 @@ def RepVGG_A1(pretrained=False, use_ssld=False, **kwargs):
...
@@ -266,7 +280,8 @@ def RepVGG_A1(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
1
,
1
,
1
,
2.5
],
width_multiplier
=
[
1
,
1
,
1
,
2.5
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A1"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A1"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -276,7 +291,8 @@ def RepVGG_A2(pretrained=False, use_ssld=False, **kwargs):
...
@@ -276,7 +291,8 @@ def RepVGG_A2(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
1.5
,
1.5
,
1.5
,
2.75
],
width_multiplier
=
[
1.5
,
1.5
,
1.5
,
2.75
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_A2"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -286,7 +302,8 @@ def RepVGG_B0(pretrained=False, use_ssld=False, **kwargs):
...
@@ -286,7 +302,8 @@ def RepVGG_B0(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
1
,
1
,
1
,
2.5
],
width_multiplier
=
[
1
,
1
,
1
,
2.5
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B0"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -296,7 +313,8 @@ def RepVGG_B1(pretrained=False, use_ssld=False, **kwargs):
...
@@ -296,7 +313,8 @@ def RepVGG_B1(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2
,
2
,
2
,
4
],
width_multiplier
=
[
2
,
2
,
2
,
4
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -306,7 +324,8 @@ def RepVGG_B1g2(pretrained=False, use_ssld=False, **kwargs):
...
@@ -306,7 +324,8 @@ def RepVGG_B1g2(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2
,
2
,
2
,
4
],
width_multiplier
=
[
2
,
2
,
2
,
4
],
override_groups_map
=
g2_map
,
override_groups_map
=
g2_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1g2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1g2"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -316,7 +335,8 @@ def RepVGG_B1g4(pretrained=False, use_ssld=False, **kwargs):
...
@@ -316,7 +335,8 @@ def RepVGG_B1g4(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2
,
2
,
2
,
4
],
width_multiplier
=
[
2
,
2
,
2
,
4
],
override_groups_map
=
g4_map
,
override_groups_map
=
g4_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1g4"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B1g4"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -326,7 +346,8 @@ def RepVGG_B2(pretrained=False, use_ssld=False, **kwargs):
...
@@ -326,7 +346,8 @@ def RepVGG_B2(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -336,7 +357,8 @@ def RepVGG_B2g2(pretrained=False, use_ssld=False, **kwargs):
...
@@ -336,7 +357,8 @@ def RepVGG_B2g2(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
override_groups_map
=
g2_map
,
override_groups_map
=
g2_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2g2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2g2"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -346,7 +368,8 @@ def RepVGG_B2g4(pretrained=False, use_ssld=False, **kwargs):
...
@@ -346,7 +368,8 @@ def RepVGG_B2g4(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
width_multiplier
=
[
2.5
,
2.5
,
2.5
,
5
],
override_groups_map
=
g4_map
,
override_groups_map
=
g4_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2g4"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B2g4"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -356,7 +379,8 @@ def RepVGG_B3(pretrained=False, use_ssld=False, **kwargs):
...
@@ -356,7 +379,8 @@ def RepVGG_B3(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
3
,
3
,
3
,
5
],
width_multiplier
=
[
3
,
3
,
3
,
5
],
override_groups_map
=
None
,
override_groups_map
=
None
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -366,7 +390,8 @@ def RepVGG_B3g2(pretrained=False, use_ssld=False, **kwargs):
...
@@ -366,7 +390,8 @@ def RepVGG_B3g2(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
3
,
3
,
3
,
5
],
width_multiplier
=
[
3
,
3
,
3
,
5
],
override_groups_map
=
g2_map
,
override_groups_map
=
g2_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3g2"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3g2"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -376,5 +401,6 @@ def RepVGG_B3g4(pretrained=False, use_ssld=False, **kwargs):
...
@@ -376,5 +401,6 @@ def RepVGG_B3g4(pretrained=False, use_ssld=False, **kwargs):
width_multiplier
=
[
3
,
3
,
3
,
5
],
width_multiplier
=
[
3
,
3
,
3
,
5
],
override_groups_map
=
g4_map
,
override_groups_map
=
g4_map
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3g4"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"RepVGG_B3g4"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/res2net.py
浏览文件 @
4d496f78
...
@@ -29,9 +29,12 @@ import math
...
@@ -29,9 +29,12 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"Res2Net50_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_26w_4s_pretrained.pdparams"
,
MODEL_URLS
=
{
"Res2Net50_14w_8s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_14w_8s_pretrained.pdparams"
,
"Res2Net50_26w_4s"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_26w_4s_pretrained.pdparams"
,
"Res2Net50_14w_8s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_14w_8s_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -151,7 +154,7 @@ class BottleneckBlock(nn.Layer):
...
@@ -151,7 +154,7 @@ class BottleneckBlock(nn.Layer):
class
Res2Net
(
nn
.
Layer
):
class
Res2Net
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
scales
=
4
,
width
=
26
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
50
,
scales
=
4
,
width
=
26
,
class_
nu
m
=
1000
):
super
(
Res2Net
,
self
).
__init__
()
super
(
Res2Net
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -218,7 +221,7 @@ class Res2Net(nn.Layer):
...
@@ -218,7 +221,7 @@ class Res2Net(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -245,15 +248,17 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -245,15 +248,17 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
Res2Net50_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Res2Net50_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Res2Net
(
layers
=
50
,
scales
=
4
,
width
=
26
,
**
kwargs
)
model
=
Res2Net
(
layers
=
50
,
scales
=
4
,
width
=
26
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_26w_4s"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_26w_4s"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Res2Net50_14w_8s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Res2Net50_14w_8s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Res2Net
(
layers
=
50
,
scales
=
8
,
width
=
14
,
**
kwargs
)
model
=
Res2Net
(
layers
=
50
,
scales
=
8
,
width
=
14
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_14w_8s"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
return
model
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_14w_8s"
],
use_ssld
=
use_ssld
)
\ No newline at end of file
return
model
ppcls/arch/backbone/model_zoo/res2net_vd.py
浏览文件 @
4d496f78
...
@@ -29,10 +29,14 @@ import math
...
@@ -29,10 +29,14 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"Res2Net50_vd_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_vd_26w_4s_pretrained.pdparams"
,
MODEL_URLS
=
{
"Res2Net101_vd_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net101_vd_26w_4s_pretrained.pdparams"
,
"Res2Net50_vd_26w_4s"
:
"Res2Net200_vd_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net200_vd_26w_4s_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net50_vd_26w_4s_pretrained.pdparams"
,
}
"Res2Net101_vd_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net101_vd_26w_4s_pretrained.pdparams"
,
"Res2Net200_vd_26w_4s"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Res2Net200_vd_26w_4s_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -159,7 +163,7 @@ class BottleneckBlock(nn.Layer):
...
@@ -159,7 +163,7 @@ class BottleneckBlock(nn.Layer):
class
Res2Net_vd
(
nn
.
Layer
):
class
Res2Net_vd
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
scales
=
4
,
width
=
26
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
50
,
scales
=
4
,
width
=
26
,
class_
nu
m
=
1000
):
super
(
Res2Net_vd
,
self
).
__init__
()
super
(
Res2Net_vd
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -240,7 +244,7 @@ class Res2Net_vd(nn.Layer):
...
@@ -240,7 +244,7 @@ class Res2Net_vd(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -273,17 +277,29 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -273,17 +277,29 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
Res2Net50_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Res2Net50_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Res2Net_vd
(
layers
=
50
,
scales
=
4
,
width
=
26
,
**
kwargs
)
model
=
Res2Net_vd
(
layers
=
50
,
scales
=
4
,
width
=
26
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_vd_26w_4s"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net50_vd_26w_4s"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Res2Net101_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Res2Net101_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Res2Net_vd
(
layers
=
101
,
scales
=
4
,
width
=
26
,
**
kwargs
)
model
=
Res2Net_vd
(
layers
=
101
,
scales
=
4
,
width
=
26
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net101_vd_26w_4s"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net101_vd_26w_4s"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Res2Net200_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Res2Net200_vd_26w_4s
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Res2Net_vd
(
layers
=
200
,
scales
=
4
,
width
=
26
,
**
kwargs
)
model
=
Res2Net_vd
(
layers
=
200
,
scales
=
4
,
width
=
26
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Res2Net200_vd_26w_4s"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
return
model
pretrained
,
\ No newline at end of file
model
,
MODEL_URLS
[
"Res2Net200_vd_26w_4s"
],
use_ssld
=
use_ssld
)
return
model
ppcls/arch/backbone/model_zoo/resnest.py
浏览文件 @
4d496f78
...
@@ -29,10 +29,14 @@ from paddle.regularizer import L2Decay
...
@@ -29,10 +29,14 @@ from paddle.regularizer import L2Decay
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"ResNeSt50_fast_1s1x64d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt50_fast_1s1x64d_pretrained.pdparams"
,
MODEL_URLS
=
{
"ResNeSt50"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt50_pretrained.pdparams"
,
"ResNeSt50_fast_1s1x64d"
:
"ResNeSt101"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt101_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt50_fast_1s1x64d_pretrained.pdparams"
,
}
"ResNeSt50"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt50_pretrained.pdparams"
,
"ResNeSt101"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeSt101_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -453,7 +457,7 @@ class ResNeSt(nn.Layer):
...
@@ -453,7 +457,7 @@ class ResNeSt(nn.Layer):
avd_first
=
False
,
avd_first
=
False
,
final_drop
=
0.0
,
final_drop
=
0.0
,
last_gamma
=
False
,
last_gamma
=
False
,
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
ResNeSt
,
self
).
__init__
()
super
(
ResNeSt
,
self
).
__init__
()
self
.
cardinality
=
groups
self
.
cardinality
=
groups
...
@@ -643,7 +647,7 @@ class ResNeSt(nn.Layer):
...
@@ -643,7 +647,7 @@ class ResNeSt(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
out_channels
,
self
.
out_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
nn
.
initializer
.
Uniform
(
-
stdv
,
stdv
),
initializer
=
nn
.
initializer
.
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
name
=
"fc_weights"
),
...
@@ -663,7 +667,7 @@ class ResNeSt(nn.Layer):
...
@@ -663,7 +667,7 @@ class ResNeSt(nn.Layer):
x
=
self
.
out
(
x
)
x
=
self
.
out
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -675,8 +679,8 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -675,8 +679,8 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
ResNeSt50_fast_1s1x64d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeSt50_fast_1s1x64d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeSt
(
model
=
ResNeSt
(
layers
=
[
3
,
4
,
6
,
3
],
layers
=
[
3
,
4
,
6
,
3
],
...
@@ -690,7 +694,11 @@ def ResNeSt50_fast_1s1x64d(pretrained=False, use_ssld=False, **kwargs):
...
@@ -690,7 +694,11 @@ def ResNeSt50_fast_1s1x64d(pretrained=False, use_ssld=False, **kwargs):
avd_first
=
True
,
avd_first
=
True
,
final_drop
=
0.0
,
final_drop
=
0.0
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt50_fast_1s1x64d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt50_fast_1s1x64d"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -707,7 +715,8 @@ def ResNeSt50(pretrained=False, use_ssld=False, **kwargs):
...
@@ -707,7 +715,8 @@ def ResNeSt50(pretrained=False, use_ssld=False, **kwargs):
avd_first
=
False
,
avd_first
=
False
,
final_drop
=
0.0
,
final_drop
=
0.0
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt50"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt50"
],
use_ssld
=
use_ssld
)
return
model
return
model
...
@@ -724,5 +733,6 @@ def ResNeSt101(pretrained=False, use_ssld=False, **kwargs):
...
@@ -724,5 +733,6 @@ def ResNeSt101(pretrained=False, use_ssld=False, **kwargs):
avd_first
=
False
,
avd_first
=
False
,
final_drop
=
0.0
,
final_drop
=
0.0
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt101"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeSt101"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/resnet_vc.py
浏览文件 @
4d496f78
...
@@ -30,8 +30,9 @@ import math
...
@@ -30,8 +30,9 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ResNet50_vc"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vc_pretrained.pdparams"
,
"ResNet50_vc"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vc_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -177,7 +178,7 @@ class BasicBlock(nn.Layer):
...
@@ -177,7 +178,7 @@ class BasicBlock(nn.Layer):
class
ResNet_vc
(
nn
.
Layer
):
class
ResNet_vc
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
50
,
class_
nu
m
=
1000
):
super
(
ResNet_vc
,
self
).
__init__
()
super
(
ResNet_vc
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -270,7 +271,7 @@ class ResNet_vc(nn.Layer):
...
@@ -270,7 +271,7 @@ class ResNet_vc(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_0.w_0"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_0.w_0"
),
bias_attr
=
ParamAttr
(
name
=
"fc_0.b_0"
))
bias_attr
=
ParamAttr
(
name
=
"fc_0.b_0"
))
...
@@ -287,7 +288,7 @@ class ResNet_vc(nn.Layer):
...
@@ -287,7 +288,7 @@ class ResNet_vc(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -300,9 +301,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -300,9 +301,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
ResNet50_vc
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNet50_vc
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNet_vc
(
layers
=
50
,
**
kwargs
)
model
=
ResNet_vc
(
layers
=
50
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNet50_vc"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNet50_vc"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/resnext.py
浏览文件 @
4d496f78
...
@@ -30,13 +30,19 @@ import math
...
@@ -30,13 +30,19 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ResNeXt50_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_32x4d_pretrained.pdparams"
,
"ResNeXt50_32x4d"
:
"ResNeXt50_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_32x4d_pretrained.pdparams"
,
"ResNeXt101_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x4d_pretrained.pdparams"
,
"ResNeXt50_64x4d"
:
"ResNeXt101_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_64x4d_pretrained.pdparams"
,
"ResNeXt152_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_32x4d_pretrained.pdparams"
,
"ResNeXt101_32x4d"
:
"ResNeXt152_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x4d_pretrained.pdparams"
,
}
"ResNeXt101_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_64x4d_pretrained.pdparams"
,
"ResNeXt152_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_32x4d_pretrained.pdparams"
,
"ResNeXt152_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_64x4d_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -143,7 +149,12 @@ class BottleneckBlock(nn.Layer):
...
@@ -143,7 +149,12 @@ class BottleneckBlock(nn.Layer):
class
ResNeXt
(
nn
.
Layer
):
class
ResNeXt
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_dim
=
1000
,
cardinality
=
32
,
input_image_channel
=
3
,
data_format
=
"NCHW"
):
def
__init__
(
self
,
layers
=
50
,
class_num
=
1000
,
cardinality
=
32
,
input_image_channel
=
3
,
data_format
=
"NCHW"
):
super
(
ResNeXt
,
self
).
__init__
()
super
(
ResNeXt
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -176,7 +187,8 @@ class ResNeXt(nn.Layer):
...
@@ -176,7 +187,8 @@ class ResNeXt(nn.Layer):
act
=
'relu'
,
act
=
'relu'
,
name
=
"res_conv1"
,
name
=
"res_conv1"
,
data_format
=
self
.
data_format
)
data_format
=
self
.
data_format
)
self
.
pool2d_max
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
,
padding
=
1
,
data_format
=
self
.
data_format
)
self
.
pool2d_max
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
,
padding
=
1
,
data_format
=
self
.
data_format
)
self
.
block_list
=
[]
self
.
block_list
=
[]
for
block
in
range
(
len
(
depth
)):
for
block
in
range
(
len
(
depth
)):
...
@@ -211,7 +223,7 @@ class ResNeXt(nn.Layer):
...
@@ -211,7 +223,7 @@ class ResNeXt(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -230,7 +242,7 @@ class ResNeXt(nn.Layer):
...
@@ -230,7 +242,7 @@ class ResNeXt(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -246,35 +258,41 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -246,35 +258,41 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
ResNeXt50_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt50_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt50_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt50_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt101_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt101_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt152_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt152_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt152_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt152_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/resnext101_wsl.py
浏览文件 @
4d496f78
...
@@ -9,17 +9,19 @@ from paddle.nn.initializer import Uniform
...
@@ -9,17 +9,19 @@ from paddle.nn.initializer import Uniform
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ResNeXt101_32x8d_wsl"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x8d_wsl_pretrained.pdparams"
,
"ResNeXt101_32x8d_wsl"
:
"ResNeXt101_32x16d_wsl"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x816_wsl_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x8d_wsl_pretrained.pdparams"
,
"ResNeXt101_32x32d_wsl"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x32d_wsl_pretrained.pdparams"
,
"ResNeXt101_32x16d_wsl"
:
"ResNeXt101_32x48d_wsl"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x48d_wsl_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x816_wsl_pretrained.pdparams"
,
"ResNeXt101_32x32d_wsl"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x32d_wsl_pretrained.pdparams"
,
"ResNeXt101_32x48d_wsl"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_32x48d_wsl_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
class
ConvBNLayer
(
nn
.
Layer
):
class
ConvBNLayer
(
nn
.
Layer
):
def
__init__
(
self
,
def
__init__
(
self
,
input_channels
,
input_channels
,
...
@@ -128,10 +130,10 @@ class BottleneckBlock(nn.Layer):
...
@@ -128,10 +130,10 @@ class BottleneckBlock(nn.Layer):
class
ResNeXt101WSL
(
nn
.
Layer
):
class
ResNeXt101WSL
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
101
,
cardinality
=
32
,
width
=
48
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
101
,
cardinality
=
32
,
width
=
48
,
class_
nu
m
=
1000
):
super
(
ResNeXt101WSL
,
self
).
__init__
()
super
(
ResNeXt101WSL
,
self
).
__init__
()
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
layers
=
layers
self
.
layers
=
layers
self
.
cardinality
=
cardinality
self
.
cardinality
=
cardinality
...
@@ -384,7 +386,7 @@ class ResNeXt101WSL(nn.Layer):
...
@@ -384,7 +386,7 @@ class ResNeXt101WSL(nn.Layer):
self
.
_avg_pool
=
AdaptiveAvgPool2D
(
1
)
self
.
_avg_pool
=
AdaptiveAvgPool2D
(
1
)
self
.
_out
=
Linear
(
self
.
_out
=
Linear
(
num_filters
[
3
]
//
(
width
//
8
),
num_filters
[
3
]
//
(
width
//
8
),
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
name
=
"fc.weight"
),
weight_attr
=
ParamAttr
(
name
=
"fc.weight"
),
bias_attr
=
ParamAttr
(
name
=
"fc.bias"
))
bias_attr
=
ParamAttr
(
name
=
"fc.bias"
))
...
@@ -434,7 +436,7 @@ class ResNeXt101WSL(nn.Layer):
...
@@ -434,7 +436,7 @@ class ResNeXt101WSL(nn.Layer):
x
=
self
.
_out
(
x
)
x
=
self
.
_out
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -450,23 +452,39 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -450,23 +452,39 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
ResNeXt101_32x8d_wsl
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt101_32x8d_wsl
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
8
,
**
kwargs
)
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
8
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x8d_wsl"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x8d_wsl"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_32x16d_wsl
(
**
args
):
def
ResNeXt101_32x16d_wsl
(
**
args
):
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
16
,
**
kwargs
)
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
16
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x16d_ws"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x16d_ws"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_32x32d_wsl
(
**
args
):
def
ResNeXt101_32x32d_wsl
(
**
args
):
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
32
,
**
kwargs
)
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x32d_wsl"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x32d_wsl"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_32x48d_wsl
(
**
args
):
def
ResNeXt101_32x48d_wsl
(
**
args
):
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
48
,
**
kwargs
)
model
=
ResNeXt101WSL
(
cardinality
=
32
,
width
=
48
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x48d_wsl"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_32x48d_wsl"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/resnext_vd.py
浏览文件 @
4d496f78
...
@@ -30,16 +30,23 @@ import math
...
@@ -30,16 +30,23 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ResNeXt50_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_vd_32x4d_pretrained.pdparams"
,
"ResNeXt50_vd_32x4d"
:
"ResNeXt50_vd_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_vd_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_vd_32x4d_pretrained.pdparams"
,
"ResNeXt101_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_vd_32x4d_pretrained.pdparams"
,
"ResNeXt50_vd_64x4d"
:
"ResNeXt101_vd_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_vd_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt50_vd_64x4d_pretrained.pdparams"
,
"ResNeXt152_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_vd_32x4d_pretrained.pdparams"
,
"ResNeXt101_vd_32x4d"
:
"ResNeXt152_vd_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_vd_64x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_vd_32x4d_pretrained.pdparams"
,
}
"ResNeXt101_vd_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt101_vd_64x4d_pretrained.pdparams"
,
"ResNeXt152_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_vd_32x4d_pretrained.pdparams"
,
"ResNeXt152_vd_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNeXt152_vd_64x4d_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
class
ConvBNLayer
(
nn
.
Layer
):
class
ConvBNLayer
(
nn
.
Layer
):
def
__init__
(
def
__init__
(
self
,
self
,
...
@@ -145,7 +152,7 @@ class BottleneckBlock(nn.Layer):
...
@@ -145,7 +152,7 @@ class BottleneckBlock(nn.Layer):
class
ResNeXt
(
nn
.
Layer
):
class
ResNeXt
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_
di
m
=
1000
,
cardinality
=
32
):
def
__init__
(
self
,
layers
=
50
,
class_
nu
m
=
1000
,
cardinality
=
32
):
super
(
ResNeXt
,
self
).
__init__
()
super
(
ResNeXt
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -225,7 +232,7 @@ class ResNeXt(nn.Layer):
...
@@ -225,7 +232,7 @@ class ResNeXt(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -242,6 +249,7 @@ class ResNeXt(nn.Layer):
...
@@ -242,6 +249,7 @@ class ResNeXt(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -257,35 +265,53 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -257,35 +265,53 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
ResNeXt50_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt50_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_vd_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_vd_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt50_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt50_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_vd_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt50_vd_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt101_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_vd_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_vd_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt101_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt101_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_vd_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt101_vd_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt152_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt152_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_vd_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_vd_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ResNeXt152_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ResNeXt152_vd_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_vd_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ResNeXt152_vd_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/rexnet.py
浏览文件 @
4d496f78
...
@@ -25,12 +25,17 @@ from math import ceil
...
@@ -25,12 +25,17 @@ from math import ceil
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ReXNet_1_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_0_pretrained.pdparams"
,
"ReXNet_1_0"
:
"ReXNet_1_3"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_3_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_0_pretrained.pdparams"
,
"ReXNet_1_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_5_32x4d_pretrained.pdparams"
,
"ReXNet_1_3"
:
"ReXNet_2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_2_0_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_3_pretrained.pdparams"
,
"ReXNet_3_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_3_0_pretrained.pdparams"
,
"ReXNet_1_5"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_1_5_32x4d_pretrained.pdparams"
,
"ReXNet_2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_2_0_pretrained.pdparams"
,
"ReXNet_3_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ReXNet_3_0_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -154,7 +159,7 @@ class ReXNetV1(nn.Layer):
...
@@ -154,7 +159,7 @@ class ReXNetV1(nn.Layer):
final_ch
=
180
,
final_ch
=
180
,
width_mult
=
1.0
,
width_mult
=
1.0
,
depth_mult
=
1.0
,
depth_mult
=
1.0
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
use_se
=
True
,
use_se
=
True
,
se_ratio
=
12
,
se_ratio
=
12
,
dropout_ratio
=
0.2
,
dropout_ratio
=
0.2
,
...
@@ -220,7 +225,7 @@ class ReXNetV1(nn.Layer):
...
@@ -220,7 +225,7 @@ class ReXNetV1(nn.Layer):
self
.
output
=
nn
.
Sequential
(
self
.
output
=
nn
.
Sequential
(
nn
.
Dropout
(
dropout_ratio
),
nn
.
Dropout
(
dropout_ratio
),
nn
.
Conv2D
(
nn
.
Conv2D
(
pen_channels
,
class_
di
m
,
1
,
bias_attr
=
True
))
pen_channels
,
class_
nu
m
,
1
,
bias_attr
=
True
))
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
x
=
self
.
features
(
x
)
x
=
self
.
features
(
x
)
...
@@ -239,33 +244,38 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -239,33 +244,38 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
ReXNet_1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ReXNet_1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ReXNetV1
(
width_mult
=
1.0
,
**
kwargs
)
model
=
ReXNetV1
(
width_mult
=
1.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ReXNet_1_3
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ReXNet_1_3
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ReXNetV1
(
width_mult
=
1.3
,
**
kwargs
)
model
=
ReXNetV1
(
width_mult
=
1.3
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_3"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_3"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ReXNet_1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ReXNet_1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ReXNetV1
(
width_mult
=
1.5
,
**
kwargs
)
model
=
ReXNetV1
(
width_mult
=
1.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_1_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ReXNet_2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ReXNet_2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ReXNetV1
(
width_mult
=
2.0
,
**
kwargs
)
model
=
ReXNetV1
(
width_mult
=
2.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_2_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_2_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ReXNet_3_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ReXNet_3_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ReXNetV1
(
width_mult
=
3.0
,
**
kwargs
)
model
=
ReXNetV1
(
width_mult
=
3.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_3_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
return
model
pretrained
,
model
,
MODEL_URLS
[
"ReXNet_3_0"
],
use_ssld
=
use_ssld
)
\ No newline at end of file
return
model
ppcls/arch/backbone/model_zoo/se_resnet_vd.py
浏览文件 @
4d496f78
...
@@ -29,11 +29,13 @@ import math
...
@@ -29,11 +29,13 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"SE_ResNet18_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet18_vd_pretrained.pdparams"
,
"SE_ResNet18_vd"
:
"SE_ResNet34_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet34_vd_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet18_vd_pretrained.pdparams"
,
"SE_ResNet50_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet50_vd_pretrained.pdparams"
,
"SE_ResNet34_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet34_vd_pretrained.pdparams"
,
}
"SE_ResNet50_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNet50_vd_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -240,7 +242,7 @@ class SELayer(nn.Layer):
...
@@ -240,7 +242,7 @@ class SELayer(nn.Layer):
class
SE_ResNet_vd
(
nn
.
Layer
):
class
SE_ResNet_vd
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_
di
m
=
1000
):
def
__init__
(
self
,
layers
=
50
,
class_
nu
m
=
1000
):
super
(
SE_ResNet_vd
,
self
).
__init__
()
super
(
SE_ResNet_vd
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -336,7 +338,7 @@ class SE_ResNet_vd(nn.Layer):
...
@@ -336,7 +338,7 @@ class SE_ResNet_vd(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
...
@@ -353,7 +355,7 @@ class SE_ResNet_vd(nn.Layer):
...
@@ -353,7 +355,7 @@ class SE_ResNet_vd(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -365,21 +367,24 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -365,21 +367,24 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
SE_ResNet18_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNet18_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SE_ResNet_vd
(
layers
=
18
,
**
kwargs
)
model
=
SE_ResNet_vd
(
layers
=
18
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet18_vd"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet18_vd"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SE_ResNet34_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNet34_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SE_ResNet_vd
(
layers
=
34
,
**
kwargs
)
model
=
SE_ResNet_vd
(
layers
=
34
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet34_vd"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet34_vd"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SE_ResNet50_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNet50_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SE_ResNet_vd
(
layers
=
50
,
**
kwargs
)
model
=
SE_ResNet_vd
(
layers
=
50
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet50_vd"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNet50_vd"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/se_resnext.py
浏览文件 @
4d496f78
...
@@ -30,11 +30,13 @@ import math
...
@@ -30,11 +30,13 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"SE_ResNeXt50_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_32x4d_pretrained.pdparams"
,
"SE_ResNeXt50_32x4d"
:
"SE_ResNeXt101_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt101_32x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_32x4d_pretrained.pdparams"
,
"SE_ResNeXt152_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt152_64x4d_pretrained.pdparams"
,
"SE_ResNeXt101_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt101_32x4d_pretrained.pdparams"
,
}
"SE_ResNeXt152_64x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt152_64x4d_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -148,7 +150,12 @@ class BottleneckBlock(nn.Layer):
...
@@ -148,7 +150,12 @@ class BottleneckBlock(nn.Layer):
class
SELayer
(
nn
.
Layer
):
class
SELayer
(
nn
.
Layer
):
def
__init__
(
self
,
num_channels
,
num_filters
,
reduction_ratio
,
name
=
None
,
data_format
=
"NCHW"
):
def
__init__
(
self
,
num_channels
,
num_filters
,
reduction_ratio
,
name
=
None
,
data_format
=
"NCHW"
):
super
(
SELayer
,
self
).
__init__
()
super
(
SELayer
,
self
).
__init__
()
self
.
data_format
=
data_format
self
.
data_format
=
data_format
...
@@ -193,7 +200,12 @@ class SELayer(nn.Layer):
...
@@ -193,7 +200,12 @@ class SELayer(nn.Layer):
class
ResNeXt
(
nn
.
Layer
):
class
ResNeXt
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_dim
=
1000
,
cardinality
=
32
,
input_image_channel
=
3
,
data_format
=
"NCHW"
):
def
__init__
(
self
,
layers
=
50
,
class_num
=
1000
,
cardinality
=
32
,
input_image_channel
=
3
,
data_format
=
"NCHW"
):
super
(
ResNeXt
,
self
).
__init__
()
super
(
ResNeXt
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -254,7 +266,8 @@ class ResNeXt(nn.Layer):
...
@@ -254,7 +266,8 @@ class ResNeXt(nn.Layer):
name
=
"conv3"
,
name
=
"conv3"
,
data_format
=
self
.
data_format
)
data_format
=
self
.
data_format
)
self
.
pool2d_max
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
,
padding
=
1
,
data_format
=
self
.
data_format
)
self
.
pool2d_max
=
MaxPool2D
(
kernel_size
=
3
,
stride
=
2
,
padding
=
1
,
data_format
=
self
.
data_format
)
self
.
block_list
=
[]
self
.
block_list
=
[]
n
=
1
if
layers
==
50
or
layers
==
101
else
3
n
=
1
if
layers
==
50
or
layers
==
101
else
3
...
@@ -286,13 +299,13 @@ class ResNeXt(nn.Layer):
...
@@ -286,13 +299,13 @@ class ResNeXt(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
def
forward
(
self
,
inputs
):
def
forward
(
self
,
inputs
):
with
paddle
.
static
.
amp
.
fp16_guard
():
with
paddle
.
static
.
amp
.
fp16_guard
():
if
self
.
data_format
==
"NHWC"
:
if
self
.
data_format
==
"NHWC"
:
inputs
=
paddle
.
tensor
.
transpose
(
inputs
,
[
0
,
2
,
3
,
1
])
inputs
=
paddle
.
tensor
.
transpose
(
inputs
,
[
0
,
2
,
3
,
1
])
inputs
.
stop_gradient
=
True
inputs
.
stop_gradient
=
True
...
@@ -310,7 +323,7 @@ class ResNeXt(nn.Layer):
...
@@ -310,7 +323,7 @@ class ResNeXt(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -322,21 +335,30 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -322,21 +335,30 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
SE_ResNeXt50_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNeXt50_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt50_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt50_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SE_ResNeXt101_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNeXt101_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt101_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt101_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SE_ResNeXt152_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNeXt152_64x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt152_64x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt152_64x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/se_resnext_vd.py
浏览文件 @
4d496f78
...
@@ -30,11 +30,13 @@ import math
...
@@ -30,11 +30,13 @@ import math
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"SE_ResNeXt50_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_vd_32x4d_pretrained.pdparams"
,
"SE_ResNeXt50_vd_32x4d"
:
"SE_ResNeXt50_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_vd_32x4d_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_vd_32x4d_pretrained.pdparams"
,
"SENet154_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SENet154_vd_pretrained.pdparams"
,
"SE_ResNeXt50_vd_32x4d"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SE_ResNeXt50_vd_32x4d_pretrained.pdparams"
,
}
"SENet154_vd"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SENet154_vd_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -184,7 +186,7 @@ class SELayer(nn.Layer):
...
@@ -184,7 +186,7 @@ class SELayer(nn.Layer):
class
ResNeXt
(
nn
.
Layer
):
class
ResNeXt
(
nn
.
Layer
):
def
__init__
(
self
,
layers
=
50
,
class_
di
m
=
1000
,
cardinality
=
32
):
def
__init__
(
self
,
layers
=
50
,
class_
nu
m
=
1000
,
cardinality
=
32
):
super
(
ResNeXt
,
self
).
__init__
()
super
(
ResNeXt
,
self
).
__init__
()
self
.
layers
=
layers
self
.
layers
=
layers
...
@@ -261,7 +263,7 @@ class ResNeXt(nn.Layer):
...
@@ -261,7 +263,7 @@ class ResNeXt(nn.Layer):
self
.
out
=
Linear
(
self
.
out
=
Linear
(
self
.
pool2d_avg_channels
,
self
.
pool2d_avg_channels
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
initializer
=
Uniform
(
-
stdv
,
stdv
),
name
=
"fc6_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc6_offset"
))
...
@@ -278,7 +280,7 @@ class ResNeXt(nn.Layer):
...
@@ -278,7 +280,7 @@ class ResNeXt(nn.Layer):
y
=
self
.
out
(
y
)
y
=
self
.
out
(
y
)
return
y
return
y
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -290,21 +292,30 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -290,21 +292,30 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
SE_ResNeXt50_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNeXt50_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
50
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt50_vd_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt50_vd_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SE_ResNeXt101_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SE_ResNeXt101_vd_32x4d
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
101
,
cardinality
=
32
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt101_vd_32x4d"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SE_ResNeXt101_vd_32x4d"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SENet154_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SENet154_vd
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
model
=
ResNeXt
(
layers
=
152
,
cardinality
=
64
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SENet154_vd"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SENet154_vd"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/shufflenet_v2.py
浏览文件 @
4d496f78
...
@@ -25,14 +25,21 @@ from paddle.nn.functional import swish
...
@@ -25,14 +25,21 @@ from paddle.nn.functional import swish
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"ShuffleNetV2_x0_25"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_25_pretrained.pdparams"
,
"ShuffleNetV2_x0_25"
:
"ShuffleNetV2_x0_33"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_33_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_25_pretrained.pdparams"
,
"ShuffleNetV2_x0_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_5_pretrained.pdparams"
,
"ShuffleNetV2_x0_33"
:
"ShuffleNetV2_x1_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x1_0_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_33_pretrained.pdparams"
,
"ShuffleNetV2_x1_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x1_5_pretrained.pdparams"
,
"ShuffleNetV2_x0_5"
:
"ShuffleNetV2_x2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x2_0_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x0_5_pretrained.pdparams"
,
"ShuffleNetV2_swish"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_swish_pretrained.pdparams"
"ShuffleNetV2_x1_0"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x1_0_pretrained.pdparams"
,
"ShuffleNetV2_x1_5"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x1_5_pretrained.pdparams"
,
"ShuffleNetV2_x2_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_x2_0_pretrained.pdparams"
,
"ShuffleNetV2_swish"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ShuffleNetV2_swish_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -207,10 +214,10 @@ class InvertedResidualDS(Layer):
...
@@ -207,10 +214,10 @@ class InvertedResidualDS(Layer):
class
ShuffleNet
(
Layer
):
class
ShuffleNet
(
Layer
):
def
__init__
(
self
,
class_
di
m
=
1000
,
scale
=
1.0
,
act
=
"relu"
):
def
__init__
(
self
,
class_
nu
m
=
1000
,
scale
=
1.0
,
act
=
"relu"
):
super
(
ShuffleNet
,
self
).
__init__
()
super
(
ShuffleNet
,
self
).
__init__
()
self
.
scale
=
scale
self
.
scale
=
scale
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
stage_repeats
=
[
4
,
8
,
4
]
stage_repeats
=
[
4
,
8
,
4
]
if
scale
==
0.25
:
if
scale
==
0.25
:
...
@@ -277,7 +284,7 @@ class ShuffleNet(Layer):
...
@@ -277,7 +284,7 @@ class ShuffleNet(Layer):
# 5. fc
# 5. fc
self
.
_fc
=
Linear
(
self
.
_fc
=
Linear
(
stage_out_channels
[
-
1
],
stage_out_channels
[
-
1
],
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
name
=
'fc6_weights'
),
weight_attr
=
ParamAttr
(
name
=
'fc6_weights'
),
bias_attr
=
ParamAttr
(
name
=
'fc6_offset'
))
bias_attr
=
ParamAttr
(
name
=
'fc6_offset'
))
...
@@ -308,41 +315,48 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -308,41 +315,48 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
ShuffleNetV2_x0_25
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x0_25
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
0.25
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
0.25
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_25"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_25"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_x0_33
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x0_33
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
0.33
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
0.33
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_33"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_33"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x0_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
0.5
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
0.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x0_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_x1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
1.0
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
1.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x1_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x1_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_x1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x1_5
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
1.5
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
1.5
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x1_5"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x1_5"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_x2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_x2_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
2.0
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
2.0
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x2_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_x2_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
ShuffleNetV2_swish
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
ShuffleNetV2_swish
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
ShuffleNet
(
scale
=
1.0
,
act
=
"swish"
,
**
kwargs
)
model
=
ShuffleNet
(
scale
=
1.0
,
act
=
"swish"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_swish"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"ShuffleNetV2_swish"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/squeezenet.py
浏览文件 @
4d496f78
...
@@ -22,9 +22,11 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
...
@@ -22,9 +22,11 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"SqueezeNet1_0"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SqueezeNet1_0_pretrained.pdparams"
,
"SqueezeNet1_0"
:
"SqueezeNet1_1"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SqueezeNet1_1_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SqueezeNet1_0_pretrained.pdparams"
,
}
"SqueezeNet1_1"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SqueezeNet1_1_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -78,7 +80,7 @@ class MakeFire(nn.Layer):
...
@@ -78,7 +80,7 @@ class MakeFire(nn.Layer):
class
SqueezeNet
(
nn
.
Layer
):
class
SqueezeNet
(
nn
.
Layer
):
def
__init__
(
self
,
version
,
class_
di
m
=
1000
):
def
__init__
(
self
,
version
,
class_
nu
m
=
1000
):
super
(
SqueezeNet
,
self
).
__init__
()
super
(
SqueezeNet
,
self
).
__init__
()
self
.
version
=
version
self
.
version
=
version
...
@@ -125,7 +127,7 @@ class SqueezeNet(nn.Layer):
...
@@ -125,7 +127,7 @@ class SqueezeNet(nn.Layer):
self
.
_drop
=
Dropout
(
p
=
0.5
,
mode
=
"downscale_in_infer"
)
self
.
_drop
=
Dropout
(
p
=
0.5
,
mode
=
"downscale_in_infer"
)
self
.
_conv9
=
Conv2D
(
self
.
_conv9
=
Conv2D
(
512
,
512
,
class_
di
m
,
class_
nu
m
,
1
,
1
,
weight_attr
=
ParamAttr
(
name
=
"conv10_weights"
),
weight_attr
=
ParamAttr
(
name
=
"conv10_weights"
),
bias_attr
=
ParamAttr
(
name
=
"conv10_offset"
))
bias_attr
=
ParamAttr
(
name
=
"conv10_offset"
))
...
@@ -164,6 +166,7 @@ class SqueezeNet(nn.Layer):
...
@@ -164,6 +166,7 @@ class SqueezeNet(nn.Layer):
x
=
paddle
.
squeeze
(
x
,
axis
=
[
2
,
3
])
x
=
paddle
.
squeeze
(
x
,
axis
=
[
2
,
3
])
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -175,15 +178,17 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -175,15 +178,17 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
SqueezeNet1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SqueezeNet1_0
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SqueezeNet
(
version
=
"1.0"
,
**
kwargs
)
model
=
SqueezeNet
(
version
=
"1.0"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SqueezeNet1_0"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SqueezeNet1_0"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SqueezeNet1_1
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SqueezeNet1_1
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SqueezeNet
(
version
=
"1.1"
,
**
kwargs
)
model
=
SqueezeNet
(
version
=
"1.1"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SqueezeNet1_1"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SqueezeNet1_1"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/swin_transformer.py
浏览文件 @
4d496f78
...
@@ -24,13 +24,19 @@ from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPat
...
@@ -24,13 +24,19 @@ from .vision_transformer import trunc_normal_, zeros_, ones_, to_2tuple, DropPat
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"SwinTransformer_tiny_patch4_window7_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_tiny_patch4_window7_224"
:
"SwinTransformer_small_patch4_window7_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_small_patch4_window7_224_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_tiny_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_base_patch4_window7_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_small_patch4_window7_224"
:
"SwinTransformer_base_patch4_window12_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_small_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_large_patch4_window7_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_base_patch4_window7_224"
:
"SwinTransformer_large_patch4_window12_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window12_384_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window7_224_pretrained.pdparams"
,
}
"SwinTransformer_base_patch4_window12_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_base_patch4_window12_384_pretrained.pdparams"
,
"SwinTransformer_large_patch4_window7_224"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window7_224_pretrained.pdparams"
,
"SwinTransformer_large_patch4_window12_384"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/SwinTransformer_large_patch4_window12_384_pretrained.pdparams"
,
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -611,7 +617,7 @@ class SwinTransformer(nn.Layer):
...
@@ -611,7 +617,7 @@ class SwinTransformer(nn.Layer):
img_size
=
224
,
img_size
=
224
,
patch_size
=
4
,
patch_size
=
4
,
in_chans
=
3
,
in_chans
=
3
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
embed_dim
=
96
,
embed_dim
=
96
,
depths
=
[
2
,
2
,
6
,
2
],
depths
=
[
2
,
2
,
6
,
2
],
num_heads
=
[
3
,
6
,
12
,
24
],
num_heads
=
[
3
,
6
,
12
,
24
],
...
@@ -629,7 +635,7 @@ class SwinTransformer(nn.Layer):
...
@@ -629,7 +635,7 @@ class SwinTransformer(nn.Layer):
**
kwargs
):
**
kwargs
):
super
(
SwinTransformer
,
self
).
__init__
()
super
(
SwinTransformer
,
self
).
__init__
()
self
.
num_classes
=
num_classes
=
class_
di
m
self
.
num_classes
=
num_classes
=
class_
nu
m
self
.
num_layers
=
len
(
depths
)
self
.
num_layers
=
len
(
depths
)
self
.
embed_dim
=
embed_dim
self
.
embed_dim
=
embed_dim
self
.
ape
=
ape
self
.
ape
=
ape
...
@@ -729,7 +735,7 @@ class SwinTransformer(nn.Layer):
...
@@ -729,7 +735,7 @@ class SwinTransformer(nn.Layer):
flops
+=
self
.
num_features
*
self
.
num_classes
flops
+=
self
.
num_features
*
self
.
num_classes
return
flops
return
flops
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -743,7 +749,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -743,7 +749,9 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
)
)
def
SwinTransformer_tiny_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_tiny_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
embed_dim
=
96
,
embed_dim
=
96
,
depths
=
[
2
,
2
,
6
,
2
],
depths
=
[
2
,
2
,
6
,
2
],
...
@@ -751,22 +759,34 @@ def SwinTransformer_tiny_patch4_window7_224(pretrained=False, use_ssld=False, **
...
@@ -751,22 +759,34 @@ def SwinTransformer_tiny_patch4_window7_224(pretrained=False, use_ssld=False, **
window_size
=
7
,
window_size
=
7
,
drop_path_rate
=
0.2
,
drop_path_rate
=
0.2
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_tiny_patch4_window7_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_tiny_patch4_window7_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SwinTransformer_small_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_small_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
embed_dim
=
96
,
embed_dim
=
96
,
depths
=
[
2
,
2
,
18
,
2
],
depths
=
[
2
,
2
,
18
,
2
],
num_heads
=
[
3
,
6
,
12
,
24
],
num_heads
=
[
3
,
6
,
12
,
24
],
window_size
=
7
,
window_size
=
7
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_small_patch4_window7_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_small_patch4_window7_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SwinTransformer_base_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_base_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
embed_dim
=
128
,
embed_dim
=
128
,
depths
=
[
2
,
2
,
18
,
2
],
depths
=
[
2
,
2
,
18
,
2
],
...
@@ -774,11 +794,17 @@ def SwinTransformer_base_patch4_window7_224(pretrained=False, use_ssld=False, **
...
@@ -774,11 +794,17 @@ def SwinTransformer_base_patch4_window7_224(pretrained=False, use_ssld=False, **
window_size
=
7
,
window_size
=
7
,
drop_path_rate
=
0.5
,
drop_path_rate
=
0.5
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_base_patch4_window7_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_base_patch4_window7_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SwinTransformer_base_patch4_window12_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_base_patch4_window12_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
img_size
=
384
,
img_size
=
384
,
embed_dim
=
128
,
embed_dim
=
128
,
...
@@ -787,22 +813,34 @@ def SwinTransformer_base_patch4_window12_384(pretrained=False, use_ssld=False, *
...
@@ -787,22 +813,34 @@ def SwinTransformer_base_patch4_window12_384(pretrained=False, use_ssld=False, *
window_size
=
12
,
window_size
=
12
,
drop_path_rate
=
0.5
,
# NOTE: do not appear in offical code
drop_path_rate
=
0.5
,
# NOTE: do not appear in offical code
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_base_patch4_window12_384"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_base_patch4_window12_384"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SwinTransformer_large_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_large_patch4_window7_224
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
embed_dim
=
192
,
embed_dim
=
192
,
depths
=
[
2
,
2
,
18
,
2
],
depths
=
[
2
,
2
,
18
,
2
],
num_heads
=
[
6
,
12
,
24
,
48
],
num_heads
=
[
6
,
12
,
24
,
48
],
window_size
=
7
,
window_size
=
7
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_large_patch4_window7_224"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_large_patch4_window7_224"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
SwinTransformer_large_patch4_window12_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
SwinTransformer_large_patch4_window12_384
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
SwinTransformer
(
model
=
SwinTransformer
(
img_size
=
384
,
img_size
=
384
,
embed_dim
=
192
,
embed_dim
=
192
,
...
@@ -810,5 +848,9 @@ def SwinTransformer_large_patch4_window12_384(pretrained=False, use_ssld=False,
...
@@ -810,5 +848,9 @@ def SwinTransformer_large_patch4_window12_384(pretrained=False, use_ssld=False,
num_heads
=
[
6
,
12
,
24
,
48
],
num_heads
=
[
6
,
12
,
24
,
48
],
window_size
=
12
,
window_size
=
12
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_large_patch4_window12_384"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"SwinTransformer_large_patch4_window12_384"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/tnt.py
浏览文件 @
4d496f78
...
@@ -23,16 +23,13 @@ from paddle.nn.initializer import TruncatedNormal, Constant
...
@@ -23,16 +23,13 @@ from paddle.nn.initializer import TruncatedNormal, Constant
from
ppcls.arch.backbone.base.theseus_layer
import
Identity
from
ppcls.arch.backbone.base.theseus_layer
import
Identity
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"TNT_small"
:
"TNT_small"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/TNT_small_pretrained.pdparams"
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/TNT_small_pretrained.pdparams"
}
}
__all__
=
MODEL_URLS
.
keys
()
__all__
=
MODEL_URLS
.
keys
()
trunc_normal_
=
TruncatedNormal
(
std
=
.
02
)
trunc_normal_
=
TruncatedNormal
(
std
=
.
02
)
zeros_
=
Constant
(
value
=
0.
)
zeros_
=
Constant
(
value
=
0.
)
ones_
=
Constant
(
value
=
1.
)
ones_
=
Constant
(
value
=
1.
)
...
@@ -66,8 +63,12 @@ class DropPath(nn.Layer):
...
@@ -66,8 +63,12 @@ class DropPath(nn.Layer):
class
Mlp
(
nn
.
Layer
):
class
Mlp
(
nn
.
Layer
):
def
__init__
(
self
,
in_features
,
hidden_features
=
None
,
def
__init__
(
self
,
out_features
=
None
,
act_layer
=
nn
.
GELU
,
drop
=
0.
):
in_features
,
hidden_features
=
None
,
out_features
=
None
,
act_layer
=
nn
.
GELU
,
drop
=
0.
):
super
().
__init__
()
super
().
__init__
()
out_features
=
out_features
or
in_features
out_features
=
out_features
or
in_features
hidden_features
=
hidden_features
or
in_features
hidden_features
=
hidden_features
or
in_features
...
@@ -86,14 +87,19 @@ class Mlp(nn.Layer):
...
@@ -86,14 +87,19 @@ class Mlp(nn.Layer):
class
Attention
(
nn
.
Layer
):
class
Attention
(
nn
.
Layer
):
def
__init__
(
self
,
dim
,
hidden_dim
,
num_heads
=
8
,
def
__init__
(
self
,
qkv_bias
=
False
,
attn_drop
=
0.
,
proj_drop
=
0.
):
dim
,
hidden_dim
,
num_heads
=
8
,
qkv_bias
=
False
,
attn_drop
=
0.
,
proj_drop
=
0.
):
super
().
__init__
()
super
().
__init__
()
self
.
hidden_dim
=
hidden_dim
self
.
hidden_dim
=
hidden_dim
self
.
num_heads
=
num_heads
self
.
num_heads
=
num_heads
head_dim
=
hidden_dim
//
num_heads
head_dim
=
hidden_dim
//
num_heads
self
.
head_dim
=
head_dim
self
.
head_dim
=
head_dim
self
.
scale
=
head_dim
**
-
0.5
self
.
scale
=
head_dim
**
-
0.5
self
.
qk
=
nn
.
Linear
(
dim
,
hidden_dim
*
2
,
bias_attr
=
qkv_bias
)
self
.
qk
=
nn
.
Linear
(
dim
,
hidden_dim
*
2
,
bias_attr
=
qkv_bias
)
self
.
v
=
nn
.
Linear
(
dim
,
dim
,
bias_attr
=
qkv_bias
)
self
.
v
=
nn
.
Linear
(
dim
,
dim
,
bias_attr
=
qkv_bias
)
...
@@ -103,73 +109,103 @@ class Attention(nn.Layer):
...
@@ -103,73 +109,103 @@ class Attention(nn.Layer):
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
B
,
N
,
C
=
x
.
shape
B
,
N
,
C
=
x
.
shape
qk
=
self
.
qk
(
x
).
reshape
((
B
,
N
,
2
,
self
.
num_heads
,
self
.
head_dim
)).
transpose
((
2
,
0
,
3
,
1
,
4
))
qk
=
self
.
qk
(
x
).
reshape
(
(
B
,
N
,
2
,
self
.
num_heads
,
self
.
head_dim
)).
transpose
(
(
2
,
0
,
3
,
1
,
4
))
q
,
k
=
qk
[
0
],
qk
[
1
]
q
,
k
=
qk
[
0
],
qk
[
1
]
v
=
self
.
v
(
x
).
reshape
((
B
,
N
,
self
.
num_heads
,
-
1
)).
transpose
((
0
,
2
,
1
,
3
))
v
=
self
.
v
(
x
).
reshape
((
B
,
N
,
self
.
num_heads
,
-
1
)).
transpose
(
(
0
,
2
,
1
,
3
))
attn
=
(
q
@
k
.
transpose
((
0
,
1
,
3
,
2
)))
*
self
.
scale
attn
=
(
q
@
k
.
transpose
((
0
,
1
,
3
,
2
)))
*
self
.
scale
attn
=
nn
.
functional
.
softmax
(
attn
,
axis
=-
1
)
attn
=
nn
.
functional
.
softmax
(
attn
,
axis
=-
1
)
attn
=
self
.
attn_drop
(
attn
)
attn
=
self
.
attn_drop
(
attn
)
x
=
(
attn
@
v
).
transpose
((
0
,
2
,
1
,
3
)).
reshape
((
B
,
N
,
-
1
))
x
=
(
attn
@
v
).
transpose
((
0
,
2
,
1
,
3
)).
reshape
((
B
,
N
,
-
1
))
x
=
self
.
proj
(
x
)
x
=
self
.
proj
(
x
)
x
=
self
.
proj_drop
(
x
)
x
=
self
.
proj_drop
(
x
)
return
x
return
x
class
Block
(
nn
.
Layer
):
class
Block
(
nn
.
Layer
):
def
__init__
(
self
,
dim
,
in_dim
,
num_pixel
,
num_heads
=
12
,
in_num_head
=
4
,
mlp_ratio
=
4.
,
def
__init__
(
self
,
qkv_bias
=
False
,
drop
=
0.
,
attn_drop
=
0.
,
drop_path
=
0.
,
act_layer
=
nn
.
GELU
,
dim
,
in_dim
,
num_pixel
,
num_heads
=
12
,
in_num_head
=
4
,
mlp_ratio
=
4.
,
qkv_bias
=
False
,
drop
=
0.
,
attn_drop
=
0.
,
drop_path
=
0.
,
act_layer
=
nn
.
GELU
,
norm_layer
=
nn
.
LayerNorm
):
norm_layer
=
nn
.
LayerNorm
):
super
().
__init__
()
super
().
__init__
()
# Inner transformer
# Inner transformer
self
.
norm_in
=
norm_layer
(
in_dim
)
self
.
norm_in
=
norm_layer
(
in_dim
)
self
.
attn_in
=
Attention
(
self
.
attn_in
=
Attention
(
in_dim
,
in_dim
,
num_heads
=
in_num_head
,
in_dim
,
qkv_bias
=
qkv_bias
,
attn_drop
=
attn_drop
,
in_dim
,
proj_drop
=
drop
num_heads
=
in_num_head
,
)
qkv_bias
=
qkv_bias
,
attn_drop
=
attn_drop
,
proj_drop
=
drop
)
self
.
norm_mlp_in
=
norm_layer
(
in_dim
)
self
.
norm_mlp_in
=
norm_layer
(
in_dim
)
self
.
mlp_in
=
Mlp
(
self
.
mlp_in
=
Mlp
(
in_features
=
in_dim
,
in_features
=
in_dim
,
hidden_features
=
int
(
in_dim
*
4
),
hidden_features
=
int
(
in_dim
*
4
),
out_features
=
in_dim
,
act_layer
=
act_layer
,
drop
=
drop
out_features
=
in_dim
,
)
act_layer
=
act_layer
,
drop
=
drop
)
self
.
norm1_proj
=
norm_layer
(
in_dim
)
self
.
norm1_proj
=
norm_layer
(
in_dim
)
self
.
proj
=
nn
.
Linear
(
in_dim
*
num_pixel
,
dim
)
self
.
proj
=
nn
.
Linear
(
in_dim
*
num_pixel
,
dim
)
# Outer transformer
# Outer transformer
self
.
norm_out
=
norm_layer
(
dim
)
self
.
norm_out
=
norm_layer
(
dim
)
self
.
attn_out
=
Attention
(
self
.
attn_out
=
Attention
(
dim
,
dim
,
num_heads
=
num_heads
,
qkv_bias
=
qkv_bias
,
dim
,
attn_drop
=
attn_drop
,
proj_drop
=
drop
dim
,
)
num_heads
=
num_heads
,
qkv_bias
=
qkv_bias
,
attn_drop
=
attn_drop
,
proj_drop
=
drop
)
self
.
drop_path
=
DropPath
(
drop_path
)
if
drop_path
>
0.
else
Identity
()
self
.
drop_path
=
DropPath
(
drop_path
)
if
drop_path
>
0.
else
Identity
()
self
.
norm_mlp
=
norm_layer
(
dim
)
self
.
norm_mlp
=
norm_layer
(
dim
)
self
.
mlp
=
Mlp
(
self
.
mlp
=
Mlp
(
in_features
=
dim
,
in_features
=
dim
,
hidden_features
=
int
(
dim
*
mlp_ratio
),
hidden_features
=
int
(
dim
*
mlp_ratio
),
out_features
=
dim
,
act_layer
=
act_layer
,
drop
=
drop
out_features
=
dim
,
)
act_layer
=
act_layer
,
drop
=
drop
)
def
forward
(
self
,
pixel_embed
,
patch_embed
):
def
forward
(
self
,
pixel_embed
,
patch_embed
):
# inner
# inner
pixel_embed
=
pixel_embed
+
self
.
drop_path
(
self
.
attn_in
(
self
.
norm_in
(
pixel_embed
)))
pixel_embed
=
pixel_embed
+
self
.
drop_path
(
pixel_embed
=
pixel_embed
+
self
.
drop_path
(
self
.
mlp_in
(
self
.
norm_mlp_in
(
pixel_embed
)))
self
.
attn_in
(
self
.
norm_in
(
pixel_embed
)))
pixel_embed
=
pixel_embed
+
self
.
drop_path
(
self
.
mlp_in
(
self
.
norm_mlp_in
(
pixel_embed
)))
# outer
# outer
B
,
N
,
C
=
patch_embed
.
shape
B
,
N
,
C
=
patch_embed
.
shape
patch_embed
[:,
1
:]
=
patch_embed
[:,
1
:]
+
self
.
proj
(
self
.
norm1_proj
(
pixel_embed
).
reshape
((
B
,
N
-
1
,
-
1
)))
patch_embed
[:,
1
:]
=
patch_embed
[:,
1
:]
+
self
.
proj
(
patch_embed
=
patch_embed
+
self
.
drop_path
(
self
.
attn_out
(
self
.
norm_out
(
patch_embed
)))
self
.
norm1_proj
(
pixel_embed
).
reshape
((
B
,
N
-
1
,
-
1
)))
patch_embed
=
patch_embed
+
self
.
drop_path
(
self
.
mlp
(
self
.
norm_mlp
(
patch_embed
)))
patch_embed
=
patch_embed
+
self
.
drop_path
(
self
.
attn_out
(
self
.
norm_out
(
patch_embed
)))
patch_embed
=
patch_embed
+
self
.
drop_path
(
self
.
mlp
(
self
.
norm_mlp
(
patch_embed
)))
return
pixel_embed
,
patch_embed
return
pixel_embed
,
patch_embed
class
PixelEmbed
(
nn
.
Layer
):
class
PixelEmbed
(
nn
.
Layer
):
def
__init__
(
self
,
img_size
=
224
,
patch_size
=
16
,
in_chans
=
3
,
in_dim
=
48
,
stride
=
4
):
def
__init__
(
self
,
img_size
=
224
,
patch_size
=
16
,
in_chans
=
3
,
in_dim
=
48
,
stride
=
4
):
super
().
__init__
()
super
().
__init__
()
num_patches
=
(
img_size
//
patch_size
)
**
2
num_patches
=
(
img_size
//
patch_size
)
**
2
self
.
img_size
=
img_size
self
.
img_size
=
img_size
self
.
num_patches
=
num_patches
self
.
num_patches
=
num_patches
self
.
in_dim
=
in_dim
self
.
in_dim
=
in_dim
...
@@ -177,10 +213,7 @@ class PixelEmbed(nn.Layer):
...
@@ -177,10 +213,7 @@ class PixelEmbed(nn.Layer):
self
.
new_patch_size
=
new_patch_size
self
.
new_patch_size
=
new_patch_size
self
.
proj
=
nn
.
Conv2D
(
self
.
proj
=
nn
.
Conv2D
(
in_chans
,
self
.
in_dim
,
in_chans
,
self
.
in_dim
,
kernel_size
=
7
,
padding
=
3
,
stride
=
stride
)
kernel_size
=
7
,
padding
=
3
,
stride
=
stride
)
def
forward
(
self
,
x
,
pixel_pos
):
def
forward
(
self
,
x
,
pixel_pos
):
B
,
C
,
H
,
W
=
x
.
shape
B
,
C
,
H
,
W
=
x
.
shape
...
@@ -188,50 +221,64 @@ class PixelEmbed(nn.Layer):
...
@@ -188,50 +221,64 @@ class PixelEmbed(nn.Layer):
x
=
self
.
proj
(
x
)
x
=
self
.
proj
(
x
)
x
=
nn
.
functional
.
unfold
(
x
,
self
.
new_patch_size
,
self
.
new_patch_size
)
x
=
nn
.
functional
.
unfold
(
x
,
self
.
new_patch_size
,
self
.
new_patch_size
)
x
=
x
.
transpose
((
0
,
2
,
1
)).
reshape
((
B
*
self
.
num_patches
,
self
.
in_dim
,
self
.
new_patch_size
,
self
.
new_patch_size
))
x
=
x
.
transpose
((
0
,
2
,
1
)).
reshape
(
(
B
*
self
.
num_patches
,
self
.
in_dim
,
self
.
new_patch_size
,
self
.
new_patch_size
))
x
=
x
+
pixel_pos
x
=
x
+
pixel_pos
x
=
x
.
reshape
((
B
*
self
.
num_patches
,
self
.
in_dim
,
-
1
)).
transpose
((
0
,
2
,
1
))
x
=
x
.
reshape
((
B
*
self
.
num_patches
,
self
.
in_dim
,
-
1
)).
transpose
(
(
0
,
2
,
1
))
return
x
return
x
class
TNT
(
nn
.
Layer
):
class
TNT
(
nn
.
Layer
):
def
__init__
(
self
,
img_size
=
224
,
patch_size
=
16
,
in_chans
=
3
,
embed_dim
=
768
,
in_dim
=
48
,
depth
=
12
,
def
__init__
(
self
,
num_heads
=
12
,
in_num_head
=
4
,
mlp_ratio
=
4.
,
qkv_bias
=
False
,
drop_rate
=
0.
,
attn_drop_rate
=
0.
,
img_size
=
224
,
drop_path_rate
=
0.
,
norm_layer
=
nn
.
LayerNorm
,
first_stride
=
4
,
class_dim
=
1000
):
patch_size
=
16
,
in_chans
=
3
,
embed_dim
=
768
,
in_dim
=
48
,
depth
=
12
,
num_heads
=
12
,
in_num_head
=
4
,
mlp_ratio
=
4.
,
qkv_bias
=
False
,
drop_rate
=
0.
,
attn_drop_rate
=
0.
,
drop_path_rate
=
0.
,
norm_layer
=
nn
.
LayerNorm
,
first_stride
=
4
,
class_num
=
1000
):
super
().
__init__
()
super
().
__init__
()
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
# num_features for consistency with other models
# num_features for consistency with other models
self
.
num_features
=
self
.
embed_dim
=
embed_dim
self
.
num_features
=
self
.
embed_dim
=
embed_dim
self
.
pixel_embed
=
PixelEmbed
(
self
.
pixel_embed
=
PixelEmbed
(
img_size
=
img_size
,
patch_size
=
patch_size
,
img_size
=
img_size
,
in_chans
=
in_chans
,
in_dim
=
in_dim
,
stride
=
first_stride
patch_size
=
patch_size
,
)
in_chans
=
in_chans
,
in_dim
=
in_dim
,
stride
=
first_stride
)
num_patches
=
self
.
pixel_embed
.
num_patches
num_patches
=
self
.
pixel_embed
.
num_patches
self
.
num_patches
=
num_patches
self
.
num_patches
=
num_patches
new_patch_size
=
self
.
pixel_embed
.
new_patch_size
new_patch_size
=
self
.
pixel_embed
.
new_patch_size
num_pixel
=
new_patch_size
**
2
num_pixel
=
new_patch_size
**
2
self
.
norm1_proj
=
norm_layer
(
num_pixel
*
in_dim
)
self
.
norm1_proj
=
norm_layer
(
num_pixel
*
in_dim
)
self
.
proj
=
nn
.
Linear
(
num_pixel
*
in_dim
,
embed_dim
)
self
.
proj
=
nn
.
Linear
(
num_pixel
*
in_dim
,
embed_dim
)
self
.
norm2_proj
=
norm_layer
(
embed_dim
)
self
.
norm2_proj
=
norm_layer
(
embed_dim
)
self
.
cls_token
=
self
.
create_parameter
(
self
.
cls_token
=
self
.
create_parameter
(
shape
=
(
1
,
1
,
embed_dim
),
shape
=
(
1
,
1
,
embed_dim
),
default_initializer
=
zeros_
)
default_initializer
=
zeros_
)
self
.
add_parameter
(
"cls_token"
,
self
.
cls_token
)
self
.
add_parameter
(
"cls_token"
,
self
.
cls_token
)
self
.
patch_pos
=
self
.
create_parameter
(
self
.
patch_pos
=
self
.
create_parameter
(
shape
=
(
1
,
num_patches
+
1
,
embed_dim
),
shape
=
(
1
,
num_patches
+
1
,
embed_dim
),
default_initializer
=
zeros_
)
default_initializer
=
zeros_
)
self
.
add_parameter
(
"patch_pos"
,
self
.
patch_pos
)
self
.
add_parameter
(
"patch_pos"
,
self
.
patch_pos
)
self
.
pixel_pos
=
self
.
create_parameter
(
self
.
pixel_pos
=
self
.
create_parameter
(
shape
=
(
1
,
in_dim
,
new_patch_size
,
new_patch_size
),
shape
=
(
1
,
in_dim
,
new_patch_size
,
new_patch_size
),
default_initializer
=
zeros_
default_initializer
=
zeros_
)
)
self
.
add_parameter
(
"pixel_pos"
,
self
.
pixel_pos
)
self
.
add_parameter
(
"pixel_pos"
,
self
.
pixel_pos
)
self
.
pos_drop
=
nn
.
Dropout
(
p
=
drop_rate
)
self
.
pos_drop
=
nn
.
Dropout
(
p
=
drop_rate
)
...
@@ -241,17 +288,24 @@ class TNT(nn.Layer):
...
@@ -241,17 +288,24 @@ class TNT(nn.Layer):
blocks
=
[]
blocks
=
[]
for
i
in
range
(
depth
):
for
i
in
range
(
depth
):
blocks
.
append
(
Block
(
blocks
.
append
(
dim
=
embed_dim
,
in_dim
=
in_dim
,
num_pixel
=
num_pixel
,
num_heads
=
num_heads
,
Block
(
in_num_head
=
in_num_head
,
mlp_ratio
=
mlp_ratio
,
qkv_bias
=
qkv_bias
,
dim
=
embed_dim
,
drop
=
drop_rate
,
attn_drop
=
attn_drop_rate
,
drop_path
=
dpr
[
i
],
in_dim
=
in_dim
,
norm_layer
=
norm_layer
num_pixel
=
num_pixel
,
))
num_heads
=
num_heads
,
in_num_head
=
in_num_head
,
mlp_ratio
=
mlp_ratio
,
qkv_bias
=
qkv_bias
,
drop
=
drop_rate
,
attn_drop
=
attn_drop_rate
,
drop_path
=
dpr
[
i
],
norm_layer
=
norm_layer
))
self
.
blocks
=
nn
.
LayerList
(
blocks
)
self
.
blocks
=
nn
.
LayerList
(
blocks
)
self
.
norm
=
norm_layer
(
embed_dim
)
self
.
norm
=
norm_layer
(
embed_dim
)
if
class_
di
m
>
0
:
if
class_
nu
m
>
0
:
self
.
head
=
nn
.
Linear
(
embed_dim
,
class_
di
m
)
self
.
head
=
nn
.
Linear
(
embed_dim
,
class_
nu
m
)
trunc_normal_
(
self
.
cls_token
)
trunc_normal_
(
self
.
cls_token
)
trunc_normal_
(
self
.
patch_pos
)
trunc_normal_
(
self
.
patch_pos
)
...
@@ -271,8 +325,12 @@ class TNT(nn.Layer):
...
@@ -271,8 +325,12 @@ class TNT(nn.Layer):
B
=
x
.
shape
[
0
]
B
=
x
.
shape
[
0
]
pixel_embed
=
self
.
pixel_embed
(
x
,
self
.
pixel_pos
)
pixel_embed
=
self
.
pixel_embed
(
x
,
self
.
pixel_pos
)
patch_embed
=
self
.
norm2_proj
(
self
.
proj
(
self
.
norm1_proj
(
pixel_embed
.
reshape
((
B
,
self
.
num_patches
,
-
1
)))))
patch_embed
=
self
.
norm2_proj
(
patch_embed
=
paddle
.
concat
((
self
.
cls_token
.
expand
((
B
,
-
1
,
-
1
)),
patch_embed
),
axis
=
1
)
self
.
proj
(
self
.
norm1_proj
(
pixel_embed
.
reshape
((
B
,
self
.
num_patches
,
-
1
)))))
patch_embed
=
paddle
.
concat
(
(
self
.
cls_token
.
expand
((
B
,
-
1
,
-
1
)),
patch_embed
),
axis
=
1
)
patch_embed
=
patch_embed
+
self
.
patch_pos
patch_embed
=
patch_embed
+
self
.
patch_pos
patch_embed
=
self
.
pos_drop
(
patch_embed
)
patch_embed
=
self
.
pos_drop
(
patch_embed
)
...
@@ -285,7 +343,7 @@ class TNT(nn.Layer):
...
@@ -285,7 +343,7 @@ class TNT(nn.Layer):
def
forward
(
self
,
x
):
def
forward
(
self
,
x
):
x
=
self
.
forward_features
(
x
)
x
=
self
.
forward_features
(
x
)
if
self
.
class_
di
m
>
0
:
if
self
.
class_
nu
m
>
0
:
x
=
self
.
head
(
x
)
x
=
self
.
head
(
x
)
return
x
return
x
...
@@ -304,15 +362,13 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -304,15 +362,13 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
TNT_small
(
pretrained
=
False
,
**
kwargs
):
def
TNT_small
(
pretrained
=
False
,
**
kwargs
):
model
=
TNT
(
model
=
TNT
(
patch_size
=
16
,
patch_size
=
16
,
embed_dim
=
384
,
embed_dim
=
384
,
in_dim
=
24
,
in_dim
=
24
,
depth
=
12
,
depth
=
12
,
num_heads
=
6
,
num_heads
=
6
,
in_num_head
=
4
,
in_num_head
=
4
,
qkv_bias
=
False
,
qkv_bias
=
False
,
**
kwargs
)
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"TNT_small"
])
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"TNT_small"
])
return
model
return
model
ppcls/arch/backbone/model_zoo/vision_transformer.py
浏览文件 @
4d496f78
...
@@ -231,7 +231,7 @@ class VisionTransformer(nn.Layer):
...
@@ -231,7 +231,7 @@ class VisionTransformer(nn.Layer):
img_size
=
224
,
img_size
=
224
,
patch_size
=
16
,
patch_size
=
16
,
in_chans
=
3
,
in_chans
=
3
,
class_
di
m
=
1000
,
class_
nu
m
=
1000
,
embed_dim
=
768
,
embed_dim
=
768
,
depth
=
12
,
depth
=
12
,
num_heads
=
12
,
num_heads
=
12
,
...
@@ -245,7 +245,7 @@ class VisionTransformer(nn.Layer):
...
@@ -245,7 +245,7 @@ class VisionTransformer(nn.Layer):
epsilon
=
1e-5
,
epsilon
=
1e-5
,
**
args
):
**
args
):
super
().
__init__
()
super
().
__init__
()
self
.
class_
dim
=
class_di
m
self
.
class_
num
=
class_nu
m
self
.
num_features
=
self
.
embed_dim
=
embed_dim
self
.
num_features
=
self
.
embed_dim
=
embed_dim
...
@@ -284,7 +284,7 @@ class VisionTransformer(nn.Layer):
...
@@ -284,7 +284,7 @@ class VisionTransformer(nn.Layer):
# Classifier head
# Classifier head
self
.
head
=
nn
.
Linear
(
embed_dim
,
self
.
head
=
nn
.
Linear
(
embed_dim
,
class_
dim
)
if
class_di
m
>
0
else
Identity
()
class_
num
)
if
class_nu
m
>
0
else
Identity
()
trunc_normal_
(
self
.
pos_embed
)
trunc_normal_
(
self
.
pos_embed
)
trunc_normal_
(
self
.
cls_token
)
trunc_normal_
(
self
.
cls_token
)
...
...
ppcls/arch/backbone/model_zoo/xception.py
浏览文件 @
4d496f78
...
@@ -8,14 +8,16 @@ from paddle.nn.initializer import Uniform
...
@@ -8,14 +8,16 @@ from paddle.nn.initializer import Uniform
import
math
import
math
import
sys
import
sys
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
MODEL_URLS
=
{
"Xception41"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception41_pretrained.pdparams"
,
"Xception41"
:
"Xception65"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception65_pretrained.pdparams"
,
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception41_pretrained.pdparams"
,
"Xception71"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception71_pretrained.pdparams"
"Xception65"
:
}
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception65_pretrained.pdparams"
,
"Xception71"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception71_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -290,7 +292,7 @@ class ExitFlowBottleneckBlock(nn.Layer):
...
@@ -290,7 +292,7 @@ class ExitFlowBottleneckBlock(nn.Layer):
class
ExitFlow
(
nn
.
Layer
):
class
ExitFlow
(
nn
.
Layer
):
def
__init__
(
self
,
class_
di
m
):
def
__init__
(
self
,
class_
nu
m
):
super
(
ExitFlow
,
self
).
__init__
()
super
(
ExitFlow
,
self
).
__init__
()
name
=
"exit_flow"
name
=
"exit_flow"
...
@@ -303,7 +305,7 @@ class ExitFlow(nn.Layer):
...
@@ -303,7 +305,7 @@ class ExitFlow(nn.Layer):
stdv
=
1.0
/
math
.
sqrt
(
2048
*
1.0
)
stdv
=
1.0
/
math
.
sqrt
(
2048
*
1.0
)
self
.
_out
=
Linear
(
self
.
_out
=
Linear
(
2048
,
2048
,
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
weight_attr
=
ParamAttr
(
name
=
"fc_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
name
=
"fc_weights"
,
initializer
=
Uniform
(
-
stdv
,
stdv
)),
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
bias_attr
=
ParamAttr
(
name
=
"fc_offset"
))
...
@@ -324,13 +326,13 @@ class Xception(nn.Layer):
...
@@ -324,13 +326,13 @@ class Xception(nn.Layer):
def
__init__
(
self
,
def
__init__
(
self
,
entry_flow_block_num
=
3
,
entry_flow_block_num
=
3
,
middle_flow_block_num
=
8
,
middle_flow_block_num
=
8
,
class_
di
m
=
1000
):
class_
nu
m
=
1000
):
super
(
Xception
,
self
).
__init__
()
super
(
Xception
,
self
).
__init__
()
self
.
entry_flow_block_num
=
entry_flow_block_num
self
.
entry_flow_block_num
=
entry_flow_block_num
self
.
middle_flow_block_num
=
middle_flow_block_num
self
.
middle_flow_block_num
=
middle_flow_block_num
self
.
_entry_flow
=
EntryFlow
(
entry_flow_block_num
)
self
.
_entry_flow
=
EntryFlow
(
entry_flow_block_num
)
self
.
_middle_flow
=
MiddleFlow
(
middle_flow_block_num
)
self
.
_middle_flow
=
MiddleFlow
(
middle_flow_block_num
)
self
.
_exit_flow
=
ExitFlow
(
class_
di
m
)
self
.
_exit_flow
=
ExitFlow
(
class_
nu
m
)
def
forward
(
self
,
inputs
):
def
forward
(
self
,
inputs
):
x
=
self
.
_entry_flow
(
inputs
)
x
=
self
.
_entry_flow
(
inputs
)
...
@@ -338,6 +340,7 @@ class Xception(nn.Layer):
...
@@ -338,6 +340,7 @@ class Xception(nn.Layer):
x
=
self
.
_exit_flow
(
x
)
x
=
self
.
_exit_flow
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -349,21 +352,26 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -349,21 +352,26 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
raise
RuntimeError
(
raise
RuntimeError
(
"pretrained type is not available. Please use `string` or `boolean` type."
"pretrained type is not available. Please use `string` or `boolean` type."
)
)
def
Xception41
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Xception41
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Xception
(
entry_flow_block_num
=
3
,
middle_flow_block_num
=
8
,
**
kwargs
)
model
=
Xception
(
entry_flow_block_num
=
3
,
middle_flow_block_num
=
8
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception41"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception41"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Xception65
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Xception65
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Xception
(
entry_flow_block_num
=
3
,
middle_flow_block_num
=
16
,
**
kwargs
)
model
=
Xception
(
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception65"
],
use_ssld
=
use_ssld
)
entry_flow_block_num
=
3
,
middle_flow_block_num
=
16
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception65"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Xception71
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Xception71
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
Xception
(
entry_flow_block_num
=
5
,
middle_flow_block_num
=
16
,
**
kwargs
)
model
=
Xception
(
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception71"
],
use_ssld
=
use_ssld
)
entry_flow_block_num
=
5
,
middle_flow_block_num
=
16
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception71"
],
use_ssld
=
use_ssld
)
return
model
return
model
ppcls/arch/backbone/model_zoo/xception_deeplab.py
浏览文件 @
4d496f78
...
@@ -21,8 +21,12 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
...
@@ -21,8 +21,12 @@ from paddle.nn import AdaptiveAvgPool2D, MaxPool2D, AvgPool2D
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
from
ppcls.utils.save_load
import
load_dygraph_pretrain
,
load_dygraph_pretrain_from_url
MODEL_URLS
=
{
"Xception41_deeplab"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception41_deeplab_pretrained.pdparams"
,
MODEL_URLS
=
{
"Xception65_deeplab"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception65_deeplab_pretrained.pdparams"
}
"Xception41_deeplab"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception41_deeplab_pretrained.pdparams"
,
"Xception65_deeplab"
:
"https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/Xception65_deeplab_pretrained.pdparams"
}
__all__
=
list
(
MODEL_URLS
.
keys
())
__all__
=
list
(
MODEL_URLS
.
keys
())
...
@@ -268,7 +272,7 @@ class Xception_Block(nn.Layer):
...
@@ -268,7 +272,7 @@ class Xception_Block(nn.Layer):
class
XceptionDeeplab
(
nn
.
Layer
):
class
XceptionDeeplab
(
nn
.
Layer
):
def
__init__
(
self
,
backbone
,
class_
di
m
=
1000
):
def
__init__
(
self
,
backbone
,
class_
nu
m
=
1000
):
super
(
XceptionDeeplab
,
self
).
__init__
()
super
(
XceptionDeeplab
,
self
).
__init__
()
bottleneck_params
=
gen_bottleneck_params
(
backbone
)
bottleneck_params
=
gen_bottleneck_params
(
backbone
)
...
@@ -370,7 +374,7 @@ class XceptionDeeplab(nn.Layer):
...
@@ -370,7 +374,7 @@ class XceptionDeeplab(nn.Layer):
self
.
_pool
=
AdaptiveAvgPool2D
(
1
)
self
.
_pool
=
AdaptiveAvgPool2D
(
1
)
self
.
_fc
=
Linear
(
self
.
_fc
=
Linear
(
self
.
chns
[
1
][
-
1
],
self
.
chns
[
1
][
-
1
],
class_
di
m
,
class_
nu
m
,
weight_attr
=
ParamAttr
(
name
=
"fc_weights"
),
weight_attr
=
ParamAttr
(
name
=
"fc_weights"
),
bias_attr
=
ParamAttr
(
name
=
"fc_bias"
))
bias_attr
=
ParamAttr
(
name
=
"fc_bias"
))
...
@@ -388,8 +392,8 @@ class XceptionDeeplab(nn.Layer):
...
@@ -388,8 +392,8 @@ class XceptionDeeplab(nn.Layer):
x
=
paddle
.
squeeze
(
x
,
axis
=
[
2
,
3
])
x
=
paddle
.
squeeze
(
x
,
axis
=
[
2
,
3
])
x
=
self
.
_fc
(
x
)
x
=
self
.
_fc
(
x
)
return
x
return
x
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
def
_load_pretrained
(
pretrained
,
model
,
model_url
,
use_ssld
=
False
):
if
pretrained
is
False
:
if
pretrained
is
False
:
pass
pass
...
@@ -405,11 +409,13 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
...
@@ -405,11 +409,13 @@ def _load_pretrained(pretrained, model, model_url, use_ssld=False):
def
Xception41_deeplab
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Xception41_deeplab
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
XceptionDeeplab
(
'xception_41'
,
**
kwargs
)
model
=
XceptionDeeplab
(
'xception_41'
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception41_deeplab"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception41_deeplab"
],
use_ssld
=
use_ssld
)
return
model
return
model
def
Xception65_deeplab
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
def
Xception65_deeplab
(
pretrained
=
False
,
use_ssld
=
False
,
**
kwargs
):
model
=
XceptionDeeplab
(
"xception_65"
,
**
kwargs
)
model
=
XceptionDeeplab
(
"xception_65"
,
**
kwargs
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception65_deeplab"
],
use_ssld
=
use_ssld
)
_load_pretrained
(
pretrained
,
model
,
MODEL_URLS
[
"Xception65_deeplab"
],
use_ssld
=
use_ssld
)
return
model
return
model
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录