Ejemplo n.º 1
0
 def get_aflw_face_data(k = 12):
     dbpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW'
     dbpath = join(dbpath,'aflw.sqlite')
     rfpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW\\img'
     conn = sqlite3.connect(dbpath)
     X = []
     
     for file_id,x,y,h,w in conn.execute('SELECT file_id,x,y,h,w FROM Faces NATURAL JOIN FaceRect'):
         fpath = join(rfpath,file_id)
         frame = fr.get_frame(fpath)
         no_neg = sp.all(sp.array([x,y,h,w]) > 0) ## ignore a bad data in sql table
         if frame != None and no_neg:
             face = fr.get_patch(frame,y,x,(h,w))
             face_r,good_example = Datasets.sample_resize(face,k)
                     
             if good_example:
                 print('face:',fpath)
                 vec = fr.frame_to_vect(face_r)
                 X.append(vec)
                 face_flip = fr.flip_frame(face)
                 face_flip_r = fr.resize_frame(face_flip,(k,k))
                 vec = fr.frame_to_vect(face_flip_r)
                 X.append(vec)
                 #fr.write_frame('F:\\1\\'+'flip'+str(file_id),face_flip)
                 #fr.write_frame('F:\\1\\'+str(file_id),face)
     
     X = sp.array(X)
     y = sp.ones(len(X))
     return X,y
Ejemplo n.º 2
0
    def get_aflw_face_data(k=12):
        dbpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW'
        dbpath = join(dbpath, 'aflw.sqlite')
        rfpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW\\img'
        conn = sqlite3.connect(dbpath)
        X = []

        for file_id, x, y, h, w in conn.execute(
                'SELECT file_id,x,y,h,w FROM Faces NATURAL JOIN FaceRect'):
            fpath = join(rfpath, file_id)
            frame = fr.get_frame(fpath)
            no_neg = sp.all(
                sp.array([x, y, h, w]) > 0)  ## ignore a bad data in sql table
            if frame != None and no_neg:
                face = fr.get_patch(frame, y, x, (h, w))
                face_r, good_example = Datasets.sample_resize(face, k)

                if good_example:
                    print('face:', fpath)
                    vec = fr.frame_to_vect(face_r)
                    X.append(vec)
                    face_flip = fr.flip_frame(face)
                    face_flip_r = fr.resize_frame(face_flip, (k, k))
                    vec = fr.frame_to_vect(face_flip_r)
                    X.append(vec)
                    #fr.write_frame('F:\\1\\'+'flip'+str(file_id),face_flip)
                    #fr.write_frame('F:\\1\\'+str(file_id),face)

        X = sp.array(X)
        y = sp.ones(len(X))
        return X, y
 def get_aflw_face_data(k = 12, on_drive = False):
     dbpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW'
     dbpath = join(dbpath,'aflw.sqlite')
     rfpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW\\img'
     conn = sqlite3.connect(dbpath)
     X = []
     c = 0
     for file_id,x,y,ra,rb,theta in conn.execute('SELECT file_id,x,y,ra,rb,theta FROM Faces NATURAL JOIN FaceEllipse'):
         fpath = join(rfpath,file_id)
         frame = fr.get_frame(fpath)
         x1,y1,x2,y2 = util.ellipse2bbox(a = ra, b = rb, angle = theta, cx = x, cy = y)
         x = x1
         y = y1
         h = abs(y2-y1)
         w = abs(x2-x1)
         no_neg = sp.all(sp.array([x,y,h,w]) > 0) ## ignore a bad data in sql table
         if frame != None and no_neg:
             y,x,w,h = [int(e) for e in (y,x,w,h)]
             face = fr.get_patch(frame,y,x,(w,h))
             face_r,good_example = Datasets.sample_resize(face,k,k)
             if good_example:
                 print('face:',fpath)
                 vec = fr.frame_to_vect(face_r)
                 if not on_drive:
                     X.append(vec)
                     face_flip_r = fr.flip_frame(face_r)
                     vec = fr.frame_to_vect(face_flip_r)
                     X.append(vec)
                 else:
                     for item in Datasets.data_augmentation(frame,y,x,w,h):
                         fr.write_frame('F:\\train_data\\pos\\' + str(c) + '_' + str(file_id)[:-4] + '_' + 'pos',item)
                         c +=1
     X = sp.array(X)
     y = sp.ones(len(X))
     return X,y
Ejemplo n.º 4
0
 def get_aflw_face_data(k=12, on_drive=False):
     dbpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW'
     dbpath = join(dbpath, 'aflw.sqlite')
     rfpath = 'F:\\datasets\\image_data_sets\\faces\\AFLW\\img'
     conn = sqlite3.connect(dbpath)
     X = []
     c = 0
     for file_id, x, y, ra, rb, theta in conn.execute(
             'SELECT file_id,x,y,ra,rb,theta FROM Faces NATURAL JOIN FaceEllipse'
     ):
         fpath = join(rfpath, file_id)
         frame = fr.get_frame(fpath)
         x1, y1, x2, y2 = util.ellipse2bbox(a=ra,
                                            b=rb,
                                            angle=theta,
                                            cx=x,
                                            cy=y)
         x = x1
         y = y1
         h = abs(y2 - y1)
         w = abs(x2 - x1)
         no_neg = sp.all(
             sp.array([x, y, h, w]) > 0)  ## ignore a bad data in sql table
         if frame != None and no_neg:
             y, x, w, h = [int(e) for e in (y, x, w, h)]
             face = fr.get_patch(frame, y, x, (w, h))
             face_r, good_example = Datasets.sample_resize(face, k, k)
             if good_example:
                 print('face:', fpath)
                 vec = fr.frame_to_vect(face_r)
                 if not on_drive:
                     X.append(vec)
                     face_flip_r = fr.flip_frame(face_r)
                     vec = fr.frame_to_vect(face_flip_r)
                     X.append(vec)
                 else:
                     for item in Datasets.data_augmentation(
                             frame, y, x, w, h):
                         fr.write_frame(
                             'F:\\train_data\\pos\\' + str(c) + '_' +
                             str(file_id)[:-4] + '_' + 'pos', item)
                         c += 1
     X = sp.array(X)
     y = sp.ones(len(X))
     return X, y
 def data_augmentation(frame,y,x,w,h):
     face = fr.get_patch(frame,y,x,(w,h))
     face_flip = fr.flip_frame(face)
     t1 = sp.random.randint(0,3)
     t2 = sp.random.randint(0,3)
     face_narrow = fr.get_patch(frame,y,x,(w-t2,h-t2))
     face_wide = fr.get_patch(frame,y,x,(w+t2,h+t2))
     t1 = sp.random.randint(0,3)
     t2 = sp.random.randint(0,3)
     
     face_shift1 = fr.get_patch(frame,y+t1,x+t1,(w+t2,h+t2))
     face_shift2 = fr.get_patch(frame,y-t1,x-t1,(w-t2,h-t2))
     th = float((1 if sp.random.randint(0,2) % 2 == 0 else -1) * sp.random.randint(45,90))
     
     face_rot = fr.frame_rotate(face,theta = th)
     
     faces_list = filter(lambda x: x != None,[face,face_flip,face_narrow,face_wide,face_shift1,face_shift2,face_rot])
     return faces_list
Ejemplo n.º 6
0
    def get_train_face_wider_data(k=12, write_to_disk=False):
        '''
        cut faces (positive examples) by bboxes from all images in  dataset
        return X - features
               y - labels
               cnt - count of examples
        '''
        X, y = [], []
        root = 'F:\\Datasets\\image_data_sets\\faces\\WIDERFace\\'
        pattern = "*.jpg"

        bboxs = Datasets.load_wider_face(
            os.path.join(root, 'wider_face_split', 'wider_face_train_v7.mat'))
        for path, subdirs, files in os.walk(root, 'WIDER_train'):
            for indx, iname in enumerate(files):
                if fnmatch(iname, pattern):
                    ipath = os.path.join(path, iname)
                    print('face:', ipath)
                    img = fr.get_frame(ipath)
                    H, W, dim = img.shape
                    bbox_list = bboxs[iname[:-4]]
                    for bbox in bbox_list:
                        face = fr.get_patch(img, bbox[1], bbox[0],
                                            (bbox[2], bbox[3]))
                        #fr.write_frame('F:\\1\\' + str(c),face)

                        face_r, good_example = Datasets.sample_resize(
                            face, k, k)

                        if good_example:

                            vec = fr.frame_to_vect(face_r)
                            X.append(vec)
                            y.append(1)

                            face_r_flip = fr.flip_frame(face_r)
                            vec = fr.frame_to_vect(face_r_flip)
                            X.append(vec)
                            y.append(1)

        X = sp.array(X)
        y = sp.array(y)
        #y = sp.ones(len(X))
        return X, y
 def get_train_face_wider_data(k = 12,write_to_disk = False):
     '''
     cut faces (positive examples) by bboxes from all images in  dataset
     return X - features
            y - labels
            cnt - count of examples
     '''
     X,y = [],[]
     root = 'F:\\Datasets\\image_data_sets\\faces\\WIDERFace\\'
     pattern = "*.jpg"
     
     bboxs = Datasets.load_wider_face(os.path.join(root,'wider_face_split','wider_face_train_v7.mat'))
     for path, subdirs, files in os.walk(root,'WIDER_train'):
         for indx,iname in enumerate(files):
             if fnmatch(iname, pattern):
                 ipath = os.path.join(path, iname)
                 print('face:',ipath)
                 img = fr.get_frame(ipath)
                 H,W,dim =  img.shape
                 bbox_list = bboxs[iname[:-4]]
                 for bbox in bbox_list:
                     face = fr.get_patch(img,bbox[1],bbox[0],(bbox[2],bbox[3]))
                     #fr.write_frame('F:\\1\\' + str(c),face)
                     
                     face_r,good_example = Datasets.sample_resize(face,k,k)
                     
                     if good_example:
                         
                         vec = fr.frame_to_vect(face_r)
                         X.append(vec)
                         y.append(1)
                     
                         face_r_flip = fr.flip_frame(face_r)
                         vec = fr.frame_to_vect(face_r_flip)                            
                         X.append(vec)
                         y.append(1)
                         
     X = sp.array(X)
     y = sp.array(y)
     #y = sp.ones(len(X))                    
     return X,y
Ejemplo n.º 8
0
    def data_augmentation(frame, y, x, w, h):
        face = fr.get_patch(frame, y, x, (w, h))
        face_flip = fr.flip_frame(face)
        t1 = sp.random.randint(0, 3)
        t2 = sp.random.randint(0, 3)
        face_narrow = fr.get_patch(frame, y, x, (w - t2, h - t2))
        face_wide = fr.get_patch(frame, y, x, (w + t2, h + t2))
        t1 = sp.random.randint(0, 3)
        t2 = sp.random.randint(0, 3)

        face_shift1 = fr.get_patch(frame, y + t1, x + t1, (w + t2, h + t2))
        face_shift2 = fr.get_patch(frame, y - t1, x - t1, (w - t2, h - t2))
        th = float((1 if sp.random.randint(0, 2) % 2 == 0 else -1) *
                   sp.random.randint(45, 90))

        face_rot = fr.frame_rotate(face, theta=th)

        faces_list = filter(lambda x: x != None, [
            face, face_flip, face_narrow, face_wide, face_shift1, face_shift2,
            face_rot
        ])
        return faces_list