Files
@ a00c974af8ae
Branch filter:
Location: OneEye/exp/kerokero/k_util.py - annotation
a00c974af8ae
1.1 KiB
text/x-python
experimental single corner Hakugen
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)
|