回答編集履歴
5
d
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
#
|
45
|
+
# 最初の畳み込み層だけ変更
|
46
46
|
|
47
47
|
model.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
|
48
48
|
|
4
d
test
CHANGED
@@ -11,3 +11,41 @@
|
|
11
11
|
|
12
12
|
|
13
13
|
3チャンネル → 1チャンネルで変わるのは最初の畳み込み層の重みの形状だけなので、それ以外の層は事前学習済みモデルの重みで初期化して最初の畳み込み層だけ転移学習するというアイデアもありますが、上手くいくかはやってみないとわかりません。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
## 追記
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
> Kerasの場合、ImageNetのパラメータを用いる時は上記のようにImageNetパラメータを選択しますので、1部分だけ用いることが可能なのか疑問に思いました。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
Keras / TensorFlow でもできるとは思いますが、自分は Pytorch しか使わないので具体的なやり方はわからないです。
|
26
|
+
|
27
|
+
Pytorch だと以下のように3チャンネルのモデルで事前学習済みの重みで初期化したあと、最初の畳み込み層だけ変えれば、1チャンネルを入力にするモデルができます。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
```python
|
32
|
+
|
33
|
+
import torch.nn as nn
|
34
|
+
|
35
|
+
import torchvision.models as models
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
# ResNet-18 を作成する。
|
40
|
+
|
41
|
+
model = models.resnet18(pretrained=True)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
# 入力層だけ変更
|
46
|
+
|
47
|
+
model.conv1 = nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
|
48
|
+
|
49
|
+
print(model)
|
50
|
+
|
51
|
+
```
|
3
修正
test
CHANGED
@@ -10,4 +10,4 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
3チャンネル → 1チャンネルで変わるのは最初の畳み込み層の重みの形状だけなので、それ以外の層は事前学習済みモデルの重みで初期化して
|
13
|
+
3チャンネル → 1チャンネルで変わるのは最初の畳み込み層の重みの形状だけなので、それ以外の層は事前学習済みモデルの重みで初期化して最初の畳み込み層だけ転移学習するというアイデアもありますが、上手くいくかはやってみないとわかりません。
|
2
修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
私の知る限り、ImageNet をグレースケール化して学習した事前学習済みが配布されているのは見たことないのですね。
|
6
6
|
|
7
|
-
なので、入力チャンネルが1チャンネルの事前学習済みモデルがネットに落ちていなければ、ImageNet の画像をグレースケール化して
|
7
|
+
なので、入力チャンネルが1チャンネルの事前学習済みモデルがネットに落ちていなければ、ImageNet の画像をグレースケール化して自分で学習が必要です。
|
8
8
|
|
9
9
|
計算リソースが限られていて ImageNet の学習が難しいようであれば、Grayscale -> RGB に変換して、RGB の学習済みモデルを使うのが無難かと思います。
|
10
10
|
|
1
修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
私の知る限り、ImageNet をグレースケール化して学習した事前学習済みが配布されているのは見たことないのですね。
|
6
6
|
|
7
|
-
なので、入力チャンネル
|
7
|
+
なので、入力チャンネルが1チャンネルの事前学習済みモデルがネットに落ちていなければ、ImageNet の画像をグレースケール化して事前で学習が必要です。
|
8
8
|
|
9
9
|
計算リソースが限られていて ImageNet の学習が難しいようであれば、Grayscale -> RGB に変換して、RGB の学習済みモデルを使うのが無難かと思います。
|
10
10
|
|