Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
stoneliu1981
pytorch-image-models
提交
bda8ab01
P
pytorch-image-models
项目概览
stoneliu1981
/
pytorch-image-models
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pytorch-image-models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
bda8ab01
编写于
5月 31, 2021
作者:
R
Ross Wightman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove min channels for SelectiveKernel, divisor should cover cases well enough.
上级
a27f4aec
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
5 addition
and
7 deletion
+5
-7
timm/models/layers/selective_kernel.py
timm/models/layers/selective_kernel.py
+2
-4
timm/models/sknet.py
timm/models/sknet.py
+3
-3
未找到文件。
timm/models/layers/selective_kernel.py
浏览文件 @
bda8ab01
...
...
@@ -49,7 +49,7 @@ class SelectiveKernelAttn(nn.Module):
class
SelectiveKernel
(
nn
.
Module
):
def
__init__
(
self
,
in_channels
,
out_channels
=
None
,
kernel_size
=
None
,
stride
=
1
,
dilation
=
1
,
groups
=
1
,
rd_ratio
=
1.
/
16
,
rd_channels
=
None
,
min_rd_channels
=
32
,
rd_divisor
=
8
,
keep_3x3
=
True
,
split_input
=
True
,
rd_ratio
=
1.
/
16
,
rd_channels
=
None
,
rd_divisor
=
8
,
keep_3x3
=
True
,
split_input
=
True
,
drop_block
=
None
,
act_layer
=
nn
.
ReLU
,
norm_layer
=
nn
.
BatchNorm2d
,
aa_layer
=
None
):
""" Selective Kernel Convolution Module
...
...
@@ -68,7 +68,6 @@ class SelectiveKernel(nn.Module):
dilation (int): dilation for module as a whole, impacts dilation of each branch
groups (int): number of groups for each branch
rd_ratio (int, float): reduction factor for attention features
min_rd_channels (int): minimum attention feature channels
keep_3x3 (bool): keep all branch convolution kernels as 3x3, changing larger kernels for dilations
split_input (bool): split input channels evenly across each convolution branch, keeps param count lower,
can be viewed as grouping by path, output expands to module out_channels count
...
...
@@ -103,8 +102,7 @@ class SelectiveKernel(nn.Module):
ConvBnAct
(
in_channels
,
out_channels
,
kernel_size
=
k
,
dilation
=
d
,
**
conv_kwargs
)
for
k
,
d
in
zip
(
kernel_size
,
dilation
)])
attn_channels
=
rd_channels
or
make_divisible
(
out_channels
*
rd_ratio
,
min_value
=
min_rd_channels
,
divisor
=
rd_divisor
)
attn_channels
=
rd_channels
or
make_divisible
(
out_channels
*
rd_ratio
,
divisor
=
rd_divisor
)
self
.
attn
=
SelectiveKernelAttn
(
out_channels
,
self
.
num_paths
,
attn_channels
)
self
.
drop_block
=
drop_block
...
...
timm/models/sknet.py
浏览文件 @
bda8ab01
...
...
@@ -153,7 +153,7 @@ def skresnet18(pretrained=False, **kwargs):
Different from configs in Select Kernel paper or "Compounding the Performance Improvements..." this
variation splits the input channels to the selective convolutions to keep param count down.
"""
sk_kwargs
=
dict
(
min_rd_channels
=
16
,
rd_ratio
=
1
/
8
,
split_input
=
True
)
sk_kwargs
=
dict
(
rd_ratio
=
1
/
8
,
rd_divisor
=
16
,
split_input
=
True
)
model_args
=
dict
(
block
=
SelectiveKernelBasic
,
layers
=
[
2
,
2
,
2
,
2
],
block_args
=
dict
(
sk_kwargs
=
sk_kwargs
),
zero_init_last_bn
=
False
,
**
kwargs
)
...
...
@@ -167,7 +167,7 @@ def skresnet34(pretrained=False, **kwargs):
Different from configs in Select Kernel paper or "Compounding the Performance Improvements..." this
variation splits the input channels to the selective convolutions to keep param count down.
"""
sk_kwargs
=
dict
(
min_rd_channels
=
16
,
rd_ratio
=
1
/
8
,
split_input
=
True
)
sk_kwargs
=
dict
(
rd_ratio
=
1
/
8
,
rd_divisor
=
16
,
split_input
=
True
)
model_args
=
dict
(
block
=
SelectiveKernelBasic
,
layers
=
[
3
,
4
,
6
,
3
],
block_args
=
dict
(
sk_kwargs
=
sk_kwargs
),
zero_init_last_bn
=
False
,
**
kwargs
)
...
...
@@ -207,7 +207,7 @@ def skresnext50_32x4d(pretrained=False, **kwargs):
"""Constructs a Select Kernel ResNeXt50-32x4d model. This should be equivalent to
the SKNet-50 model in the Select Kernel Paper
"""
sk_kwargs
=
dict
(
min_rd_channels
=
32
,
rd_ratio
=
1
/
16
,
split_input
=
False
)
sk_kwargs
=
dict
(
rd_ratio
=
1
/
16
,
rd_divisor
=
32
,
split_input
=
False
)
model_args
=
dict
(
block
=
SelectiveKernelBottleneck
,
layers
=
[
3
,
4
,
6
,
3
],
cardinality
=
32
,
base_width
=
4
,
block_args
=
dict
(
sk_kwargs
=
sk_kwargs
),
zero_init_last_bn
=
False
,
**
kwargs
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录