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)]
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):
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 + \
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):
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