-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathhdenseunet_3d.m
More file actions
268 lines (255 loc) · 13.3 KB
/
Copy pathhdenseunet_3d.m
File metadata and controls
268 lines (255 loc) · 13.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
%% Create Layer Graph
% Create the layer graph variable to contain the network layers.
lgraph = layerGraph();
%% Add Layer Branches
% Add the branches of the network to the layer graph. Each branch is a linear
% array of layers.
tempLayers = [
image3dInputLayer([224 224 12 3],"Name","image3dinput")
convolution3dLayer([7 7 7],96,"Name","conv3d_1","Padding","same","Stride",[2 2 2])];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
maxPooling3dLayer([3 3 3],"Name","maxpool3d","Padding","same","Stride",[2 2 2])
batchNormalizationLayer("Name","batchnorm_1_1")
reluLayer("Name","relu_1_1")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_1","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_1")
reluLayer("Name","relu_2_1")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_1","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_2")
reluLayer("Name","relu_1_2")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_2","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_2")
reluLayer("Name","relu_2_2")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_2","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_1")
reluLayer("Name","relu_1_3_1")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_1","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_1")
reluLayer("Name","relu_2_3_1")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_1","Padding","same")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
batchNormalizationLayer("Name","batchnorm_1_4_1")
reluLayer("Name","relu_1_4_1")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_4_1","Padding","same")
averagePooling3dLayer([2 2 1],"Name","avgpool3d_1","Padding","same","Stride",[2 2 1])
batchNormalizationLayer("Name","batchnorm_1_3_2")
reluLayer("Name","relu_1_3_2")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_2","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_2")
reluLayer("Name","relu_2_3_2")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_2","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_3")
reluLayer("Name","relu_1_3_3")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_3","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_3")
reluLayer("Name","relu_2_3_3")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_3","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_4")
reluLayer("Name","relu_1_3_4")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_4","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_4")
reluLayer("Name","relu_2_3_4")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_4","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_5")
reluLayer("Name","relu_1_3_5")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_5","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_5")
reluLayer("Name","relu_2_3_5")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_5","Padding","same")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
batchNormalizationLayer("Name","batchnorm_1_4_2")
reluLayer("Name","relu_1_4_2")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_4_2","Padding","same")
averagePooling3dLayer([2 2 1],"Name","avgpool3d_2","Padding","same","Stride",[2 2 1])
batchNormalizationLayer("Name","batchnorm_1_3_6")
reluLayer("Name","relu_1_3_6")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_6","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_6")
reluLayer("Name","relu_2_3_6")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_6","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_7")
reluLayer("Name","relu_1_3_7")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_7","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_7")
reluLayer("Name","relu_2_3_7")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_7","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_8")
reluLayer("Name","relu_1_3_8")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_8","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_8")
reluLayer("Name","relu_2_3_8")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_8","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_9")
reluLayer("Name","relu_1_3_9")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_9","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_9")
reluLayer("Name","relu_2_3_9")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_9","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_10")
reluLayer("Name","relu_1_3_10")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_10","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_10")
reluLayer("Name","relu_2_3_10")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_10","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_11")
reluLayer("Name","relu_1_3_11")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_11","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_11")
reluLayer("Name","relu_2_3_11")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_11","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_12")
reluLayer("Name","relu_1_3_12")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_12","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_12")
reluLayer("Name","relu_2_3_12")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_12","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_13")
reluLayer("Name","relu_1_3_13")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_13","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_13")
reluLayer("Name","relu_2_3_13")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_13","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_14")
reluLayer("Name","relu_1_3_14")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_14","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_14")
reluLayer("Name","relu_2_3_14")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_14","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_15")
reluLayer("Name","relu_1_3_15")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_15","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_15")
reluLayer("Name","relu_2_3_15")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_15","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_16")
reluLayer("Name","relu_1_3_16")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_16","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_16")
reluLayer("Name","relu_2_3_16")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_16","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_17")
reluLayer("Name","relu_1_3_17")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_17","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_17")
reluLayer("Name","relu_2_3_17")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_17","Padding","same")];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
batchNormalizationLayer("Name","batchnorm_1_4_3")
reluLayer("Name","relu_1_4_3")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_4_3","Padding","same")
averagePooling3dLayer([2 2 1],"Name","avgpool3d_3","Padding","same","Stride",[2 2 1])
batchNormalizationLayer("Name","batchnorm_1_3_18")
reluLayer("Name","relu_1_3_18")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_18","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_18")
reluLayer("Name","relu_2_3_18")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_18","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_19")
reluLayer("Name","relu_1_3_19")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_19","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_19")
reluLayer("Name","relu_2_3_19")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_19","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_20")
reluLayer("Name","relu_1_3_20")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_20","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_20")
reluLayer("Name","relu_2_3_20")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_20","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_21")
reluLayer("Name","relu_1_3_21")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_21","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_21")
reluLayer("Name","relu_2_3_21")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_21","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_22")
reluLayer("Name","relu_1_3_22")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_22","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_22")
reluLayer("Name","relu_2_3_22")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_22","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_23")
reluLayer("Name","relu_1_3_23")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_23","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_23")
reluLayer("Name","relu_2_3_23")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_23","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_24")
reluLayer("Name","relu_1_3_24")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_24","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_24")
reluLayer("Name","relu_2_3_24")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_24","Padding","same")
batchNormalizationLayer("Name","batchnorm_1_3_25")
reluLayer("Name","relu_1_3_25")
convolution3dLayer([1 1 1],128,"Name","conv3d_2_3_25","Padding","same")
batchNormalizationLayer("Name","batchnorm_2_3_25")
reluLayer("Name","relu_2_3_25")
convolution3dLayer([3 3 3],32,"Name","conv3d_3_3_25","Padding","same")
batchNormalizationLayer("Name","batchnorm_1")
reluLayer("Name","relu_1")
transposedConv3dLayer([2 2 1],504,"Name","transposed-conv3d_1","Cropping","same","Stride",[2 2 1])];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(4,2,"Name","concat_1")
batchNormalizationLayer("Name","batchnorm_2_3_26")
reluLayer("Name","relu_2_3_26")
convolution3dLayer([1 1 1],504,"Name","conv3d_3_3_26","Padding","same")
batchNormalizationLayer("Name","batchnorm_2")
reluLayer("Name","relu_2")
transposedConv3dLayer([2 2 1],224,"Name","transposed-conv3d_2","Cropping","same","Stride",[2 2 1])];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(4,2,"Name","concat_2")
batchNormalizationLayer("Name","batchnorm_2_3_27")
reluLayer("Name","relu_2_3_27")
convolution3dLayer([1 1 1],224,"Name","conv3d_3_3_27","Padding","same")
batchNormalizationLayer("Name","batchnorm_3")
reluLayer("Name","relu_3")
transposedConv3dLayer([2 2 1],192,"Name","transposed-conv3d_3","Cropping","same","Stride",[2 2 1])];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(4,2,"Name","concat_3")
batchNormalizationLayer("Name","batchnorm_2_3_28")
reluLayer("Name","relu_2_3_28")
convolution3dLayer([1 1 1],192,"Name","conv3d_3_3_28","Padding","same")
batchNormalizationLayer("Name","batchnorm_4")
reluLayer("Name","relu_4")
transposedConv3dLayer([2 2 2],96,"Name","transposed-conv3d_4","Cropping","same","Stride",[2 2 2])];
lgraph = addLayers(lgraph,tempLayers);
tempLayers = [
concatenationLayer(4,2,"Name","concat_4")
batchNormalizationLayer("Name","batchnorm_2_3_29")
reluLayer("Name","relu_2_3_29")
convolution3dLayer([1 1 1],96,"Name","conv3d_3_3_29","Padding","same")
batchNormalizationLayer("Name","batchnorm_5")
reluLayer("Name","relu_5")
transposedConv3dLayer([2 2 2],64,"Name","transposed-conv3d_5","Cropping","same","Stride",[2 2 2])
batchNormalizationLayer("Name","batchnorm_2_3_30")
reluLayer("Name","relu_2_3_30")
convolution3dLayer([1 1 1],3,"Name","conv3d_3_3_30","Padding","same")
softmaxLayer("Name","softmax")
dicePixelClassificationLayer("Name","dice-pixel-class")];
lgraph = addLayers(lgraph,tempLayers);
% clean up helper variable
clear tempLayers;
%% Connect Layer Branches
% Connect all the branches of the network to create the network graph.
lgraph = connectLayers(lgraph,"conv3d_1","maxpool3d");
lgraph = connectLayers(lgraph,"conv3d_1","concat_4/in2");
lgraph = connectLayers(lgraph,"conv3d_3_3_1","batchnorm_1_4_1");
lgraph = connectLayers(lgraph,"conv3d_3_3_1","concat_3/in2");
lgraph = connectLayers(lgraph,"conv3d_3_3_5","batchnorm_1_4_2");
lgraph = connectLayers(lgraph,"conv3d_3_3_5","concat_2/in2");
lgraph = connectLayers(lgraph,"conv3d_3_3_17","batchnorm_1_4_3");
lgraph = connectLayers(lgraph,"conv3d_3_3_17","concat_1/in1");
lgraph = connectLayers(lgraph,"transposed-conv3d_1","concat_1/in2");
lgraph = connectLayers(lgraph,"transposed-conv3d_2","concat_2/in1");
lgraph = connectLayers(lgraph,"transposed-conv3d_3","concat_3/in1");
lgraph = connectLayers(lgraph,"transposed-conv3d_4","concat_4/in1");
%% Plot Layers
plot(lgraph);