オッサンはDesktopが好き

自作PCや機械学習、自転車のことを脈絡無く書きます

Deep Learningによる傷位置検出、学習効果の確認

前回構築した*1損失関数で傷位置検出ができるか、
確かめてみます

先ず、損失値と評価値を出力します

def write_log(msg):
    os.makedirs('./log', exist_ok=True)
    file = open('./log/trainingLog.txt', mode='a')
    file.write(msg + '\n')
    file.close()

tensorflowにはtensorboardという結果可視化ツールがありますが、
個人的には訳のわからないバイナリを吐かれるのが嫌いです
tensorboardも将来的には使いこなしていく必要があると思いますが、
今回は原始的にテキストで出力しました

更に、学習済みモデルにテスト用画像を適用した結果も出力します

def write_model(W_conv1, b_conv1, W_conv2, b_conv2, W_fc1, b_fc1, W_fc2, b_fc2, output, label):
    output_np = np.zeros([TEST_DATA_SIZE, OUTPUT_SIZE])
    for k in range(TEST_DATA_SIZE): 
        for j in range(OUTPUT_SIZE):
            output_np[k, j] = output[k, j]
    np.savetxt('./model/output.txt', output_np)

ニューラルネットワークのパラメタ等もまとめて出力したために引数が多くなっています
今回みるのは、outputのみです

出力した結果を、画像と並べて表示します
とりあえず、100回バッチ計算を回した結果をみてみました

import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np

TEST_DATA_SIZE = 50
IMG_SIZE = 64
OUTPUT_SIZE = 16*16

from PIL import Image

if __name__=='__main__':

    data = np.loadtxt('./model/output.txt')

    for k in range(TEST_DATA_SIZE):
            
            plt.figure(figsize=(8, 4))
            filename = './data/Class1_def/' + str(1 + k)  + '.png'
            im = Image.open(filename)
            plt.subplot(1, 2, 1)
            plt.imshow(im)
            plt.xticks(color='None')
            plt.yticks(color='None')

            plt.subplot(1, 2, 2)
            for i in range(16):
                for j in range(16):
                    plt.plot(i*32 + 0.5, j*32 + 0.5, '.', color=cm.jet(data[k, i*16 + j]))
            plt.xlim(0, 512)
            plt.ylim(512, 0)
            plt.xticks(color='None')
            plt.yticks(color='None')
            #plt.show()
            filename = './test/result_' + str(1 + k) + '.png'
            plt.savefig(filename)

f:id:changlikesdesktop:20190308053250p:plain:w400
f:id:changlikesdesktop:20190308053344p:plain:w400
f:id:changlikesdesktop:20190308053424p:plain:w400
f:id:changlikesdesktop:20190308053405p:plain:w400
f:id:changlikesdesktop:20190308054136p:plain:w200

損失値は一応減っていきますが、、、
ダメそうですね(泣)

50枚の画像をテストに使っていますが、
ほぼ全ての画像からの出力が同じ値になりました
学習回数を増やしたら、全て同じになってしまう気がします
何か間違っているんだな、、、