def donttest_detector_train( self): # TODO: Cascade training fails for Version OpenCV 2.0 positives = [] self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA, "coords.txt")) n = len(self.eyes.files()) for filename in self.eyes.files()[:n / 2]: img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) faces = self.eyes.getFaces(img.filename) positives.append( [os.path.join(SCRAPS_FACE_DATA, img.filename), faces]) neg_files = [] for im_name in os.listdir(NONFACE_DATA): if im_name[-4:] != ".jpg": continue neg_files.append(os.path.join(NONFACE_DATA, im_name)) fd = trainHaarClassifier(positives, neg_files, nstages=6, maxtreesplits=0, max_run_time=300) fdt = FaceDetectionTest(name='scraps') self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA, "coords.txt")) for filename in self.eyes.files(): img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) rects = fd(img) truth = self.eyes.getFaces(img.filename) fdt.addSample(truth, rects, im=img) self.assertAlmostEqual(fdt.pos_rate, 0.9942196531791907)
def donttest_detector_train(self): # TODO: Cascade training fails for Version OpenCV 2.0 positives = [] self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA,"coords.txt")) n = len(self.eyes.files()) for filename in self.eyes.files()[:n/2]: img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) faces = self.eyes.getFaces(img.filename) positives.append([os.path.join(SCRAPS_FACE_DATA,img.filename),faces]) neg_files = [] for im_name in os.listdir(NONFACE_DATA): if im_name[-4:] != ".jpg": continue neg_files.append(os.path.join(NONFACE_DATA,im_name)) fd = trainHaarClassifier(positives,neg_files,nstages=6,maxtreesplits=0,max_run_time=300) fdt = FaceDetectionTest(name='scraps') self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA,"coords.txt")) for filename in self.eyes.files(): img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) rects = fd(img) truth = self.eyes.getFaces(img.filename) fdt.addSample(truth,rects,im=img) self.assertAlmostEqual( fdt.pos_rate , 0.9942196531791907 )
def test_detect_scraps_celeb1(self): fd = CascadeDetector(CELEB1_CASCADE) fdt = FaceDetectionTest(name='scraps') self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA,"coords.txt")) for filename in self.eyes.files(): img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) rects = fd(img) truth = self.eyes.getFaces(img.filename) fdt.addSample(truth,rects,im=img) self.assertAlmostEqual( fdt.pos_rate , 0.76878612716763006, places = 2 ) # TODO: Version 2 performance is better
def test_face_detection_pickle(self): fd = CascadeDetector(OPENCV_CASCADE) fdt = FaceDetectionTest(name='scraps') buffer = pickle.dumps(fd) fd = pickle.loads(buffer) self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA,"coords.txt")) for filename in self.eyes.files(): img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) rects = fd(img) truth = self.eyes.getFaces(img.filename) fdt.addSample(truth,rects,im=img) self.assertAlmostEqual( fdt.pos_rate , 0.98265895953757221, places = 2 ) # TODO: Version 2 performance is better
def test_face_detection_pickle(self): fd = CascadeDetector(OPENCV_CASCADE) fdt = FaceDetectionTest(name='scraps') data_buffer = pickle.dumps(fd) fd = pickle.loads(data_buffer) self.eyes = EyesFile(os.path.join(SCRAPS_FACE_DATA,"coords.txt")) for filename in self.eyes.files(): img = pv.Image(os.path.join(SCRAPS_FACE_DATA, filename + ".pgm")) rects = fd(img) truth = self.eyes.getFaces(img.filename) fdt.addSample(truth,rects,im=img) self.assertAlmostEqual( fdt.pos_rate , 0.98265895953757221, places = 2 ) # TODO: Version 2 performance is better