示例#1
0
    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)
示例#2
0
    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 )
示例#3
0
    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
示例#4
0
    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
示例#5
0
    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
示例#6
0
    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