summaryrefslogtreecommitdiff
path: root/megapixels/commands/cv/face_vector.py
diff options
context:
space:
mode:
Diffstat (limited to 'megapixels/commands/cv/face_vector.py')
-rw-r--r--megapixels/commands/cv/face_vector.py44
1 files changed, 18 insertions, 26 deletions
diff --git a/megapixels/commands/cv/face_vector.py b/megapixels/commands/cv/face_vector.py
index 7200d73b..7c03205c 100644
--- a/megapixels/commands/cv/face_vector.py
+++ b/megapixels/commands/cv/face_vector.py
@@ -15,7 +15,7 @@ from app.settings import app_cfg as cfg
help='Override enum media directory')
@click.option('--data_store', 'opt_data_store',
type=cfg.DataStoreVar,
- default=click_utils.get_default(types.DataStore.SSD),
+ default=click_utils.get_default(types.DataStore.HDD),
show_default=True,
help=click_utils.show_help(types.Dataset))
@click.option('--dataset', 'opt_dataset',
@@ -90,36 +90,28 @@ def cli(ctx, opt_fp_out, opt_dir_media, opt_data_store, opt_dataset, opt_size,
log.debug('processing {:,} groups'.format(len(df_img_groups)))
vecs = []
-
- for image_index, df_img_group in tqdm(df_img_groups):
+ for record_index, df_img_group in tqdm(df_img_groups):
# make fp
- roi_index = df_img_group.index.values[0]
- # log.debug(f'roi_index: {roi_index}, image_index: {image_index}')
- ds_file = df_record.loc[roi_index] # locate image meta
- #ds_file = df_record.loc['index', image_index] # locate image meta
-
- fp_im = data_store.face(str(ds_file.subdir), str(ds_file.fn), str(ds_file.ext))
+ ds_record = df_record.iloc[record_index]
+ fp_im = data_store.face(ds_record.subdir, ds_record.fn, ds_record.ext)
im = cv.imread(fp_im)
- # get bbox
- x = df_img_group.x.values[0]
- y = df_img_group.y.values[0]
- w = df_img_group.w.values[0]
- h = df_img_group.h.values[0]
- imw = df_img_group.image_width.values[0]
- imh = df_img_group.image_height.values[0]
- dim = im.shape[:2][::-1]
- # get face vector
- dim = (imw, imh)
- bbox_dim = BBox.from_xywh(x, y, w, h).to_dim(dim) # convert to int real dimensions
- # compute vec
- # padding=opt_padding not yet implemented in 19.16 but merged in master
- vec = facerec.vec(im, bbox_dim, jitters=opt_jitters)
- vec_str = ','.join([repr(x) for x in vec]) # convert to string for CSV
- vecs.append( {'roi_index': roi_index, 'record_index': image_index, 'vec': vec_str})
+ for roi_index, df_img in df_img_group.iterrows():
+ # get bbox
+ x, y, w, h = df_img.x, df_img.y, df_img.w, df_img.h
+ dim = (ds_record.width, ds_record.height)
+ #dim = im.shape[:2][::-1]
+ # get face vector
+ bbox_dim = BBox.from_xywh(x, y, w, h).to_dim(dim) # convert to int real dimensions
+ # compute vec
+ # padding=opt_padding not yet implemented in 19.16 but merged in master
+ vec = facerec.vec(im, bbox_dim, jitters=opt_jitters)
+ vec_str = ','.join([repr(x) for x in vec]) # convert to string for CSV
+ vecs.append( {'roi_index': roi_index, 'record_index': record_index, 'vec': vec_str})
- # save date
+ # create dataframe
df = pd.DataFrame.from_dict(vecs)
df.index.name = 'index'
+ # save CSV
file_utils.mkdirs(fp_out)
df.to_csv(fp_out) \ No newline at end of file