ただいま、YOLOv2を用いて、物体検出を試みています。そこで、YOLOv2での損失関数の係数の設定について質問があります。
こちらのドキュメント(Training Loss)のように、損失関数には、複数の係数があると存じます。
これらは、クラス確率やバウンディングボックスの情報および信頼度の損失に対応していると思いますが、それらの値を変更することは可能でしょうか。
デフォルト設定では、[5 1 1 1]となっています。関数yolov2Layersで作成したlgraphから直接変更することはできませんでした。
また、その係数が入っている最終層(下の例では150層目)のみを取り出し、変更し、replacelayerなどを行うのではないかと考えましたが、
取り出した層でも変更はできないようです。その[5 1 1 1]の値を他の値にする場合にはどのようにすれば良いでしょうか。現在、2019aを使用しています。
下は、YOLOv2ネットワークを作成するコードの例となっています。
last_layer.LossFactors=[1 1 1 1]
と、コードを打っても変更不可の項目である、とエラーが検出されます。
以上の件、アドバイス等いただけると幸いです。どうぞよろしくお願いいたします。
close all;clear;clc
network = resnet50();
featureLayer = 'activation_40_relu';
imageSize = network.Layers(1).InputSize
numClasses = 3;
anchorBoxes=[ 145 122;
81 76;
160 132;
41 34];
lgraph = yolov2Layers(imageSize, numClasses, round(anchorBoxes), ...
network, featureLayer);
analyzeNetwork(lgraph)
lgraph.Layers(150, 1).LossFactors
last_layer=lgraph.Layers(150);
last_layer.LossFactors=[1 1 1 1]