рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рд╕рд┐рдЦрд╛рдиреЗ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдПрдХ рдЕрдкреНрд░рд┐рдп рдШрдЯрдирд╛ рд╣реИ - рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВред рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдорд╛рд░реНрдХрдЕрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбрд┐рдЬрд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЪрд┐рдиреНрд╣рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рдордп рдФрд░ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ!
рдПрдХ рдмрдбрд╝реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирдХрд▓реА рдорд╛рд╕реНрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИред рдЖрдк рдЙрди рд╕рднреА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк
рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рд╕реЗ рд╕рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рд╣реИред
рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдпреВ-рдиреЗрдЯ рдХреЗ рд▓рд┐рдП, рдПрд▓рд┐рдкреНрд╕ рдФрд░ рдкреЙрд▓реАрдЧреЛрди рдкрд░, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд┐рд░ рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдРрд╕рд╛ рд▓реЗрдЧреЛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдареЛрд╕, рдЙрдкрдпреЛрдЧреА рдФрд░ рдкреНрд░рднрд╛рд╡реА рд╣реИред рд╣рдо рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирддреА рд╣реИ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рднреА рдЭреВрда рдХреЛ рдвреВрдВрдврддреА рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИ!
рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рд╣рдо рдЪрд┐рддреНрд░ / рдореБрдЦреМрдЯрд╛ рдЬреЛрдбрд╝реЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдиреЗ рдЧрдП рд╡рд┐рднрд┐рдиреНрди рддрд┐рдорд╛рд╣рд┐рдпреЛрдВ рдореЗрдВ рддрд╕реНрд╡реАрд░ рдореЗрдВ, рд╣рдо рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрддреБрд░реНрднреБрдЬ рднреА рд░рдЦреЗрдВрдЧреЗ, рдФрд░ рдПрдХ рд╣реА рд░рдВрдЧ рдореЗрдВ рджреЛрдиреЛрдВ рд░рдВрдЧ, рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рдХреЛ рднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рд╢реЗрд╖ рд░рдВрдЧ рдореЗрдВ, рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рд░рдВрдЧрддреЗ рд╣реИрдВред рджреАрд░реНрдШрд╡реГрддреНрдд рдФрд░ рдЪрддреБрд░реНрднреБрдЬ рджреЛрдиреЛрдВ рдХреЗ рдЖрдпрд╛рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЬреЛрдбрд╝реА рдкреАрдврд╝реА рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдореБрдЦреМрдЯрд╛, рдПрдХ рдЧрд▓рдд, рдПрдХ рдЭреВрда рджреНрд╡рд╛рд░рд╛ рдЬрд╣рд░ рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рд▓рдЧрднрдЧ рдПрдХ рдкреНрд░рддрд┐рд╢рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЪрддреБрд░реНрднреБрдЬ рдХреЛ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рдЕрд░реНрдерд╛рдд рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рд╕рдЪреНрдЪреА рд╡рд╕реНрддреБ рдХреЛ рдЭреВрдареЗ рдореБрдЦреМрдЯреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрддреБрд░реНрднреБрдЬ рдирд╣реАрдВред
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг 10
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ 10 рдХреЗ рдЙрджрд╛рд╣рд░рдг, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдорд╛рд░реНрдХрдЕрдк рд╕реЗред рдКрдкрд░реА рдореБрдЦреМрдЯрд╛ рд╕рдЪ рд╣реИ, рдирд┐рдЪрд▓рд╛ рдПрдХ рдЭреВрдард╛ рд╣реИ, рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдирдВрдмрд░ рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред
рд╡рд┐рднрд╛рдЬрди рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдорд╛рди рдореАрдЯреНрд░рд┐рдХ рдФрд░ рд╣рд╛рдирд┐ рдЧрдгрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рд╕рдорд╛рди рд╕рд░рд▓ рдпреВ-рдиреЗрдЯ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдбреНрд░реЙрдкрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВimport numpy as np import matplotlib.pyplot as plt from matplotlib.colors import NoNorm %matplotlib inline import math from tqdm import tqdm
рдореАрдЯреНрд░рд┐рдХ рдФрд░ рд╣рд╛рдирд┐ рдХрд╛рд░реНрдп def dice_coef(y_true, y_pred): y_true_f = K.flatten(y_true) y_pred = K.cast(y_pred, 'float32') y_pred_f = K.cast(K.greater(K.flatten(y_pred), 0.5), 'float32') intersection = y_true_f * y_pred_f score = 2. * K.sum(intersection) / (K.sum(y_true_f) + K.sum(y_pred_f)) return score def dice_loss(y_true, y_pred): smooth = 1. y_true_f = K.flatten(y_true) y_pred_f = K.flatten(y_pred) intersection = y_true_f * y_pred_f score = (2. * K.sum(intersection) + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth) return 1. - score def bce_dice_loss(y_true, y_pred): return binary_crossentropy(y_true, y_pred) + dice_loss(y_true, y_pred) def get_iou_vector(A, B):
рд╕рд╛рдорд╛рдиреНрдп рдпреВ-рдиреЗрдЯ def build_model(input_layer, start_neurons):
рдЪрд┐рддреНрд░ рдФрд░ рдореБрдЦреМрдЯреЗ рдкреИрджрд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо - рд╕рдЪреНрдЪрд╛ рдФрд░ рдЧрд▓рддред рддрд╕реНрд╡реАрд░ рдХреА рдкрд╣рд▓реА рдкрд░рдд рдХреЛ рд╕рд░рдгреА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рд╕рдЪ рдореБрдЦреМрдЯрд╛ рд╣реИ рдФрд░ рддреАрд╕рд░реА рдкрд░рдд рдЭреВрдареА рдореБрдЦреМрдЯрд╛ рд╣реИред
def next_pair_f(idx): img_l = np.ones((w_size, w_size, 1), dtype='float')*0.45 img_h = np.ones((w_size, w_size, 1), dtype='float')*0.55 img = np.zeros((w_size, w_size, 3), dtype='float') i0_qua = math.trunc(np.random.sample()*4.) i1_qua = math.trunc(np.random.sample()*4.) while i0_qua == i1_qua: i1_qua = math.trunc(np.random.sample()*4.) _qua = np.int(w_size/4) qua = np.array([[_qua,_qua],[_qua,_qua*3],[_qua*3,_qua*3],[_qua*3,_qua]]) p = np.random.sample() - 0.5 r = qua[i0_qua,0] c = qua[i0_qua,1] r_radius = np.random.sample()*(radius_max-radius_min) + radius_min c_radius = np.random.sample()*(radius_max-radius_min) + radius_min rot = np.random.sample()*360 rr, cc = ellipse( r, c, r_radius, c_radius, rotation=np.deg2rad(rot), shape=img_l.shape ) p0 = np.rint(np.random.sample()*(radius_max-radius_min) + radius_min) p1 = qua[i1_qua,0] - (radius_max-radius_min) p2 = qua[i1_qua,1] - (radius_max-radius_min) p3 = np.rint(np.random.sample()*radius_min) p4 = np.rint(np.random.sample()*radius_min) p5 = np.rint(np.random.sample()*radius_min) p6 = np.rint(np.random.sample()*radius_min) p7 = np.rint(np.random.sample()*radius_min) p8 = np.rint(np.random.sample()*radius_min) poly = np.array(( (p1, p2), (p1+p3, p2+p4+p0), (p1+p5+p0, p2+p6+p0), (p1+p7+p0, p2+p8), (p1, p2), )) rr_p, cc_p = polygon(poly[:, 0], poly[:, 1], img_l.shape) if p > 0: img[:,:,:1] = img_l.copy() img[rr, cc,:1] = img_h[rr, cc] img[rr_p, cc_p,:1] = img_h[rr_p, cc_p] else: img[:,:,:1] = img_h.copy() img[rr, cc,:1] = img_l[rr, cc] img[rr_p, cc_p,:1] = img_l[rr_p, cc_p] img[:,:,1] = 0. img[:,:,1] = 0. img[rr_p, cc_p,1] = 1. img[:,:,2] = 0. p_f = np.random.sample()*1000. if p_f > 10: img[rr_p, cc_p,2] = 1. else: img[rr, cc,2] = 1. i_false[idx] = 1 return img
рдзреЛрдЦрд╛ рд╢реАрдЯ рдЧрдгрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо def make_sh(f_imgs, f_msks, val_len): precision = 0.85 batch_size = 50 t = tqdm() t_batch_size = 50 raw_len = val_len id_train = 1
рдЧрдгрдирд╛ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдоред рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдкреЛрд╕реНрдЯ рд╕реЗ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдФрд░ рдХреБрдЫ рдЪрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
i_false = np.zeros((train_num), dtype='int')
рдПрдХ рдореБрдЦреМрдЯрд╛ рдЭреВрдард╛ рд╕рдВрдХреЗрддрдХ рд╣реИред рдпрджрд┐ 1, рддреЛ F_msks рд╕реЗ рдорд╛рд╕реНрдХ f_msks рд╕реЗ рдорд╛рд╕реНрдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕реВрдЪрдХ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ - рдЭреВрдареЗ рдореБрдЦреМрдЯреЗред
m2_select = np.zeros((train_num), dtype='int')
рд╕рдВрдХреЗрддрдХ рдХрд┐ рдпрд╣ рддрд╕реНрд╡реАрд░ рдЪреАрдЯ рд╢реАрдЯ рдореЗрдВ рдЪреБрдиреА рдЧрдИ рд╣реИред
batch_size = 50 val_len = batch_size + 1
рд╣рдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ / рдореБрдЦреМрдЯрд╛ рдЬреЛрдбрд╝реЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╛рдиреА рд╣рдо 10,000 рдЬреЛрдбрд╝реЗ рдХреА рдПрдХ рдирдИ, рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдХреНрд░рдо рдкрд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗред рд╣рдо рд╕рдЪреНрдЪреЗ рдФрд░ рдЭреВрдареЗ рдореБрдЦреМрдЯреЗ рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдФрд░ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВред рдКрдкрд░ рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВред
рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, 93 рдЭреВрдареЗ рдореБрдЦреМрдЯреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ, рдЬрд┐рд╕ рдкрд░ рдПрдХ рдЪрддреБрд░реНрднреБрдЬ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рджреАрд░реНрдШрд╡реГрддреНрдд рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╣рдо рд╕рд╣реА рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ f_msks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
input_layer = Input((w_size, w_size, 1)) output_layer = build_model(input_layer, 25) model = Model(input_layer, output_layer) model.compile(loss=bce_dice_loss, optimizer=Adam(lr=1e-4), metrics=[my_iou_metric]) v_false = make_sh(f_imgs, f_msks, val_len) t_pred = model.predict(t_imgs,batch_size=batch_size) print (get_iou_vector(t_msks,t_pred.reshape(-1,w_size ,w_size ,1)))
Accuracy 0.9807 loss 0.0092 selected img 404 tested img 10000 : : 1801it [08:13, 3.65it/s] 0.9895299999999841
рдзреЛрдЦрд╛ рдкрддреНрд░ рдХреЗрд╡рд▓ 404 рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдФрд░ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдкрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдЯреАрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИред
рдЕрдм рд╣рдо рдПрдХ рд╣реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЯреНрд░реЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рд╕реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо F_msks рдХреЛ 1% рдЭреВрдареЗ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдкрд░ рдЦрд┐рд▓рд╛рддреЗ рд╣реИрдВ
input_layer = Input((w_size, w_size, 1)) output_layer = build_model(input_layer, 25) model = Model(input_layer, output_layer) model.compile(loss=bce_dice_loss, optimizer=Adam(lr=1e-4), metrics=[my_iou_metric]) v_false = make_sh(f_imgs, F_msks, val_len) t_pred = model.predict(t_imgs,batch_size=batch_size) print (get_iou_vector(t_msks,t_pred.reshape(-1,w_size ,w_size ,1)))
Accuracy 0.9821 loss 0.0324 selected img 727 tested img 10000 : : 1679it [25:44, 1.09it/s] 0.9524099999999959
рд╣рдореЗрдВ 727 рдЪрд┐рддреНрд░реЛрдВ рдХреА рдПрдХ рдзреЛрдЦрд╛ рд╢реАрдЯ рдорд┐рд▓реА, рдЬреЛ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреА рд╕рдЯреАрдХрддрд╛, рдкрд┐рдЫрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдХреА рддрд░рд╣ рд╣реА, 0.98953 рд╕реЗ рдШрдЯрдХрд░ 0.9525 рд╣реЛ рдЧрдИред рд╣рдордиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЭреВрда рдХреЛ 1% рд╕реЗ рдХрдо рдЬреЛрдбрд╝рд╛, 10,000 рдорд╛рд╕реНрдХ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 93 рдЭреВрдареЗ рдереЗ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо 3.7% рдмрд┐рдЧрдбрд╝ рдЧрдпрд╛ред рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдЭреВрда рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд╛рд▓рд╛рдХ рд╣реИ! рдФрд░ рдЪреАрдЯ рд╢реАрдЯ рдХреЗрд╡рд▓ 404 рд╕реЗ рдмрдврд╝рдХрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 727 рдЪрд┐рддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдИред
рд╕реБрдЦрджрд╛рдпрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рдирд╛
print (len(set(np.arange(train_num)[m2_select>0]).intersection(set(np.arange(train_num)[i_false>0])))) 93
рдореБрдЭреЗ рдЗрд╕ рд▓рдВрдмреЗ рд╕реВрддреНрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рджреЗрдВ, рд╣рдо рдЭреВрдареА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЪреАрдЯ рд╢реАрдЯ рдореЗрдВ рдЪреБрдиреЗ рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдиреЗ рдзреЛрдЦрд╛ рд╢реАрдЯ рдореЗрдВ рд╕рднреА 93 рдЭреВрдареА рддрд╕реНрд╡реАрд░реЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ред
рдпрд╣ рдХрд╛рд░реНрдп рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рдпрд╣ 10,000 рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ 727 рд╣реИ рдФрд░ рд╕рднреА рдЭреВрда рдпрд╣рд╛рдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХрд╛ рд╣реИред рдЬрдм рд╣рдордиреЗ рдЪреАрдЯ рд╢реАрдЯ рд╕рдВрдХрд▓рд┐рдд рдХреА, рддреЛ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдЙрди рдЪрд┐рддреНрд░ / рдореБрдЦреМрдЯрд╛ рдЬреЛрдбрд╝реЗ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛, рдЬрд┐рдирдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд╕реАрдорд╛ рд╕реЗ рдХрдо рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдорд╛рди
v_false рд╕рд░рдгреА рдореЗрдВ
рд╕рд╣реЗрдЬрд╛ рд╣реИ ред рдЖрдЗрдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдЬреЛрдбрд╝реЗ рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд┐рдирдХрд╛ рдмрд╣реБрдд рдХрдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдореВрд▓реНрдп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0.1 рд╕реЗ рдХрдо рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдирдореЗрдВ рдХрд┐рддрдиреЗ рдирд┐рд╣рд┐рдд рд╣реИрдВ
print (len(set(np.arange(train_num)[v_false<0.01]).intersection(set(np.arange(train_num)[i_false>0])))) 89
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 93 рдореЗрдВ рд╕реЗ 89 рдЭреВрдареЗ рдореБрдЦреМрдЯреЛрдВ рдХрд╛ рдореБрдЦреНрдп рд╣рд┐рд╕реНрд╕рд╛ рдЗрди рдореБрдЦреМрдЯреЛрдВ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛
np.arange(train_num)[v_false<0.01].shape (382,)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ 382 рдорд╛рд╕реНрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ 10,000 рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╕реЗ рд╣реИ, рддреЛ рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдлрд╝рд╕реЛрд╕ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЭреВрдареЗ рдорд╛рд╕реНрдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдирд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред
рдпрджрд┐ рдзреЛрдЦрд╛ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╢реАрдЯ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрдгрдп рдХреЗ рджреМрд░рд╛рди рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рдореБрдЦреМрдЯреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрджрдо рд╕реЗ рд╢реБрд░реВ, рд╕рднреА рдЭреВрдареЗ рдореБрдЦреМрдЯреЗ, рдереЛрдбрд╝рд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рдиреНрдпреВрдирддрдо рд╕реНрддрд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╕рд╣реА рдорд╛рд╕реНрдХ рдЗрд╕ рд╕реНрддрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд╣реЛрдЧреА ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛
рдпрджрд┐ рдХреБрдЫ рдХрд▓реНрдкрдирд╛рд╢реАрд▓ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдЪреНрдЪрд╛рдИ рд╣рдореЗрд╢рд╛ рдЪрддреБрд╖реНрдХреЛрдгреАрдп рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдВрдбрд╛рдХрд╛рд░ рдЭреВрда рдФрд░ рдХреБрдЫ рдЕрдЬреНрдЮрд╛рдд рдЗрдХрд╛рдИ рдиреЗ рд╕рдЪреНрдЪрд╛рдИ рдХреЛ рд╡рд┐рдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рддреНрдп рдХреЛ рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛, рдФрд░ рдЪрддреБрд░реНрднреБрдЬ рдЭреВрдареЗ рд╣реИрдВ, рддреЛ, рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐ рдФрд░ рдзреЛрдЦрд╛ рд╢реАрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕реНрдерд╛рдиреАрдп рдкреВрдЫрддрд╛рдЫ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рдФрд░ рдЭреВрда рдФрд░ рдХрдкрдЯ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдкреАрдПрд╕ рдЕрдВрдбрд╛рдХрд╛рд░, рддреНрд░рд┐рдХреЛрдг, рд╕рд░рд▓ рдмрд╣реБрднреБрдЬ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛рд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдПрдЖрдИ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрдбрд╛рдХрд╛рд░ рдФрд░ рддреНрд░рд┐рдХреЛрдг рдХреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдбрд╝рдХ рдХреЗ рд╕рднреА рд╕рдВрдХреЗрдд рдирд╣реАрдВ рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ рдЖрдкрдХрд╛ AI рдЧрд▓рдд рдХрд╛рд░ рдореЗрдВ рдирд┐рдХрд▓ рдЬрд╛рдПрдЧрд╛ред