# HG changeset patch # User Laman # Date 2019-05-14 16:12:12 # Node ID 247811dfb9beef1515ef63e2fc31eba7821f33c1 # Parent 9c78e6f2e2ea032d3ac92812c87a14ba293cd84e data augmentation diff --git a/exp/kerokero/k_util.py b/exp/kerokero/k_util.py --- a/exp/kerokero/k_util.py +++ b/exp/kerokero/k_util.py @@ -1,14 +1,53 @@ -import math - -import keras.backend as K +import random -def singleUnorderedLoss(yTrue,yPred): - d1=sum(math.sqrt(min((yTrue[i*2]-yPred[j*2])**2+(yTrue[i*2+1]-yPred[j*2+1])**2 for j in range(4))) for i in range(4)) - d2=sum(math.sqrt(min((yTrue[i*2]-yPred[j*2])**2+(yTrue[i*2+1]-yPred[j*2+1])**2 for i in range(4))) for j in range(4)) - return (d1+d2)/2 +import numpy as np +import keras.backend as K def averageDistance(yTrue,yPred): squares=K.square(yTrue-yPred) distances=K.sqrt(K.sum(squares,-1)) return K.mean(distances,-1) + + +def transform(image,label): + if random.choice((True,False)): + image=image[::-1] # reflect vertically + label[...,1]*=-1 # reflect y values + label=label[::-1,...] # switch back to counter-clockwise order + + rot=random.randint(0,3) + image=np.rot90(image,rot) + if rot==1: + label=label[...,::-1] + label[...,1]*=-1 + elif rot==2: + label*=-1 + elif rot==3: + label=label[...,::-1] + label[...,0]*=-1 + + k=0 + val=2 + for (i,point) in enumerate(label): # rotate the upper-leftmost point to the first position + v=sum(point) + if v