In [1]:
import pandas as pd
import numpy as np
import cv2
import tifffile as tif
import matplotlib.pyplot as plt
from importlib import reload
import os, gc, time, pdb
import dilated_nets
import utils
import global_vars
In [2]:
def get_patches_test(im, label_edge, buff):
ptch = list()
shp = im.shape
num_seg_y = shp[0] // label_edge
num_seg_x = shp[1] // label_edge
im = np.pad(im,((buff,buff), (buff, buff), (0,0)), mode='reflect')
for i in range(0,num_seg_y*label_edge, label_edge):
for j in range(0,num_seg_x*label_edge, label_edge):
tmp = im[i: (i+label_edge+2*buff), j: (j+label_edge+2*buff), :]
ptch.append(tmp)
tmp = im[-(label_edge + 2*buff):, -(label_edge + 2*buff):, :]
ptch.append(tmp)
for i in range(0,num_seg_y*label_edge , label_edge):
tmp = im[i:i + label_edge + 2*buff, -(label_edge + 2*buff):, :]
ptch.append(tmp)
for j in range(0,num_seg_x*label_edge, label_edge):
tmp = im[-(label_edge + 2*buff):, j:j + label_edge + 2*buff, :]
ptch.append(tmp)
return ptch
In [3]:
def reconstruct_im(preds_test, preds_mask, label_edge):
shp = preds_mask.shape
num_seg_y = shp[0] // label_edge
num_seg_x = shp[1] // label_edge
counter = 0
for i in range(0,num_seg_y*label_edge , label_edge):
for j in range(0,num_seg_x*label_edge, label_edge):
preds_mask[i:i + label_edge, j:j+ label_edge, :] = preds_test[counter,:,:,:]
counter += 1
preds_mask[-label_edge:, -label_edge:, :] = preds_test[counter,:,:,:]
counter +=1
for i in range(0,num_seg_y*label_edge , label_edge):
preds_mask[i:i + label_edge, -label_edge:] = preds_test[counter, :,:,:]
counter += 1
for j in range(0,num_seg_x*label_edge, label_edge):
preds_mask[-label_edge:, j:j + label_edge ] = preds_test[counter, :,:,:]
counter += 1
return preds_mask
In [4]:
ssubm = pd.read_csv(os.path.join(global_vars.DATA_DIR, 'sample_submission.csv'))
test_names = ssubm['ImageId'].unique()
train_names = utils.load_train_names()
In [5]:
dilated_nets = reload(dilated_nets)
model = dilated_nets.atr_tiny_top(72,48, 8,9)
In [6]:
model.load_weights('/media/d/ssd2/dstl/weights/196__dilated16x16_new_[0.67701916252661465, 0.010214600318620561, 0.77229527405285769, 0.24176935810189443, 0.59955639624761159, 0.92014752128027399, 0.84108460614381331, 0.0]')
In [7]:
for name in train_names:
im_m = utils.load_m(name).astype(np.float64)
im_m = ((im_m/((2.0**11)-1)) - 0.5)*2
im_m = cv2.resize(im_m, (835, 835), interpolation=0)
shp = im_m.shape
patches = get_patches_test(im_m, 48,72)
del im_m
x_test = np.array(patches).astype(np.float32)
del patches
gc.collect()
preds = model.predict(x_test)
gc.collect()
pred_mask = np.zeros((shp[0],shp[1], 9))
pred_mask = reconstruct_im(preds, pred_mask, 48)
tif.imsave(file=os.path.join(global_vars.DATA_DIR, 'bin_masks','train_16x16', name+'.tif'), data=pred_mask)
gc.collect()
print(name)
#break
In [8]:
%%time
for name in test_names:
im_m = utils.load_m(name).astype(np.float64)
im_m = ((im_m/((2.0**11)-1)) - 0.5)*2
im_m = cv2.resize(im_m, (835, 835), interpolation=0)
shp = im_m.shape
patches = get_patches_test(im_m, 48,72)
del im_m
x_test = np.array(patches).astype(np.float32)
del patches
gc.collect()
preds = model.predict(x_test)
gc.collect()
pred_mask = np.zeros((shp[0],shp[1], 9))
pred_mask = reconstruct_im(preds, pred_mask, 48)
tif.imsave(file=os.path.join(global_vars.DATA_DIR, 'bin_masks','test_16x16', name+'.tif'), data=pred_mask)
gc.collect()
print(name)
#break
In [ ]: