|
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