情報詳細Q:OK品に対してヒートマップを求めるとランダムな個所に出てくるためどこを見てOKと判断しているのかわかりません。また、ある品種を学習させたモデルで全く異なる背景の画像を見せた場合にOK品としてヒートマップが算出されます。A:デフォルトでは下記のようなヒートマップが求まります。1.得られるヒートマップは判定されたクラスに対するものである OKと判定されるとOKクラスに対してのヒートマップが求まります。 gen_dl_model_heatmapのパラメータ TargetClassesが[] ですと判定されたクラスに対するヒートマップが求まります。2.得られたヒートマップは[0-1]に正規化される。ヒートマップの値の最小値を0、最大値を1として 0に近いものを青色、1に近いものを赤くする、その中間を緑色になります。ここで、2は絶対値の情報は失われているので仮に画像全体のヒートマップの絶対値が小さい値だとしても最も高い部分が赤くなります。例)最小値0.0001最大値0.001のようなケースでも最大値0.001の方が赤く表示される。したがって、OK品に対してよくわからない部分が赤くなってしまいます。これを阻止するためには、gen_dl_model_heatmapのパラメータGenParam[サンプルのディクショナリ変数名:HeatmapParam]に対して'scaling', 'none' という値を渡してあげる必要があります。参考までに学習モデルに対して全く異なる物(ティッシュ箱を学習したネットワークでスマホケースを映したぐらいかけ離れた物)を映したときのヒートマップを添付します。(学習していない画像良品認定_heatmap_default_after_relu.png)この例だとティッシュ箱の欠陥の特徴量はスマホケースには見当たらないため、良品側に分類されていますが、heatmapがデフォルトのset_dict_tuple (HeatmapParam, 'scaling', 'scale_after_relu')だと、赤色に見える部分があり、'none'だと、全く赤色には見ません。実際に正規化されていないとヒートマップは最大値が0.008となり全く見当違いのワークに対してヒートマップはほとんど反応していないことがわかります。 したがって、OK品に対してヒートマップの意味を持たせるのだとするとnoneで出力したときの絶対値で見た方が適切です。[0-1]にスケーリングしないと濃淡は視覚化されませんが、その分正確なヒートマップの値として確認することができます。 添付ファイルヒートマップnone.zipタイトルgen_dl_model_heatmapのパラメータの意味と出力結果についてURL 名000005910公開状況公開済み検証状況公開済み