diff options
Diffstat (limited to 'megapixels/app')
| -rw-r--r-- | megapixels/app/models/sql_factory.py | 91 | ||||
| -rw-r--r-- | megapixels/app/settings/app_cfg.py | 11 |
2 files changed, 101 insertions, 1 deletions
diff --git a/megapixels/app/models/sql_factory.py b/megapixels/app/models/sql_factory.py new file mode 100644 index 00000000..4adc6f48 --- /dev/null +++ b/megapixels/app/models/sql_factory.py @@ -0,0 +1,91 @@ +import os + +from sqlalchemy import create_engine, Table, Column, String, Integer, DateTime, Float +from sqlalchemy.orm import sessionmaker +from sqlalchemy.ext.declarative import declarative_base, declared_attr +from sqlalchemy.ext.declarative import AbstractConcreteBase, ConcreteBase + +connection_url = "mysql+mysqldb://{}:{}@{}/{}".format( + os.getenv("DB_USER"), + os.getenv("DB_PASS"), + os.getenv("DB_HOST"), + os.getenv("DB_NAME") +) + +engine = create_engine(connection_url) +Session = sessionmaker(bind=engine) +session = Session() +Base = declarative_base(engine) + +class SqlDataset: + def __init__(self, name): + self.name = name + self.tables = {} + + def get_table(self, type): + if type in self.tables: + return self.tables[type] + elif type == 'uuid': + self.tables[type] = self.uuid_table() + elif type == 'roi': + self.tables[type] = self.roi_table() + elif type == 'identity_meta': + self.tables[type] = self.identity_table() + elif type == 'pose': + self.tables[type] = self.pose_table() + else: + return None + return self.tables[type] + + # ==> uuids.csv <== + # index,uuid + # 0,f03fd921-2d56-4e83-8115-f658d6a72287 + def uuid_table(self): + class UUID(Base): + __tablename__ = self.name + "_uuid" + id = Column(Integer, primary_key=True) + uuid = Column(String(36), nullable=False) + return UUID + + # ==> roi.csv <== + # index,h,image_height,image_index,image_width,w,x,y + # 0,0.33000000000000007,250,0,250,0.32999999999999996,0.33666666666666667,0.35 + def roi_table(self): + class ROI(Base): + __tablename__ = self.name + "_roi" + id = Column(Integer, primary_key=True) + h = Column(Float, nullable=False) + image_height = Column(Integer, nullable=False) + image_index = Column(Integer, nullable=False) + image_width = Column(Integer, nullable=False) + w = Column(Float, nullable=False) + x = Column(Float, nullable=False) + y = Column(Float, nullable=False) + return ROI + + # ==> identity.csv <== + # index,fullname,description,gender,images,image_index + # 0,A. J. Cook,Canadian actress,f,1,0 + def identity_table(self): + class Identity(Base): + __tablename__ = self.name + "_identity" + id = Column(Integer, primary_key=True) + fullname = Column(String(36), nullable=False) + description = Column(String(36), nullable=False) + gender = Column(String(1), nullable=False) + images = Column(Integer, nullable=False) + image_id = Column(Integer, nullable=False) + return Identity + + # ==> pose.csv <== + # index,image_index,pitch,roll,yaw + # 0,0,11.16264458441435,10.415885631337728,22.99719032415318 + def pose_table(self): + class Pose(Base): + __tablename__ = self.name + "_pose" + id = Column(Integer, primary_key=True) + image_id = Column(Integer, primary_key=True) + pitch = Column(Float, nullable=False) + roll = Column(Float, nullable=False) + yaw = Column(Float, nullable=False) + return Pose diff --git a/megapixels/app/settings/app_cfg.py b/megapixels/app/settings/app_cfg.py index b2876af7..51392bcc 100644 --- a/megapixels/app/settings/app_cfg.py +++ b/megapixels/app/settings/app_cfg.py @@ -2,6 +2,7 @@ import os from os.path import join import logging import collections +from dotenv import load_dotenv import cv2 as cv @@ -42,9 +43,9 @@ DIR_MODELS_DLIB_68PT = join(DIR_MODELS_DLIB, 'shape_predictor_68_face_landmarks. DIR_MODELS_DLIB_FACEREC_RESNET = join(DIR_MODELS_DLIB, 'dlib_face_recognition_resnet_model_v1.dat') DIR_FAISS = join(DIR_APP, 'faiss') -DIR_FAISS_DATASETS = join(DIR_FAISS, 'datasets') 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') @@ -62,6 +63,7 @@ FP_FONT = join(DIR_ASSETS, 'font') 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' # ----------------------------------------------------------------------------- @@ -109,3 +111,10 @@ LOGFILE_FORMAT = "%(log_color)s%(levelname)-8s%(reset)s %(cyan)s%(filename)s:%(l # ----------------------------------------------------------------------------- S3_MEDIA_ROOT = 's3://megapixels/v1/media/' S3_METADATA_ROOT = 's3://megapixels/v1/metadata/' + +# ----------------------------------------------------------------------------- +# .env config for keys +# ----------------------------------------------------------------------------- + +DIR_DOTENV = join(DIR_APP, '.env') +load_dotenv(dotenv_path=DIR_DOTENV) |
