summaryrefslogtreecommitdiff
path: root/megapixels/app/settings
diff options
context:
space:
mode:
Diffstat (limited to 'megapixels/app/settings')
-rw-r--r--megapixels/app/settings/app_cfg.py68
-rw-r--r--megapixels/app/settings/types.py59
2 files changed, 118 insertions, 9 deletions
diff --git a/megapixels/app/settings/app_cfg.py b/megapixels/app/settings/app_cfg.py
index 739ddce2..55fed166 100644
--- a/megapixels/app/settings/app_cfg.py
+++ b/megapixels/app/settings/app_cfg.py
@@ -2,27 +2,36 @@ import os
from os.path import join
import logging
import collections
-
-import cv2 as cv
+from dotenv import load_dotenv
from app.settings import types
from app.utils import click_utils
+import codecs
+codecs.register(lambda name: codecs.lookup('utf8') if name == 'utf8mb4' else None)
# -----------------------------------------------------------------------------
# Enun lists used for custom Click Params
# -----------------------------------------------------------------------------
FaceDetectNetVar = click_utils.ParamVar(types.FaceDetectNet)
-
+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/'
+DATA_STORE_NAS = '/data_store_nas/'
+DATA_STORE_HDD = '/data_store_hdd/'
+DATA_STORE_SSD = '/data_store_ssd/'
DIR_DATASETS = join(DATA_STORE,'datasets')
+DIR_DATSET_NAS = join(DIR_DATASETS, 'people')
DIR_APPS = join(DATA_STORE,'apps')
DIR_APP = join(DIR_APPS,'megapixels')
DIR_MODELS = join(DIR_APP,'models')
+DIR_PEOPLE = 'people'
# # Frameworks
DIR_MODELS_CAFFE = join(DIR_MODELS,'caffe')
@@ -36,23 +45,39 @@ DIR_MODELS_DLIB = join(DIR_MODELS,'dlib')
DIR_MODELS_DLIB_CNN = join(DIR_MODELS_DLIB, 'mmod_human_face_detector.dat')
DIR_MODELS_DLIB_5PT = join(DIR_MODELS_DLIB, 'shape_predictor_5_face_landmarks.dat')
DIR_MODELS_DLIB_68PT = join(DIR_MODELS_DLIB, 'shape_predictor_68_face_landmarks.dat')
+DIR_MODELS_DLIB_FACEREC_RESNET = join(DIR_MODELS_DLIB, 'dlib_face_recognition_resnet_model_v1.dat')
+DIR_FAISS = join(DIR_APP, 'faiss')
+DIR_FAISS_INDEXES = join(DIR_FAISS, 'indexes')
+DIR_FAISS_METADATA = join(DIR_FAISS, 'metadata')
+DIR_FAISS_RECIPES = join(DIR_FAISS, 'recipes')
# Test images
DIR_TEST_IMAGES = join(DIR_APP, 'test', 'images')
# -----------------------------------------------------------------------------
+# .env config for keys
+# -----------------------------------------------------------------------------
+
+# DIR_DOTENV = join(DIR_APP, '.env')
+load_dotenv() # dotenv_path=DIR_DOTENV)
+
+# -----------------------------------------------------------------------------
# Drawing, GUI settings
# -----------------------------------------------------------------------------
DIR_ASSETS = join(DIR_APP, 'assets')
FP_FONT = join(DIR_ASSETS, 'font')
-
# -----------------------------------------------------------------------------
# click chair settings
# -----------------------------------------------------------------------------
-DIR_COMMANDS_PROCESSOR_ADMIN = 'admin/commands'
-DIR_COMMANDS_PROCESSOR_DATASETS = 'datasets/commands'
+DIR_COMMANDS_CV = 'commands/cv'
+DIR_COMMANDS_ADMIN = 'commands/admin'
+DIR_COMMANDS_DATASETS = 'commands/datasets'
+DIR_COMMANDS_FAISS = 'commands/faiss'
+DIR_COMMANDS_MISC = 'commands/misc'
+DIR_COMMANDS_SITE = 'commands/site'
+DIR_COMMANDS_DEMO = 'commands/demo'
# -----------------------------------------------------------------------------
# Filesystem settings
@@ -64,6 +89,16 @@ CKPT_ZERO_PADDING = 9
HASH_TREE_DEPTH = 3
HASH_BRANCH_SIZE = 3
+DLIB_FACEREC_JITTERS = 5 # number of face recognition jitters
+DLIB_FACEREC_PADDING = 0.25 # default dlib
+
+POSE_MINMAX_YAW = (-25,25)
+POSE_MINMAX_ROLL = (-15,15)
+POSE_MINMAX_PITCH = (-10,10)
+
+POSE_MINMAX_YAW = (-40,40)
+POSE_MINMAX_ROLL = (-35,35)
+POSE_MINMAX_PITCH = (-25,25)
# -----------------------------------------------------------------------------
# Logging options exposed for custom click Params
# -----------------------------------------------------------------------------
@@ -87,4 +122,23 @@ black, red, green, yellow, blue, purple, cyan and white.
bold, bold_{color}, fg_bold_{color}, bg_bold_{color}: Bold/bright colors.
reset: Clear all formatting (both foreground and background colors).
"""
-LOGFILE_FORMAT = "%(log_color)s%(levelname)-8s%(reset)s %(cyan)s%(filename)s:%(lineno)s:%(bold_cyan)s%(funcName)s() %(reset)s%(message)s" \ No newline at end of file
+LOGFILE_FORMAT = "%(log_color)s%(levelname)-8s%(reset)s %(cyan)s%(filename)s:%(lineno)s:%(bold_cyan)s%(funcName)s() %(reset)s%(message)s"
+
+# -----------------------------------------------------------------------------
+# S3 storage
+# -----------------------------------------------------------------------------
+S3_ROOT_URL = 's3://megapixels/v1/'
+S3_MEDIA_URL = join(S3_ROOT_URL, 'media')
+S3_METADATA_URL = join(S3_ROOT_URL, 'metadata')
+S3_HTTP_URL = 'https://megapixels.nyc3.digitaloceanspaces.com/v1/'
+S3_HTTP_MEDIA_URL = join(S3_HTTP_URL, 'media')
+S3_HTTP_METADATA_URL = join(S3_HTTP_URL, 'metadata')
+
+# -----------------------------------------------------------------------------
+# Static site generator
+# -----------------------------------------------------------------------------
+S3_SITE_PATH = "v1/site"
+S3_DATASETS_PATH = "v1" # datasets is already in the filename
+DIR_SITE_PUBLIC = "../site/public"
+DIR_SITE_CONTENT = "../site/content"
+DIR_SITE_TEMPLATES = "../site/templates"
diff --git a/megapixels/app/settings/types.py b/megapixels/app/settings/types.py
index 0c3d7942..0805c5bd 100644
--- a/megapixels/app/settings/types.py
+++ b/megapixels/app/settings/types.py
@@ -7,10 +7,9 @@ def find_type(name, enum_type):
return None
-
class FaceDetectNet(Enum):
"""Scene text detector networks"""
- HAAR, DLIB_CNN, DLIB_HOG, CVDNN = range(4)
+ HAAR, DLIB_CNN, DLIB_HOG, CVDNN, MTCNN = range(5)
class CVBackend(Enum):
"""OpenCV 3.4.2+ DNN target type"""
@@ -20,6 +19,18 @@ class CVTarget(Enum):
"""OpenCV 3.4.2+ DNN backend processor type"""
CPU, OPENCL, OPENCL_FP16, MYRIAD = range(4)
+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, S3 = range(4)
+
# ---------------------------------------------------------------------
# Logger, monitoring
# --------------------------------------------------------------------
@@ -27,3 +38,47 @@ class CVTarget(Enum):
class LogLevel(Enum):
"""Loger vebosity"""
DEBUG, INFO, WARN, ERROR, CRITICAL = range(5)
+
+
+# ---------------------------------------------------------------------
+# Metadata types
+# --------------------------------------------------------------------
+
+class Metadata(Enum):
+ IDENTITY, FILE_RECORD, FACE_VECTOR, FACE_POSE, FACE_ROI, FACE_LANDMARKS_68, \
+ FACE_LANDMARKS_3D = range(7)
+
+class Dataset(Enum):
+ LFW, VGG_FACE2, MSCELEB, UCCS, UMD_FACES = range(5)
+
+
+# ---------------------------------------------------------------------
+# Face analysis types
+# --------------------------------------------------------------------
+class FaceEmotion(Enum):
+ # Map these to text strings for web display
+ NEUTRAL, HAPPY, SAD, ANGRY, FRUSTURATED = range(5)
+
+class FaceBeauty(Enum):
+ # Map these to text strings for web display
+ AVERAGE, BELOW_AVERAGE, ABOVE_AVERAGE = range(3)
+
+class FaceYaw(Enum):
+ # Map these to text strings for web display
+ FAR_LEFT, LEFT, CENTER, RIGHT, FAR_RIGHT = range(5)
+
+class FacePitch(Enum):
+ # Map these to text strings for web display
+ FAR_DOWN, DOWN, CENTER, UP, FAR_UP = range(5)
+
+class FaceRoll(Enum):
+ # Map these to text strings for web display
+ FAR_DOWN, DOWN, CENTER, UP, FAR_UP = range(5)
+
+class FaceAge(Enum):
+ # Map these to text strings for web display
+ CHILD, TEENAGER, YOUNG_ADULT, ADULT, MATURE_ADULT, SENIOR = range(6)
+
+class Confidence(Enum):
+ # Map these to text strings for web display
+ VERY_LOW, LOW, MEDIUM, MEDIUM_HIGH, HIGH, VERY_HIGH = range(6) \ No newline at end of file