Open kawase621 opened 3 years ago
@kawase621 さま
ご質問ありがとうございます。
第4章の姿勢推定では、以下のリポジトリを参考にしています。 原著および、以下のリポジトリから回答が見つかればと思います。
https://github.com/tensorboy/pytorch_Realtime_Multi-Person_Pose_Estimation
本書ではきちんとOpenPoseの学習をやり切るところまで実施していないので(感覚を体験していただくに留まっており)、 なんとも確実なことは言えないのですが、
softmaxなどで0-1に閉じ込めると、1付近と0付近は勾配がとても小さくなります。
すると、softmax手前の値がある程度以上(もしくは以下)であれば、softmax計算後の値はほぼ同じになり、ここらへんでの値が鈍感になるというデメリットがあります。
このデメリットが個人的には気になるところです。
回答になっておらず、大変申し訳ございませんが、どうぞ宜しくお願い致します
なるほど…正規化すると表現力が劣る場合もあるんですね。 回答頂きありがとうございました!!
OpenPoseLossクラスの引数となる教師データ(heatmap_target及びpaf_target)は、0から1の間の数値に正規化されているとの認識です。
一方で、ネットワークであるOpenPoseNetの出力は、そのような正規化はされていないと思います。
OpenPoseNetの出力で、0から1の間の数値に正規化されているheatmap_target及びpaf_targetの値を回帰するのであれば、OpenPoseNetの出力も正規化(例えば、softmax関数を挟むなど)したほうが学習の効率が良い、ということはありませんか?
狙い値が0から1の間にあると分かっているにも関わらず、OpenPoseNetの出力として大きな値が出てしまうと、学習の初期の二乗誤差はとても大きな値になるように思えます。
お忙しいところ恐れ入りますが、ご教示下さい。