Changeset - c934d44cdf5c
[Not reviewed]
default
0 3 1
Laman - 6 years ago 2019-05-06 13:02:49

tensorboard logging, created a configuration file
4 files changed with 28 insertions and 14 deletions:
0 comments (0 inline, 0 general)
exp/kerokero/config.py
Show inline comments
 
new file 100644
 
import os
 
import json
 
import logging as log
 

	
 

	
 
log.basicConfig(level=log.INFO,format="%(asctime)s %(levelname)s: %(message)s")
 
thisDir=os.path.dirname(__file__)
 

	
 
with open(os.path.join(thisDir,"ftp.json")) as f:
 
	ftp=json.load(f)
exp/kerokero/ftp.py
Show inline comments
 
import os
 
import json
 
import ftplib
 
import logging as log
 

	
 
thisDir=os.path.dirname(__file__)
 
with open(os.path.join(thisDir,"ftp.json")) as f:
 
	cfg=json.load(f)
 
import config as cfg
 

	
 

	
 
def push(path):
 
	ftp=ftplib.FTP_TLS()
 
	ftp.connect(cfg["host"],cfg["port"])
 
	ftp.login(cfg["user"],cfg["password"])
 
	ftp.connect(cfg.ftp["host"],cfg.ftp["port"])
 
	ftp.login(cfg.ftp["user"],cfg.ftp["password"])
 

	
 
	filename=os.path.basename(path)
 

	
 
	log.info("uploading %s",path)
 
	with open(path,mode="rb") as f:
 
		ftp.storbinary("STOR "+filename,f)
 

	
 
	ftp.close()
 

	
 

	
 
if __name__=="__main__":
 
	push(os.path.join(thisDir,"ftp.py"))
 
	push(os.path.join(cfg.thisDir,"ftp.py"))
exp/kerokero/test.py
Show inline comments
 
import argparse
 
import logging as log
 

	
 
import numpy as np
 
from keras.models import load_model
 

	
 
from prepare_data import loadDataset,Sample
 
from analyzer.epoint import EPoint
 
from analyzer.corners import Corners
 
import config as cfg
 

	
 

	
 
parser=argparse.ArgumentParser()
 
parser.add_argument("model")
 
parser.add_argument("data")
 
args=parser.parse_args()
 

	
 
model=load_model(args.model)
 

	
 
print("loading data...")
 
log.info("loading data...")
 
with np.load(args.data) as data:
 
	trainImages=data["trainImages"]
 
	trainLabels=data["trainLabels"]
 
	testImages=data["testImages"]
 
	testLabels=data["testLabels"]
 
print("done")
 
log.info("done")
 

	
 
log.info(model.evaluate(testImages.reshape((-1,224,224,1)),testLabels))
 

	
 
for img in testImages:
 
	label=model.predict(np.reshape(img,(1,224,224,1)))
 
	print(label)
 
	points=[]
 
	for i in range(4):
 
		points.append(EPoint(label[0][i*2],label[0][i*2+1]))
 
	corners=Corners(points)
 
	sample=Sample(np.uint8(img),corners)
 
	sample.show()
exp/kerokero/train.py
Show inline comments
 
import os
 
from time import time
 
import argparse
 
import logging as log
 

	
 
import numpy as np
 
from keras.layers import Conv2D,Dropout,Dense,Flatten,MaxPooling2D,BatchNormalization
 
from keras.models import Sequential,load_model
 
from keras.callbacks import TensorBoard
 

	
 
import config as cfg
 
import ftp
 

	
 
log.basicConfig(level=log.INFO,format="%(asctime)s %(levelname)s: %(message)s")
 

	
 
parser=argparse.ArgumentParser()
 
parser.add_argument("data")
 
parser.add_argument("--load_model")
 
parser.add_argument("--save_model",default="/tmp/gogo-{0:03}.h5")
 
parser.add_argument("--epochs",type=int,default=100)
 
parser.add_argument("--initial_epoch",type=int,default=0)
 
args=parser.parse_args()
 

	
 

	
 
def createFullyConnected():
 
	model=Sequential([
 
		Flatten(input_shape=(224,224)),
 
		Dense(128, activation="relu"),
 
		Dropout(0.1),
 
		Dense(64, activation="relu"),
 
		Dense(8)
 
	])
 

	
 
	model.compile(
 
		optimizer='adam',
 
		loss='mse',
 
		metrics=['mae','accuracy']
 
	)
 
	return model
 
@@ -61,31 +63,32 @@ def createCNN():
 
	model.add(Dense(500,activation="relu"))
 
	model.add(Dropout(0.1))
 
	
 
	model.add(Dense(128,activation="relu"))
 
	model.add(Dropout(0.1))
 
	
 
	model.add(Dense(8))
 

	
 
	model.compile(optimizer='adam',loss='mse',metrics=['mae','accuracy'])
 
	return model
 

	
 

	
 
model=createCNN()
 
if args.load_model:
 
	model=load_model(args.load_model)
 

	
 
log.info("loading data...")
 
with np.load(args.data) as data:
 
	trainImages=data["trainImages"]
 
	trainLabels=data["trainLabels"]
 
	testImages=data["testImages"]
 
	testLabels=data["testLabels"]
 
log.info("done")
 

	
 
tensorboard = TensorBoard(log_dir=os.path.join(cfg.thisDir,"../logs","{}".format(time())))
 
for i in range(args.initial_epoch//10,args.epochs//10):
 
	model.fit(trainImages.reshape((-1,224,224,1)),trainLabels,epochs=(i+1)*10,initial_epoch=i*10,batch_size=128,validation_split=0.2)
 
	model.fit(trainImages.reshape((-1,224,224,1)),trainLabels,epochs=(i+1)*10,initial_epoch=i*10,batch_size=128,validation_split=0.2,callbacks=[tensorboard])
 
	path=args.save_model.format((i+1)*10)
 
	log.info("saving model...")
 
	model.save(path)
 
	if i%2==1: ftp.push(path)
 
log.info(model.evaluate(testImages,testLabels))
 
	ftp.push(path)
 
log.info(model.evaluate(testImages.reshape((-1,224,224,1)),testLabels))
0 comments (0 inline, 0 general)