|
11 | 11 | import torch
|
12 | 12 | import torch.nn as nn
|
13 | 13 | import torch.nn.functional as F
|
14 |
| -import torch.utils.model_zoo as model_zoo |
15 | 14 | from collections import OrderedDict
|
16 | 15 |
|
17 |
| -__all__ = ["DPN", "dpn68", "dpn68b", "dpn92", "dpn98", "dpn131", "dpn107"] |
18 |
| - |
19 |
| - |
20 |
| -def dpn68(num_classes=1000, pretrained="imagenet"): |
21 |
| - model = DPN( |
22 |
| - small=True, |
23 |
| - num_init_features=10, |
24 |
| - k_r=128, |
25 |
| - groups=32, |
26 |
| - k_sec=(3, 4, 12, 3), |
27 |
| - inc_sec=(16, 32, 32, 64), |
28 |
| - num_classes=num_classes, |
29 |
| - test_time_pool=True, |
30 |
| - ) |
31 |
| - if pretrained: |
32 |
| - settings = pretrained_settings["dpn68"][pretrained] |
33 |
| - assert num_classes == settings["num_classes"], ( |
34 |
| - "num_classes should be {}, but is {}".format( |
35 |
| - settings["num_classes"], num_classes |
36 |
| - ) |
37 |
| - ) |
38 |
| - |
39 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
40 |
| - model.input_space = settings["input_space"] |
41 |
| - model.input_size = settings["input_size"] |
42 |
| - model.input_range = settings["input_range"] |
43 |
| - model.mean = settings["mean"] |
44 |
| - model.std = settings["std"] |
45 |
| - return model |
46 |
| - |
47 |
| - |
48 |
| -def dpn68b(num_classes=1000, pretrained="imagenet+5k"): |
49 |
| - model = DPN( |
50 |
| - small=True, |
51 |
| - num_init_features=10, |
52 |
| - k_r=128, |
53 |
| - groups=32, |
54 |
| - b=True, |
55 |
| - k_sec=(3, 4, 12, 3), |
56 |
| - inc_sec=(16, 32, 32, 64), |
57 |
| - num_classes=num_classes, |
58 |
| - test_time_pool=True, |
59 |
| - ) |
60 |
| - if pretrained: |
61 |
| - settings = pretrained_settings["dpn68b"][pretrained] |
62 |
| - assert num_classes == settings["num_classes"], ( |
63 |
| - "num_classes should be {}, but is {}".format( |
64 |
| - settings["num_classes"], num_classes |
65 |
| - ) |
66 |
| - ) |
67 |
| - |
68 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
69 |
| - model.input_space = settings["input_space"] |
70 |
| - model.input_size = settings["input_size"] |
71 |
| - model.input_range = settings["input_range"] |
72 |
| - model.mean = settings["mean"] |
73 |
| - model.std = settings["std"] |
74 |
| - return model |
75 |
| - |
76 |
| - |
77 |
| -def dpn92(num_classes=1000, pretrained="imagenet+5k"): |
78 |
| - model = DPN( |
79 |
| - num_init_features=64, |
80 |
| - k_r=96, |
81 |
| - groups=32, |
82 |
| - k_sec=(3, 4, 20, 3), |
83 |
| - inc_sec=(16, 32, 24, 128), |
84 |
| - num_classes=num_classes, |
85 |
| - test_time_pool=True, |
86 |
| - ) |
87 |
| - if pretrained: |
88 |
| - settings = pretrained_settings["dpn92"][pretrained] |
89 |
| - assert num_classes == settings["num_classes"], ( |
90 |
| - "num_classes should be {}, but is {}".format( |
91 |
| - settings["num_classes"], num_classes |
92 |
| - ) |
93 |
| - ) |
94 |
| - |
95 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
96 |
| - model.input_space = settings["input_space"] |
97 |
| - model.input_size = settings["input_size"] |
98 |
| - model.input_range = settings["input_range"] |
99 |
| - model.mean = settings["mean"] |
100 |
| - model.std = settings["std"] |
101 |
| - return model |
102 |
| - |
103 |
| - |
104 |
| -def dpn98(num_classes=1000, pretrained="imagenet"): |
105 |
| - model = DPN( |
106 |
| - num_init_features=96, |
107 |
| - k_r=160, |
108 |
| - groups=40, |
109 |
| - k_sec=(3, 6, 20, 3), |
110 |
| - inc_sec=(16, 32, 32, 128), |
111 |
| - num_classes=num_classes, |
112 |
| - test_time_pool=True, |
113 |
| - ) |
114 |
| - if pretrained: |
115 |
| - settings = pretrained_settings["dpn98"][pretrained] |
116 |
| - assert num_classes == settings["num_classes"], ( |
117 |
| - "num_classes should be {}, but is {}".format( |
118 |
| - settings["num_classes"], num_classes |
119 |
| - ) |
120 |
| - ) |
121 |
| - |
122 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
123 |
| - model.input_space = settings["input_space"] |
124 |
| - model.input_size = settings["input_size"] |
125 |
| - model.input_range = settings["input_range"] |
126 |
| - model.mean = settings["mean"] |
127 |
| - model.std = settings["std"] |
128 |
| - return model |
129 |
| - |
130 |
| - |
131 |
| -def dpn131(num_classes=1000, pretrained="imagenet"): |
132 |
| - model = DPN( |
133 |
| - num_init_features=128, |
134 |
| - k_r=160, |
135 |
| - groups=40, |
136 |
| - k_sec=(4, 8, 28, 3), |
137 |
| - inc_sec=(16, 32, 32, 128), |
138 |
| - num_classes=num_classes, |
139 |
| - test_time_pool=True, |
140 |
| - ) |
141 |
| - if pretrained: |
142 |
| - settings = pretrained_settings["dpn131"][pretrained] |
143 |
| - assert num_classes == settings["num_classes"], ( |
144 |
| - "num_classes should be {}, but is {}".format( |
145 |
| - settings["num_classes"], num_classes |
146 |
| - ) |
147 |
| - ) |
148 |
| - |
149 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
150 |
| - model.input_space = settings["input_space"] |
151 |
| - model.input_size = settings["input_size"] |
152 |
| - model.input_range = settings["input_range"] |
153 |
| - model.mean = settings["mean"] |
154 |
| - model.std = settings["std"] |
155 |
| - return model |
156 |
| - |
157 |
| - |
158 |
| -def dpn107(num_classes=1000, pretrained="imagenet+5k"): |
159 |
| - model = DPN( |
160 |
| - num_init_features=128, |
161 |
| - k_r=200, |
162 |
| - groups=50, |
163 |
| - k_sec=(4, 8, 20, 3), |
164 |
| - inc_sec=(20, 64, 64, 128), |
165 |
| - num_classes=num_classes, |
166 |
| - test_time_pool=True, |
167 |
| - ) |
168 |
| - if pretrained: |
169 |
| - settings = pretrained_settings["dpn107"][pretrained] |
170 |
| - assert num_classes == settings["num_classes"], ( |
171 |
| - "num_classes should be {}, but is {}".format( |
172 |
| - settings["num_classes"], num_classes |
173 |
| - ) |
174 |
| - ) |
175 |
| - |
176 |
| - model.load_state_dict(model_zoo.load_url(settings["url"])) |
177 |
| - model.input_space = settings["input_space"] |
178 |
| - model.input_size = settings["input_size"] |
179 |
| - model.input_range = settings["input_range"] |
180 |
| - model.mean = settings["mean"] |
181 |
| - model.std = settings["std"] |
182 |
| - return model |
183 |
| - |
184 | 16 |
|
185 | 17 | class CatBnAct(nn.Module):
|
186 | 18 | def __init__(self, in_chs, activation_fn=nn.ReLU(inplace=True)):
|
|
0 commit comments