質問編集履歴
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
### 試したこと
|
15
15
|
|
16
|
-
調べたところ,最後の畳み込み層(conv層)を指定するとよいとのことでしたので,最後から
|
16
|
+
調べたところ,最後の畳み込み層(conv層)を指定するとよいとのことでしたので,最後から9層目の"conv5_block3_3_conv"を指定していたのですが,その一つ手前のconv5_block3_outなどでもGradCAMは生成されるので,どの層を指定するべきなのかが分からなくなってしまいました.
|
17
17
|
|
18
18
|
ResNet50v2の場合はこのままconv5_block3_3_convを設定すればよいのでしょうか.
|
19
19
|
|
4
文の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で最初の方は省略しています)
|
8
8
|
|
9
9
|
### modalのsummary
|
10
|
+
実際にはResNet50v2 + ArcFaceのモデルを構築し,写真はその最後の方を載せています.
|
10
11
|
※ArcfaceLayerは自作レイヤーになります.
|
11
12
|
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-30/18347a19-4d8d-4201-ab77-8b30c6cfc661.png)
|
12
13
|
|
3
画像の挿入
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Grad-CAM生成時,
|
1
|
+
Grad-CAM生成時,モデルのどの層を指定するべきか
|
test
CHANGED
@@ -1,96 +1,14 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
|
3
3
|
GradCAMの実装についてです.
|
4
|
-
|
4
|
+
モデルのどの層から特徴量の抽出を行えばよいのかが分かりません.
|
5
5
|
|
6
|
-
以下に,現在使用している
|
6
|
+
以下に,現在使用しているモデルのアーキテクチャをお見せします.
|
7
|
-
とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で
|
7
|
+
とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で最初の方は省略しています)
|
8
8
|
|
9
|
-
###
|
10
|
-
|
11
|
-
|
12
|
-
Model: "model_12"
|
13
|
-
__________________________________________________________________________________________________
|
14
|
-
Layer (type) Output Shape Param # Connected to
|
15
|
-
==================================================================================================
|
16
|
-
input_25 (InputLayer) [(None, 110, 110, 1 0 []
|
17
|
-
)]
|
18
|
-
|
19
|
-
conv2d_12 (Conv2D) (None, 110, 110, 3) 150 ['input_25[0][0]']
|
20
|
-
|
21
|
-
batch_normalization_24 (BatchN (None, 110, 110, 3) 12 ['conv2d_12[0][0]']
|
22
|
-
ormalization)
|
23
|
-
|
24
|
-
activation_12 (Activation) (None, 110, 110, 3) 0 ['batch_normalization_24[0][0]']
|
25
|
-
|
26
|
-
conv1_pad (ZeroPadding2D) (None, 116, 116, 3) 0 ['activation_12[0][0]']
|
27
|
-
|
28
|
-
conv1_conv (Conv2D) (None, 55, 55, 64) 9472 ['conv1_pad[0][0]']
|
29
|
-
|
30
|
-
pool1_pad (ZeroPadding2D) (None, 57, 57, 64) 0 ['conv1_conv[0][0]']
|
31
|
-
|
32
|
-
pool1_pool (MaxPooling2D) (None, 28, 28, 64) 0 ['pool1_pad[0][0]']
|
33
|
-
|
34
|
-
|
35
|
-
・
|
36
|
-
・ (文字数の関係で省略)
|
37
|
-
・
|
38
|
-
|
39
|
-
conv5_block3_preact_bn (BatchN (None, 4, 4, 2048) 8192 ['conv5_block2_out[0][0]']
|
40
|
-
ormalization)
|
41
|
-
|
42
|
-
conv5_block3_preact_relu (Acti (None, 4, 4, 2048) 0 ['conv5_block3_preact_bn[0][0]']
|
43
|
-
vation)
|
44
|
-
|
45
|
-
conv5_block3_1_conv (Conv2D) (None, 4, 4, 512) 1048576 ['conv5_block3_preact_relu[0][0]'
|
46
|
-
]
|
47
|
-
|
48
|
-
conv5_block3_1_bn (BatchNormal (None, 4, 4, 512) 2048 ['conv5_block3_1_conv[0][0]']
|
49
|
-
ization)
|
50
|
-
|
51
|
-
conv5_block3_1_relu (Activatio (None, 4, 4, 512) 0 ['conv5_block3_1_bn[0][0]']
|
52
|
-
n)
|
53
|
-
|
54
|
-
conv5_block3_2_pad (ZeroPaddin (None, 6, 6, 512) 0 ['conv5_block3_1_relu[0][0]']
|
55
|
-
g2D)
|
56
|
-
|
57
|
-
conv5_block3_2_conv (Conv2D) (None, 4, 4, 512) 2359296 ['conv5_block3_2_pad[0][0]']
|
58
|
-
|
59
|
-
conv5_block3_2_bn (BatchNormal (None, 4, 4, 512) 2048 ['conv5_block3_2_conv[0][0]']
|
60
|
-
ization)
|
61
|
-
|
62
|
-
conv5_block3_2_relu (Activatio (None, 4, 4, 512) 0 ['conv5_block3_2_bn[0][0]']
|
63
|
-
n)
|
64
|
-
|
65
|
-
conv5_block3_3_conv (Conv2D) (None, 4, 4, 2048) 1050624 ['conv5_block3_2_relu[0][0]']
|
66
|
-
|
67
|
-
conv5_block3_out (Add) (None, 4, 4, 2048) 0 ['conv5_block2_out[0][0]',
|
68
|
-
'conv5_block3_3_conv[0][0]']
|
69
|
-
|
70
|
-
post_bn (BatchNormalization) (None, 4, 4, 2048) 8192 ['conv5_block3_out[0][0]']
|
71
|
-
|
72
|
-
post_relu (Activation) (None, 4, 4, 2048) 0 ['post_bn[0][0]']
|
73
|
-
|
74
|
-
flatten_12 (Flatten) (None, 32768) 0 ['post_relu[0][0]']
|
75
|
-
|
76
|
-
hidden (Dense) (None, 512) 16777728 ['flatten_12[0][0]']
|
77
|
-
|
78
|
-
batch_normalization_25 (BatchN (None, 512) 2048 ['hidden[0][0]']
|
79
|
-
ormalization)
|
80
|
-
|
81
|
-
input_26 (InputLayer) [(None, 29)] 0 []
|
82
|
-
|
83
|
-
arcfacelayer_12 (Arcfacelayer) (None, 29) 14848 ['batch_normalization_25[0][0]',
|
84
|
-
'input_26[0][0]']
|
85
|
-
|
86
|
-
dense_12 (Dense) (None, 29) 870 ['arcfacelayer_12[0][0]']
|
87
|
-
|
88
|
-
==================================================================================================
|
89
|
-
Total params: 40,360,456
|
90
|
-
Trainable params: 40,313,986
|
91
|
-
Non-trainable params: 46,470
|
92
|
-
__________________________________________________________________________________________________
|
93
|
-
```
|
9
|
+
### modalのsummary
|
10
|
+
※ArcfaceLayerは自作レイヤーになります.
|
11
|
+
![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-01-30/18347a19-4d8d-4201-ab77-8b30c6cfc661.png)
|
94
12
|
|
95
13
|
### 試したこと
|
96
14
|
|
2
summaryの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,10 +4,93 @@
|
|
4
4
|
ResNet50v2のどの層から特徴量の抽出を行えばよいのかが分かりません.
|
5
5
|
|
6
6
|
以下に,現在使用しているmodelのアーキテクチャをお見せします.
|
7
|
-
とても長いですが,注目すべきは最後の方の層だと思います.(
|
7
|
+
とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で途中省略しています)
|
8
8
|
|
9
9
|
### ResNet50v2のsummary
|
10
10
|
|
11
|
+
```
|
12
|
+
Model: "model_12"
|
13
|
+
__________________________________________________________________________________________________
|
14
|
+
Layer (type) Output Shape Param # Connected to
|
15
|
+
==================================================================================================
|
16
|
+
input_25 (InputLayer) [(None, 110, 110, 1 0 []
|
17
|
+
)]
|
18
|
+
|
19
|
+
conv2d_12 (Conv2D) (None, 110, 110, 3) 150 ['input_25[0][0]']
|
20
|
+
|
21
|
+
batch_normalization_24 (BatchN (None, 110, 110, 3) 12 ['conv2d_12[0][0]']
|
22
|
+
ormalization)
|
23
|
+
|
24
|
+
activation_12 (Activation) (None, 110, 110, 3) 0 ['batch_normalization_24[0][0]']
|
25
|
+
|
26
|
+
conv1_pad (ZeroPadding2D) (None, 116, 116, 3) 0 ['activation_12[0][0]']
|
27
|
+
|
28
|
+
conv1_conv (Conv2D) (None, 55, 55, 64) 9472 ['conv1_pad[0][0]']
|
29
|
+
|
30
|
+
pool1_pad (ZeroPadding2D) (None, 57, 57, 64) 0 ['conv1_conv[0][0]']
|
31
|
+
|
32
|
+
pool1_pool (MaxPooling2D) (None, 28, 28, 64) 0 ['pool1_pad[0][0]']
|
33
|
+
|
34
|
+
|
35
|
+
・
|
36
|
+
・ (文字数の関係で省略)
|
37
|
+
・
|
38
|
+
|
39
|
+
conv5_block3_preact_bn (BatchN (None, 4, 4, 2048) 8192 ['conv5_block2_out[0][0]']
|
40
|
+
ormalization)
|
41
|
+
|
42
|
+
conv5_block3_preact_relu (Acti (None, 4, 4, 2048) 0 ['conv5_block3_preact_bn[0][0]']
|
43
|
+
vation)
|
44
|
+
|
45
|
+
conv5_block3_1_conv (Conv2D) (None, 4, 4, 512) 1048576 ['conv5_block3_preact_relu[0][0]'
|
46
|
+
]
|
47
|
+
|
48
|
+
conv5_block3_1_bn (BatchNormal (None, 4, 4, 512) 2048 ['conv5_block3_1_conv[0][0]']
|
49
|
+
ization)
|
50
|
+
|
51
|
+
conv5_block3_1_relu (Activatio (None, 4, 4, 512) 0 ['conv5_block3_1_bn[0][0]']
|
52
|
+
n)
|
53
|
+
|
54
|
+
conv5_block3_2_pad (ZeroPaddin (None, 6, 6, 512) 0 ['conv5_block3_1_relu[0][0]']
|
55
|
+
g2D)
|
56
|
+
|
57
|
+
conv5_block3_2_conv (Conv2D) (None, 4, 4, 512) 2359296 ['conv5_block3_2_pad[0][0]']
|
58
|
+
|
59
|
+
conv5_block3_2_bn (BatchNormal (None, 4, 4, 512) 2048 ['conv5_block3_2_conv[0][0]']
|
60
|
+
ization)
|
61
|
+
|
62
|
+
conv5_block3_2_relu (Activatio (None, 4, 4, 512) 0 ['conv5_block3_2_bn[0][0]']
|
63
|
+
n)
|
64
|
+
|
65
|
+
conv5_block3_3_conv (Conv2D) (None, 4, 4, 2048) 1050624 ['conv5_block3_2_relu[0][0]']
|
66
|
+
|
67
|
+
conv5_block3_out (Add) (None, 4, 4, 2048) 0 ['conv5_block2_out[0][0]',
|
68
|
+
'conv5_block3_3_conv[0][0]']
|
69
|
+
|
70
|
+
post_bn (BatchNormalization) (None, 4, 4, 2048) 8192 ['conv5_block3_out[0][0]']
|
71
|
+
|
72
|
+
post_relu (Activation) (None, 4, 4, 2048) 0 ['post_bn[0][0]']
|
73
|
+
|
74
|
+
flatten_12 (Flatten) (None, 32768) 0 ['post_relu[0][0]']
|
75
|
+
|
76
|
+
hidden (Dense) (None, 512) 16777728 ['flatten_12[0][0]']
|
77
|
+
|
78
|
+
batch_normalization_25 (BatchN (None, 512) 2048 ['hidden[0][0]']
|
79
|
+
ormalization)
|
80
|
+
|
81
|
+
input_26 (InputLayer) [(None, 29)] 0 []
|
82
|
+
|
83
|
+
arcfacelayer_12 (Arcfacelayer) (None, 29) 14848 ['batch_normalization_25[0][0]',
|
84
|
+
'input_26[0][0]']
|
85
|
+
|
86
|
+
dense_12 (Dense) (None, 29) 870 ['arcfacelayer_12[0][0]']
|
87
|
+
|
88
|
+
==================================================================================================
|
89
|
+
Total params: 40,360,456
|
90
|
+
Trainable params: 40,313,986
|
91
|
+
Non-trainable params: 46,470
|
92
|
+
__________________________________________________________________________________________________
|
93
|
+
```
|
11
94
|
|
12
95
|
### 試したこと
|
13
96
|
|
1
本文追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1 +1,17 @@
|
|
1
|
+
### 実現したいこと
|
2
|
+
|
3
|
+
GradCAMの実装についてです.
|
4
|
+
ResNet50v2のどの層から特徴量の抽出を行えばよいのかが分かりません.
|
5
|
+
|
6
|
+
以下に,現在使用しているmodelのアーキテクチャをお見せします.
|
7
|
+
とても長いですが,注目すべきは最後の方の層だと思います.(念のため全て載せます)
|
8
|
+
|
9
|
+
### ResNet50v2のsummary
|
10
|
+
|
11
|
+
|
12
|
+
### 試したこと
|
13
|
+
|
14
|
+
調べたところ,最後の畳み込み層(conv層)を指定するとよいとのことでしたので,最後から11層目の"conv5_block3_3_conv"をしていたのですが,その一つ手前のconv5_block3_outなどでもGradCAMは生成されるので,どの層を指定するべきなのかが分からなくなってしまいました.
|
15
|
+
|
1
|
-
|
16
|
+
ResNet50v2の場合はこのままconv5_block3_3_convを設定すればよいのでしょうか.
|
17
|
+
|