質問編集履歴

5

修正

2023/01/30 11:47

投稿

harug
harug

スコア28

test CHANGED
File without changes
test CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  ### 試したこと
15
15
 
16
- 調べたところ,最後の畳み込み層(conv層)を指定するとよいとのことでしたので,最後から11層目の"conv5_block3_3_conv"をしていたのですが,その一つ手前のconv5_block3_outなどでもGradCAMは生成されるので,どの層を指定するべきなのかが分からなくなってしまいました.
16
+ 調べたところ,最後の畳み込み層(conv層)を指定するとよいとのことでしたので,最後から9層目の"conv5_block3_3_conv"を指定していたのですが,その一つ手前のconv5_block3_outなどでもGradCAMは生成されるので,どの層を指定するべきなのかが分からなくなってしまいました.
17
17
 
18
18
  ResNet50v2の場合はこのままconv5_block3_3_convを設定すればよいのでしょうか.
19
19
 

4

文の追加

2023/01/30 11:32

投稿

harug
harug

スコア28

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

画像の挿入

2023/01/30 11:28

投稿

harug
harug

スコア28

test CHANGED
@@ -1 +1 @@
1
- Grad-CAM生成時,ResNet50v2のどの層を指定するべきか
1
+ Grad-CAM生成時,モデルのどの層を指定するべきか
test CHANGED
@@ -1,96 +1,14 @@
1
1
  ### 実現したいこと
2
2
 
3
3
  GradCAMの実装についてです.
4
- ResNet50v2のどの層から特徴量の抽出を行えばよいのかが分かりません.
4
+ モデルのどの層から特徴量の抽出を行えばよいのかが分かりません.
5
5
 
6
- 以下に,現在使用しているmodelのアーキテクチャをお見せします.
6
+ 以下に,現在使用しているモデルのアーキテクチャをお見せします.
7
- とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で途中省略しています)
7
+ とても長いですが,注目すべきは最後の方の層だと思います.(文字数の関係で最初の方は省略しています)
8
8
 
9
- ### ResNet50v2のsummary
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の追加

2023/01/28 18:53

投稿

harug
harug

スコア28

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

本文追加

2023/01/28 18:46

投稿

harug
harug

スコア28

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
+