Files @ 7cb01d4080c9
Branch filter:

Location: OneEye/exp/kerokero/k_util.py - annotation

Laman
a hinted neural network (failed)
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)