scoredDetections = bse.loadScores(config.get('testMemory'), catI)
    groundTruthFile = config.get('testGroundTruth')
    #ps,rs = bse.evaluateCategory(scoredDetections, 'scores', groundTruthFile)
    pl,rl = bse.evaluateCategory(scoredDetections, 'landmarks', groundTruthFile)
    line = lambda x,y,z: x + '\t{:5.3f}\t{:5.3f}\n'.format(y,z)
    #print line('Validation Scores:',ps,rs)
    print line('Validation Landmarks:',pl,rl)

  
if __name__ == "__main__":
  if len(sys.argv) < 2:
    print 'Use: ReinforcementLearningRunner.py configFile'
    sys.exit()

  ## Load Global Configuration
  config.readConfiguration(sys.argv[1])

  from QNetwork import QNetwork
  from QLearning import QLearning
  from BoxSearchEnvironment import BoxSearchEnvironment
  from BoxSearchTask import BoxSearchTask
  from BoxSearchAgent import BoxSearchAgent
  import BoxSearchEvaluation as bse

  ## Run Training and Testing
  rl = BoxSearchRunner('train')
  rl.run()
  rl = BoxSearchRunner('test')
  rl.run()

Esempio n. 2
0
import os, sys
import RLConfig as config
if len(sys.argv) < 2:
    print 'Use: trainRLObjectLocalizer.py configFile'
    sys.exit()


def adjustEpsilon(totalEpochs, currentEpoch, epsilon):
    maxAnnealingEpoch = totalEpochs * 0.2
    if currentEpoch > maxAnnealingEpoch or epsilon <= 0.1:
        return 0.1
    else:
        return epsilon - 1 / maxAnnealingEpoch


config.readConfiguration(sys.argv[1])

from pybrain.rl.agents import LearningAgent
from pybrain.rl.learners import Q, SARSA
from pybrain.rl.experiments import Experiment

from ObjectLocalizerEnvironment import ObjectLocalizerEnvironment
from DeepQNetwork import DeepQNetwork
from DeepQLearning import DeepQLearning
from MDPObjectLocalizerTask import MDPObjectLocalizerTask
from ObjectLocalizationAgent import ObjectLocalizationAgent

print 'Starting Environment'
epsilon = 1.0
environment = ObjectLocalizerEnvironment(config.get('imageDir'),
                                         config.get('candidatesFile'),
                            for trainingBatchSize in trainingBatchSizes:
                                parametersDict = {'learningRate': learningRate, 'explorationEpochs': explorationEpochs, 'epsilonGreedyEpochs': epsilonGreedyEpochs, 'exploitLearningEpochs': exploitLearningEpochs, 'category': category, 'trainingIterationsPerBatch': trainingIterationsPerBatch, 'trainingBatchSize': trainingBatchSize}
                                aConfig = configTemplate.format(basePath=basePath, **parametersDict)
                                configName = 'rl{}.config'.format('_'.join(['{key}{value}'.format(key=key, value=value) for key, value in parametersDict.iteritems()]))
                                configPath = os.path.join(configDir, configName)
                                print 'Generating config file {}'.format(configPath)
                                outputConfig = open(configPath, 'w')
                                outputConfig.write(aConfig)
                                outputConfig.close()

    #run experiments
    configNames = os.listdir(configDir)
    for configName in configNames:
        configPath = os.path.join(configDir, configName)
        print 'Reading {} config'.format(configPath)
        config.readConfiguration(configPath)
        #erase models and memory
        networkDir = config.get('networkDir')
        snapshotPrefix = config.get('snapshotPrefix')
        testMemory = config.get('testMemory')
        if os.path.exists(testMemory):
            print 'Removing {}'.format(testMemory)
            shutil.rmtree(testMemory)
        os.mkdir(testMemory)
        for fileName in os.listdir(networkDir):
            if fileName.startswith(snapshotPrefix):
                print 'Removing {}'.format(fileName)
                os.remove(os.path.join(networkDir, fileName))
        outFile = open(os.path.join(outputDir, configName + '.out'), 'w')
        errFile = open(os.path.join(outputDir, configName + '.err'), 'w')
        process = subprocess.Popen(['time', 'python', 'BoxSearchRunner.py', configPath], stdout=outFile, stderr=errFile)
import os,sys
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import utils as cu

import RLConfig as config

params = cu.loadParams("config caffeLog rlLog outdir")
config.readConfiguration(params["config"])

fig, ax = plt.subplots(nrows=2, ncols=3)
fig.set_size_inches(18.5,10.5)

# Parse Caffe Log
loss = []
for l in open(params['caffeLog']):
  if l.find('loss =') != -1:
    loss.append( float(l.split()[-1]) )
i = np.argmax(loss)
loss[i] = np.average(loss)
ax[0,0].plot(range(len(loss)), loss)
ax[0,0].set_title('QNetwork Loss')

# Parse RL output
avgRewards = []
epochRewards = []
epochRecall = []
epochIoU = []
epochLandmarks = []
Esempio n. 5
0
                                    parametersDict.iteritems()
                                ]))
                                configPath = os.path.join(
                                    configDir, configName)
                                print 'Generating config file {}'.format(
                                    configPath)
                                outputConfig = open(configPath, 'w')
                                outputConfig.write(aConfig)
                                outputConfig.close()

    #run experiments
    configNames = os.listdir(configDir)
    for configName in configNames:
        configPath = os.path.join(configDir, configName)
        print 'Reading {} config'.format(configPath)
        config.readConfiguration(configPath)
        #erase models and memory
        networkDir = config.get('networkDir')
        snapshotPrefix = config.get('snapshotPrefix')
        testMemory = config.get('testMemory')
        if os.path.exists(testMemory):
            print 'Removing {}'.format(testMemory)
            shutil.rmtree(testMemory)
        os.mkdir(testMemory)
        for fileName in os.listdir(networkDir):
            if fileName.startswith(snapshotPrefix):
                print 'Removing {}'.format(fileName)
                os.remove(os.path.join(networkDir, fileName))
        outFile = open(os.path.join(outputDir, configName + '.out'), 'w')
        errFile = open(os.path.join(outputDir, configName + '.err'), 'w')
        process = subprocess.Popen(
Esempio n. 6
0
import os, sys
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import utils as cu

import RLConfig as config

params = cu.loadParams("config caffeLog rlLog outdir")
config.readConfiguration(params["config"])

fig, ax = plt.subplots(nrows=2, ncols=3)
fig.set_size_inches(18.5, 10.5)

# Parse Caffe Log
loss = []
for l in open(params['caffeLog']):
    if l.find('loss =') != -1:
        loss.append(float(l.split()[-1]))
i = np.argmax(loss)
loss[i] = np.average(loss)
ax[0, 0].plot(range(len(loss)), loss)
ax[0, 0].set_title('QNetwork Loss')

# Parse RL output
avgRewards = []
epochRewards = []
epochRecall = []
epochIoU = []
epochLandmarks = []