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): 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
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
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
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