Example #1
0
    def __init__(self, face_dir="", nonface_dir="", train=True, limit=30):
        #tot_samples = 0

        self.Face = ImageSet(face_dir, sampleNum=POSITIVE_SAMPLE)
        self.nonFace = ImageSet(nonface_dir, sampleNum=NEGATIVE_SAMPLE)

        tot_samples = self.Face.sampleNum + self.nonFace.sampleNum

        self.classifier = AdaBoost

        self.haar = Feature(TRAINING_IMG_WIDTH, TRAINING_IMG_HEIGHT)

        if os.path.isfile(FEATURE_FILE_TRAINING + ".npy"):

            self._mat = numpy.load(FEATURE_FILE_TRAINING + ".npy")

        else:
            if DEBUG_MODEL is True:
                self._mat = numpy.zeros((self.haar.featuresNum, tot_samples))

                for i in xrange(self.Face.sampleNum):
                    print(i)
                    featureVec = self.haar.calFeatureForImg(
                        self.Face.images[i])
                    for j in xrange(self.haar.featuresNum):
                        self._mat[j][i] = featureVec[j]

                for i in xrange(self.nonFace.sampleNum):
                    featureVec = self.haar.calFeatureForImg(
                        self.nonFace.images[i])
                    print(i)
                    for j in xrange(self.haar.featuresNum):
                        self._mat[j][i + self.Face.sampleNum] = featureVec[j]

                numpy.save(FEATURE_FILE_TRAINING, self._mat)
            else:
                from mapReduce import map
                from mapReduce import reduce

                map(self.Face, self.nonFace)
                self._mat = reduce()

        featureNum, sampleNum = self._mat.shape

        assert sampleNum == (POSITIVE_SAMPLE + NEGATIVE_SAMPLE)
        assert featureNum == FEATURE_NUM

        Label_Face = [+1 for i in xrange(POSITIVE_SAMPLE)]
        Label_NonFace = [-1 for i in xrange(NEGATIVE_SAMPLE)]

        self._label = numpy.array(Label_Face + Label_NonFace)
        self.limit = limit
        self.classifierNum = 0
        self.strong_classifier = [None for i in xrange(limit)]
Example #2
0
from config   import FEATURE_NUM
from config   import ADABOOST_LIMIT
from config   import ADABOOST_CACHE_FILE
from config   import DEBUG_MODEL
from config   import TRAINING_FACE
from config   import TRAINING_NONFACE

from haarFeature import Feature
from image       import ImageSet
from adaboost    import AdaBoost
from adaboost    import getCachedAdaBoost

import os
import numpy

Face    = ImageSet(TRAINING_FACE,    sampleNum = POSITIVE_SAMPLE)
nonFace = ImageSet(TRAINING_NONFACE, sampleNum = NEGATIVE_SAMPLE)

tot_samples = Face.sampleNum + nonFace.sampleNum

haar   = Feature(TRAINING_IMG_WIDTH, TRAINING_IMG_HEIGHT)

if os.path.isfile(FEATURE_FILE_TRAINING + ".npy"):

    _mat = numpy.load(FEATURE_FILE_TRAINING + ".npy")

else:
    if DEBUG_MODEL is True:
        _mat = numpy.zeros((haar.featuresNum, tot_samples))

        for i in xrange(Face.sampleNum):
Example #3
0
from config import *
from adaboost import AdaBoost

#FEATURE_FILE_TESTING = FEATURE_FILE_TRAINING
#
#TESTING_SAMPLE_NUM = SAMPLE_NUM
#TESTING_NEGATIVE_SAMPLE = NEGATIVE_SAMPLE
#TESTING_POSITIVE_SAMPLE = POSITIVE_SAMPLE

fileObj = open(FEATURE_FILE_TESTING, "a+")

# if that is a empty file
if os.stat(FEATURE_FILE_TESTING).st_size == 0:

    print "First time to load the testing set ..."
    TestSetFace = ImageSet(TEST_FACE, sampleNum=TESTING_POSITIVE_SAMPLE)
    TestSetNonFace = ImageSet(TEST_NONFACE, sampleNum=TESTING_NEGATIVE_SAMPLE)

    Original_Data_Face = [
        TestSetFace.images[i].haarA + TestSetFace.images[i].haarB +
        TestSetFace.images[i].haarC + TestSetFace.images[i].haarD
        for i in range(TestSetFace.sampleNum)
    ]

    Original_Data_NonFace = [
        TestSetNonFace.images[i].haarA + TestSetNonFace.images[i].haarB +
        TestSetNonFace.images[i].haarC + TestSetNonFace.images[i].haarD
        for i in range(TestSetNonFace.sampleNum)
    ]

    Original_Data = numpy.array(Original_Data_Face + \
Example #4
0
from config import TEST_FACE
from config import TEST_NONFACE
from config import TRAINING_IMG_HEIGHT
from config import TRAINING_IMG_WIDTH
from config import ADABOOST_CACHE_FILE
from config import POSITIVE_SAMPLE
from config import LABEL_POSITIVE

from adaboost import getCachedAdaBoost

from image import ImageSet
from haarFeature import Feature

import numpy

face = ImageSet(TEST_FACE, sampleNum=100)

nonFace = ImageSet(TEST_NONFACE, sampleNum=100)

tot_samples = face.sampleNum + nonFace.sampleNum

haar = Feature(TRAINING_IMG_WIDTH, TRAINING_IMG_HEIGHT)

mat = numpy.zeros((haar.featuresNum, tot_samples))

for i in range(face.sampleNum):
    featureVec = haar.calFeatureForImg(face.images[i])
    for j in range(haar.featuresNum):
        mat[j][i] = featureVec[j]

for i in range(nonFace.sampleNum):
Example #5
0
        fileObj.write(str(model.G[m].opt_threshold) + "\n")

    fileObj.flush()
    fileObj.close()


##################################################################

fileObj = open(FEATURE_FILE_TRAINING, "a+")

# if that is a empty file
if os.stat(FEATURE_FILE_TRAINING).st_size == 0:

    print "First time to load the training set ..."

    TrainingSetFace = ImageSet(TRAINING_FACE, sampleNum=POSITIVE_SAMPLE)

    TrainingSetNonFace = ImageSet(TRAINING_NONFACE, sampleNum=NEGATIVE_SAMPLE)

    Original_Data_Face = [
        TrainingSetFace.images[i].haarA + TrainingSetFace.images[i].haarB +
        TrainingSetFace.images[i].haarC + TrainingSetFace.images[i].haarD +
        TrainingSetFace.images[i].haarE
        for i in range(TrainingSetFace.sampleNum)
    ]

    Original_Data_NonFace = [
        TrainingSetNonFace.images[i].haarA +
        TrainingSetNonFace.images[i].haarB +
        TrainingSetNonFace.images[i].haarC +
        TrainingSetNonFace.images[i].haarD + TrainingSetNonFace.images[i].haarE