diff --git a/exp/keras/prepare_data.py b/exp/kerokero/prepare_data.py copy from exp/keras/prepare_data.py copy to exp/kerokero/prepare_data.py --- a/exp/keras/prepare_data.py +++ b/exp/kerokero/prepare_data.py @@ -2,20 +2,22 @@ import os import sys import re import random +import itertools import numpy as np import cv2 as cv -sys.path.append("../exp") +sys.path.append("..") +sys.path.append("../../src") from annotations import DataFile,computeBoundingBox,Corners from geometry import Line -from keras.transformation_matrices import getIdentity,getRotation,getTranslation,getScale,getMirroring,getProjection +from kerokero.transformation_matrices import getIdentity,getRotation,getTranslation,getScale,getMirroring,getProjection random.seed(361) class Sample: - SIDE=256 + SIDE=224 def __init__(self,img,grid): self.img=img @@ -33,7 +35,7 @@ class Sample: m=np.matmul(self._computeCrop(m),m) img=cv.warpPerspective(self.img,m,(self.SIDE,self.SIDE)) grid=Corners(c.transform(m) for c in self.grid) - Sample(img,grid).show() + return (img,list(itertools.chain.from_iterable(grid))) def _getCenter(self): (a,b,c,d)=self.grid @@ -76,9 +78,32 @@ def harvestDir(path): boards=annotations["."] for f in files: img=cv.imread(f.path) + img=cv.cvtColor(img,cv.COLOR_BGR2GRAY) for b in boards: sample=Sample(img,b.grid) - sample.transform() + (img,label)=sample.transform() + yield (img,label) + + +def loadDataset(root): + testRatio=0.1 + trainRatio=1-testRatio + images=[] + labels=[] + for d in traverseDirs(root): + for (img,label) in harvestDir(d): + images.append(img) + labels.append(label) + n=len(images) + keys=list(range(n)) + random.shuffle(keys) + images=[images[k] for k in keys] + labels=[labels[k] for k in keys] + m=int(n*trainRatio) + return ( + (np.uint8(images[:m]),np.float32(labels[:m])), + (np.uint8(images[m:]),np.float32(labels[m:])) + ) def show(img,filename="x"):