前提・実現したいこと
こちらの画像領域分割プログラムにおいて、
予測画像を入力する際に自分で用意した画像を使いたいのですが、このプログラムでは入力画像をどのように読み込んでいるのでしょうか?
このソースコードをそのまま実行すると、CamVid内のvalフォルダに格納されているサンプル画像に対してセグメント処理を行うようですが、プログラムの各行の意味がいまいち理解しきれず、これを自分で指定した画像に対して行うにはどうすればよいのかがわかりません。
大まかな処理の意味としては「予測画像のファイルパスとして、val.txtというtextファイル上の文字列を読み込んでいる」という認識でよろしいのでしょうか?もしその場合は、ファイルパスを直接参照して予測処理するように変更したいです。
該当のソースコード
predict
1import numpy as np 2import keras 3from PIL import Image 4 5from model import SegNet 6 7import dataset 8 9height = 176 10width = 240 11classes = 12 12epochs = 10 13batch_size = 1 14log_filepath='./logs_10/' 15 16data_shape = 176*240 17 18def writeImage(image, filename): 19 """ label data to colored image """ 20 Sky = [128,128,128] 21 Building = [128,0,0] 22 Pole = [192,192,128] 23 Road_marking = [255,69,0] 24 Road = [128,64,128] 25 Pavement = [60,40,222] 26 Tree = [128,128,0] 27 SignSymbol = [192,128,128] 28 Fence = [64,64,128] 29 Car = [64,0,128] 30 Pedestrian = [64,64,0] 31 Bicyclist = [0,128,192] 32 Unlabelled = [0,0,0] 33 r = image.copy() 34 g = image.copy() 35 b = image.copy() 36 label_colours = np.array([Sky, Building, Pole, Road_marking, Road, Pavement, Tree, SignSymbol, Fence, Car, Pedestrian, Bicyclist, Unlabelled]) 37 for l in range(0,12): 38 r[image==l] = label_colours[l,0] 39 g[image==l] = label_colours[l,1] 40 b[image==l] = label_colours[l,2] 41 rgb = np.zeros((image.shape[0], image.shape[1], 3)) 42 rgb[:,:,0] = r/1.0 43 rgb[:,:,1] = g/1.0 44 rgb[:,:,2] = b/1.0 45 im = Image.fromarray(np.uint8(rgb)) 46 im.save(filename) 47 48def predict(test): 49 model = keras.models.load_model('seg.h5') 50 probs = model.predict(test, batch_size=1) 51 52 prob = probs[0].reshape((height, width, classes)).argmax(axis=2) 53 return prob 54 55def main(): 56 print("loading data...") 57 ds = dataset.Dataset(test_file='val.txt', classes=classes) 58 test_X, test_y = ds.load_data('test') # need to implement, y shape is (None, 360, 480, classes) 59 test_X = ds.preprocess_inputs(test_X) 60 test_Y = ds.reshape_labels(test_y) 61 62 prob = predict(test_X) 63 writeImage(prob, 'val.png') 64 65 img = Image.open('val.png') 66 img.show() 67 68 69if __name__ == '__main__': 70 main()
エラーの出る画像
補足情報(FW/ツールのバージョンなど)
開発環境
- Windows7 (64bit)
- Spyder (Python 3.6)
- Keras 2.2.4
- Tensorflow 1.12.0
CPU : Intel(R) Core(TM) i7 970 @ 3.20GHz
メモリ(RAM) : 16.0 GB
GPU : NVIDIA GeForce GTX 570

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/20 00:34
2019/02/27 07:07
2019/02/27 07:18
2019/03/04 10:22