回答編集履歴

3

d

2020/09/11 07:56

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- [Pytorch - 事前学習モデルを使ってクラス分類モデルを学習する方法 - pystyle](https://pystyle.info/pytorch-train-classification-problem-using-a-pretrained-model/#outline__3)
71
+ [転移学習方法](https://pystyle.info/pytorch-train-classification-problem-using-a-pretrained-model/#outline__3)
72
72
 
73
73
 
74
74
 

2

d

2020/09/11 07:56

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -50,6 +50,14 @@
50
50
 
51
51
 
52
52
 
53
+ 論文だと「2.4. Feature Extractor」に記載があります。
54
+
55
+
56
+
57
+ [https://pjreddie.com/media/files/papers/YOLOv3.pdf](https://pjreddie.com/media/files/papers/YOLOv3.pdf)
58
+
59
+
60
+
53
61
  > fine-tuningは通常CNNの下から何層かを解凍して、その解凍した層のみを再学習させるという認識でしたが、今回のようなオリジナルデータを検出したい場合はすべての層を解凍して学習させているということですか?
54
62
 
55
63
 

1

d

2020/09/11 07:52

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -29,3 +29,45 @@
29
29
 
30
30
 
31
31
  自作のデータセットを学習するのになぜ MSCOCO の重みを最初に変換して使うのかというと、モデルをゼロから学習するのは大変なので、既存の学習済みの重みを初期値として使う「fine-tuning」という転移学習手法を使うためです。
32
+
33
+
34
+
35
+ ## 追記
36
+
37
+
38
+
39
+ > darknet53がYolov3の一部というのは、どの部分のことでしょうか
40
+
41
+
42
+
43
+ 特徴抽出器として darknet53 を使っているということです。
44
+
45
+ keras-yolov3 だと以下の `darknet_body()` で作ってる部分
46
+
47
+
48
+
49
+ [keras-yolo3/model.py at master · qqwweee/keras-yolo3](https://github.com/qqwweee/keras-yolo3/blob/master/yolo3/model.py#L46)
50
+
51
+
52
+
53
+ > fine-tuningは通常CNNの下から何層かを解凍して、その解凍した層のみを再学習させるという認識でしたが、今回のようなオリジナルデータを検出したい場合はすべての層を解凍して学習させているということですか?
54
+
55
+
56
+
57
+ 途中の層をフリーズする場合もしない場合も自分は fine-tuning と認識していましたが、どうなのでしょう。
58
+
59
+ 言葉の定義の問題はおいといて、今回のケースでは全部の層のパラメータを調整しています。
60
+
61
+
62
+
63
+ [Pytorch - 事前学習モデルを使ってクラス分類モデルを学習する方法 - pystyle](https://pystyle.info/pytorch-train-classification-problem-using-a-pretrained-model/#outline__3)
64
+
65
+
66
+
67
+ > MSCOCOのような既存のモデルの重みを初期値として使う理由は何でしょうか
68
+
69
+
70
+
71
+ 特徴抽出部分は学習する題材がなんであっても使い回せるものなので、潤沢な計算リソースと大量のデータが用意できるのであればゼロから学習してもよいですが、
72
+
73
+ そうでないなら、物体検出に限らず、学習済みモデルを使って重みを初期化するのが一般的です。