NVIDIA DIGITS 4の物体検出トレーニングのグラフが変?

digits
DIGITS 4の物体検出トレーニング時のグラフ表示が変なので、暫定処置を行ってみました。

スポンサーリンク

現象

DIGITS 4の物体検出トレーニング時のmAP (val)、precision (val)、recall (val)が、以下の図のように表示されます。

digits4-graph-1
本当に、mAP (val)等の値が0.2%以下になっている訳ではなく、ポップアップされた数値を見てわかるように、プロットが右側のスケール(y2軸)ではなく、左側のスケール(y軸)に対応しています。

暫定処置

暫定処置として、/usr/share/digits/digits/static/js/model-graphs.jsの右側のスケール(y2軸)の設定を、左側のスケール(y軸)にコピーします。

但し、このままだと、Classficationで問題が発生するので、オリジナルと暫定処置のファイルを切り替えるようにします。

/usr/share/digits/digits/static/jsディレクトリに移動し、オリジナルファイル(model-graphs.js)をmodel-graphs_orig.jsにリネームします。

$ cd /usr/share/digits/digits/static/js
$ sudo mv model-graphs.js model-graphs_orig.js

次に、model-graphs_orig.jsを暫定処置ファイル(model-graphs_tmp.js)のベースとするため、コピーします。

$ sudo cp model-graphs_orig.js model-graphs_tmp.js

model-graphs_tmp.jsをgeditで開き、

$ sudo gedit model-graphs_tmp.js

model-graphs_tmp.jsのy:y2:

                y: {
                    label: {
                        text: 'Loss',
                        position: 'outer-middle',
                    },
                    min: 0,
                    padding: {bottom: 0},
                },
                y2: {
                    show: true,
                    label: {
                        text: 'Accuracy (%)',
                        position: 'outer-middle',
                    },
                    min: 0,
                    max: 100,
                    padding: {top: 0, bottom: 0},
                },

以下のように変更して、ファイルを保存します。

                y: {
                    label: {
                        text: 'Loss',
                        position: 'outer-middle',
                    },
                    min: 0,
                    max: 100,
                    padding: {top: 0, bottom: 0},
                },
                y2: {
                    show: true,
                    label: {
                        text: 'Accuracy (%)',
                        position: 'outer-middle',
                    },
                    min: 0,
                    max: 100,
                    padding: {top: 0, bottom: 0},
                    default: [0, 100]
                },

次に、ホームディレクトリに移動し、gedit等のエディタでdigits4-graph.shファイルを新規作成します。

$ cd ~
$ gedit digits4-graph.sh

そして、以下の内容をコピー・ペーストして、ファイルを保存します。

#!/bin/bash

DIR1="/usr/share/digits/digits/static/js"

if [ "$1" == "state" ]; then
  FILE1="$(command readlink ${DIR1}/model-graphs.js)"
  # echo "ln -s $FILE1"
  if [ "$FILE1" == "${DIR1}/model-graphs_orig.js" ]; then
    echo "link orig"
  elif [ "$FILE1" == "${DIR1}/model-graphs_tmp.js" ]; then
    echo "link tmp"
  else
    echo "link unknown"
  fi
fi

if [ "$1" == "orig" ]; then
  sudo ln -sf "${DIR1}/model-graphs_orig.js" "${DIR1}/model-graphs.js"
  echo "ln -sf model-graphs_orig.js model-graphs.js"
fi

if [ "$1" == "tmp" ]; then
  sudo ln -sf "${DIR1}/model-graphs_tmp.js" "${DIR1}/model-graphs.js"
  echo "ln -sf model-graphs_tmp.js model-graphs.js"
fi

以下のコマンドを実行して、digits4-graph.shファイルを実行できるようにします。

$ chmod 755 digits4-graph.sh

digits4-graph.shファイルの使い方は、model-graphs.jsのリンク状況を確認する場合、

$ ./digits4-graph.sh state
link [orig/tmp/unknown]

オリジナルファイルをmodel-graphs.jsにリンクさせる場合、

$ ./digits4-graph.sh orig
ln -sf model-graphs_orig.js model-graphs.js

暫定処置ファイルをmodel-graphs.jsにリンクさせる場合、

$ ./digits4-graph.sh tmp
ln -sf model-graphs_tmp.js model-graphs.js

暫定処置ファイルをmodel-graphs.jsにリンクさせた後、ブラウザでページの再読み込みを行うと、グラフの表示が以下のように変更されます。

digits4-graph-2

まとめ

DIGITS 4の物体検出トレーニング時のグラフ表示が変なので、暫定処置を行いました。