diff options
Diffstat (limited to 'megapixels')
| -rw-r--r-- | megapixels/app/settings/app_cfg.py | 1 | ||||
| -rw-r--r-- | megapixels/app/settings/paths.py | 163 | ||||
| -rw-r--r-- | megapixels/app/settings/types.py | 12 | ||||
| -rw-r--r-- | megapixels/app/utils/path_utils.py | 34 |
4 files changed, 45 insertions, 165 deletions
diff --git a/megapixels/app/settings/app_cfg.py b/megapixels/app/settings/app_cfg.py index 0507366f..9ea4b72b 100644 --- a/megapixels/app/settings/app_cfg.py +++ b/megapixels/app/settings/app_cfg.py @@ -23,6 +23,7 @@ HaarCascadeVar = click_utils.ParamVar(types.HaarCascade) LogLevelVar = click_utils.ParamVar(types.LogLevel) MetadataVar = click_utils.ParamVar(types.Metadata) DatasetVar = click_utils.ParamVar(types.Dataset) +DataStoreVar = click_utils.ParamVar(types.DataStore) # # data_store DATA_STORE = '/data_store_hdd/' diff --git a/megapixels/app/settings/paths.py b/megapixels/app/settings/paths.py deleted file mode 100644 index bc1333ba..00000000 --- a/megapixels/app/settings/paths.py +++ /dev/null @@ -1,163 +0,0 @@ -import os -from os.path import join -import logging - -from vframe.settings import vframe_cfg as vcfg -from vframe.settings import types - -class Paths: - - # class properties - MAPPINGS_DATE = vcfg.SUGARCUBE_DATES[0] - DIR_APP_VFRAME = 'apps/vframe/' - DIR_APP_SA = 'apps/syrianarchive' - DIR_MODELS_VFRAME = join(DIR_APP_VFRAME, 'models') - DIR_DARKNET = join(DIR_MODELS_VFRAME, 'darknet/pjreddie') - DIR_DARKNET_VFRAME = join(DIR_MODELS_VFRAME, 'darknet/vframe') - DIR_MEDIA = join(DIR_APP_SA, 'media') - DIR_METADATA = join(DIR_APP_SA, 'metadata') - DIR_RECORDS = join(DIR_APP_SA, 'records') - DIR_REPORTS = join(DIR_APP_SA, 'reports') - - - def __init__(self): - pass - - @classmethod - def DataStorePath(cls, data_store=types.DataStore.HDD): - return '/data_store_{}'.format(data_store.name.lower()) - - # ------------------------------------------------------------------------------- - # Darknet Paths - - @classmethod - def darknet_classes(cls, data_store=types.DataStore.HDD, opt_net=types.DetectorNet.COCO): - if opt_net == types.DetectorNet.COCO: - fp = join(cls.DIR_DARKNET, 'data', 'coco.names') - elif opt_net == types.DetectorNet.COCO_SPP: - fp = join(cls.DIR_DARKNET, 'data', 'coco.names') - elif opt_net == types.DetectorNet.VOC: - fp = join(cls.DIR_DARKNET, 'data', 'voc.names') - elif opt_net == types.DetectorNet.OPENIMAGES: - fp = join(cls.DIR_DARKNET, 'data', 'openimages.names') - elif opt_net == types.DetectorNet.SUBMUNITION: - fp = join(cls.DIR_DARKNET_VFRAME, 'munitions_09b', 'classes.txt') - return join(cls.DataStorePath(data_store), fp) - - @classmethod - def darknet_data(cls, data_store=types.DataStore.HDD, opt_net=types.DetectorNet.COCO, as_bytes=True): - if opt_net == types.DetectorNet.COCO: - fp = join(cls.DIR_DARKNET, 'cfg', 'coco.data') - elif opt_net == types.DetectorNet.COCO_SPP: - fp = join(cls.DIR_DARKNET, 'cfg', 'coco.data') - elif opt_net == types.DetectorNet.VOC: - fp = join(cls.DIR_DARKNET, 'cfg', 'voc.data') - elif opt_net == types.DetectorNet.OPENIMAGES: - fp = join(cls.DIR_DARKNET, 'cfg', 'openimages.data') - elif opt_net == types.DetectorNet.SUBMUNITION: - fp = join(cls.DIR_DARKNET_VFRAME, 'munitions_09b', 'meta.data') - fp = join(cls.DataStorePath(data_store), fp) - if as_bytes: - return bytes(fp, encoding="utf-8") - else: - return fp - - - @classmethod - def darknet_cfg(cls, data_store=types.DataStore.HDD, opt_net=types.DetectorNet.COCO, as_bytes=True): - if opt_net == types.DetectorNet.COCO: - fp = join(cls.DIR_DARKNET, 'cfg', 'yolov3.cfg') - elif opt_net == types.DetectorNet.COCO_SPP: - fp = join(cls.DIR_DARKNET, 'cfg', 'yolov3-spp.cfg') - elif opt_net == types.DetectorNet.VOC: - fp = join(cls.DIR_DARKNET, 'cfg', 'yolov3-voc.cfg') - elif opt_net == types.DetectorNet.OPENIMAGES: - fp = join(cls.DIR_DARKNET, 'cfg', 'yolov3-openimages.cfg') - elif opt_net == types.DetectorNet.SUBMUNITION: - fp = join(cls.DIR_DARKNET_VFRAME, 'munitions_09b', 'yolov3.cfg') - fp = join(cls.DataStorePath(data_store), fp) - if as_bytes: - return bytes(fp, encoding="utf-8") - else: - return fp - - @classmethod - def darknet_weights(cls, data_store=types.DataStore.HDD, opt_net=types.DetectorNet.COCO, as_bytes=True): - if opt_net == types.DetectorNet.COCO: - fp = join(cls.DIR_DARKNET, 'weights', 'yolov3.weights') - elif opt_net == types.DetectorNet.COCO_SPP: - fp = join(cls.DIR_DARKNET, 'weights', 'yolov3-spp.weights') - elif opt_net == types.DetectorNet.VOC: - fp = join(cls.DIR_DARKNET, 'weights', 'yolov3-voc.weights') - elif opt_net == types.DetectorNet.OPENIMAGES: - fp = join(cls.DIR_DARKNET, 'weights', 'yolov3-openimages.weights') - elif opt_net == types.DetectorNet.SUBMUNITION: - fp = join(cls.DIR_DARKNET_VFRAME, 'munitions_09b/weights', 'yolov3_40000.weights') - fp = join(cls.DataStorePath(data_store), fp) - if as_bytes: - return bytes(fp, encoding="utf-8") - else: - return fp - - # ------------------------------------------------------------------------------- - # Metadata Paths - - @classmethod - def mapping_index(cls, opt_date, data_store=types.DataStore.HDD, verified=types.Verified.VERIFIED, - file_format=types.FileExt.PKL): - """Returns filepath to a mapping file. Mapping files are the original Suguarcube mapping data""" - fname = 'index.pkl' if file_format == types.FileExt.PKL else 'index.json' - # data_store = 'data_store_{}'.format(data_store.name.lower()) - date_str = opt_date.name.lower() - fp = join(cls.DataStorePath(data_store), cls.DIR_METADATA, 'mapping', date_str, verified.name.lower(), fname) - return fp - - @classmethod - def media_record_index(cls, data_store=types.DataStore.HDD, verified=types.Verified.VERIFIED, - file_format=types.FileExt.PKL): - """Returns filepath to a mapping file. Mapping files are the original Suguarcube mapping data""" - fname = 'index.pkl' if file_format == types.FileExt.PKL else 'index.json' - metadata_type = types.Metadata.MEDIA_RECORD.name.lower() - fp = join(cls.DataStorePath(data_store), cls.DIR_METADATA, metadata_type, verified.name.lower(), fname) - return fp - - @classmethod - def metadata_index(cls, metadata_type, data_store=types.DataStore.HDD, - verified=types.Verified.VERIFIED, file_format=types.FileExt.PKL): - """Uses key from enum to get folder name and construct filepath""" - fname = 'index.pkl' if file_format == types.FileExt.PKL else 'index.json' - fp = join(cls.DataStorePath(data_store), cls.DIR_METADATA, metadata_type.name.lower(), - verified.name.lower(), fname) - return fp - - @classmethod - def metadata_dir(cls, metadata_type, data_store=types.DataStore.HDD, verified=types.Verified.VERIFIED): - """Uses key from enum to get folder name and construct filepath""" - fp = join(cls.DataStorePath(data_store), cls.DIR_METADATA, metadata_type.name.lower(), - verified.name.lower()) - return fp - - @classmethod - def metadata_tree_dir(cls, metadata_type, data_store=types.DataStore.HDD): - """Uses key from enum to get folder name and construct filepath""" - fp = join(cls.DataStorePath(data_store), cls.DIR_METADATA, metadata_type.name.lower()) - return fp - - @classmethod - def media_dir(cls, media_type, data_store=types.DataStore.HDD, verified=types.Verified.VERIFIED): - """Returns the directory path to a media directory""" - fp = join(cls.DataStorePath(data_store), cls.DIR_MEDIA, media_type.name.lower(), verified.name.lower()) - return fp - - # @classmethod - # def keyframe(cls, dir_media, idx, image_size=types.ImageSize.MEDIUM): - # """Returns path to keyframe image using supplied cls.media directory""" - # idx = str(idx).zfill(vcfg.ZERO_PADDING) - # size_label = vcfg.IMAGE_SIZE_LABELS[image_size] - # fp = join(dir_media, sha256_tree, sha256, idx, size_label, 'index.jpg') - # return fp - - @classmethod - def dnn(cls): - """Returns configurations for available DNNs""" - pass
\ No newline at end of file diff --git a/megapixels/app/settings/types.py b/megapixels/app/settings/types.py index 7157436d..4f403846 100644 --- a/megapixels/app/settings/types.py +++ b/megapixels/app/settings/types.py @@ -22,7 +22,15 @@ class CVTarget(Enum): class HaarCascade(Enum): FRONTAL, ALT, ALT2, PROFILE = range(4) - + +# --------------------------------------------------------------------- +# Storage +# -------------------------------------------------------------------- + +class DataStore(Enum): + """Storage devices. Paths are symlinked to root (eg /data_store_nas)""" + NAS, HDD, SSD = range(3) + # --------------------------------------------------------------------- # Logger, monitoring # -------------------------------------------------------------------- @@ -37,7 +45,7 @@ class LogLevel(Enum): # -------------------------------------------------------------------- class Metadata(Enum): - IDENTITIES, POSES, ROIS, FILE_META, SHAS, UUIDS, FACE_VECTORS = range(7) + IDENTITY, FILEPATH, SHA256, UUID, FACE_VECTOR, FACE_POSE, FACE_ROI = range(7) class Dataset(Enum): LFW, VGG_FACE2 = range(2) diff --git a/megapixels/app/utils/path_utils.py b/megapixels/app/utils/path_utils.py new file mode 100644 index 00000000..ddbc2864 --- /dev/null +++ b/megapixels/app/utils/path_utils.py @@ -0,0 +1,34 @@ +import os +from os.path import join +import logging + +from app.settings import app_cfg as cfg +from app.settings import types + + +# class properties +DATA_STORE = cfg.DATA_STORE +DIR_DATSETs = cfg.DIR_DATSET_NAS +DIR_DATASETS = join(DATA_STORE, 'datasets') +DIR_PEOPLE = 'datasets/people' + +# ------------------------------------------------------------------------- +# Metadata +# ------------------------------------------------------------------------- + +def data_store_dir(opt_data_store): + return f'/data_store_{opt_data_store.name.lower()}' + +def dataset_dir(opt_dataset): + return f'{opt_dataset.name.lower()}' + +def metadata_dir(opt_data_store, opt_dataset): + return join(data_store_dir(opt_data_store), DIR_PEOPLE, dataset_dir(opt_dataset), 'metadata') + +def metadata(opt_data_store, opt_dataset, opt_metadata): + return join(metadata_dir(opt_data_store, opt_dataset), f'{opt_metadata.name.lower()}.csv') + + +# ------------------------------------------------------------------------- +# Media +# -------------------------------------------------------------------------
\ No newline at end of file |
