Files
@ d4478db55eec
Branch filter:
Location: OneEye/exp/kerokero/k_util.py - annotation
d4478db55eec
1.1 KiB
text/x-python
readme: line breaks
247811dfb9be 006c6f1aab13 247811dfb9be 247811dfb9be 006c6f1aab13 006c6f1aab13 006c6f1aab13 006c6f1aab13 006c6f1aab13 006c6f1aab13 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be 247811dfb9be | import random
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<val:
k=i
val=v
label=np.concatenate((label[k:],label[:k]))
return (image,label)
def generateData(images,labels,batch_size=32):
n=len(images)
keys=list(range(n))
while True:
random.shuffle(keys)
for i in range(0,n,batch_size):
ks=keys[i:i+batch_size]
imgs=images[ks]
labs=labels[ks]
for j in range(len(ks)):
(imgs[j],labs[j])=transform(imgs[j],labs[j])
yield (imgs,labs)
|