first push
This commit is contained in:
23
backend/models/Annotation.py
Normal file
23
backend/models/Annotation.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from database.database import db
|
||||
|
||||
class Annotation(db.Model):
|
||||
__tablename__ = 'annotation'
|
||||
|
||||
annotation_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
image_id = db.Column(db.Integer, nullable=False)
|
||||
x = db.Column(db.Float, nullable=False)
|
||||
y = db.Column(db.Float, nullable=False)
|
||||
height = db.Column(db.Float, nullable=False)
|
||||
width = db.Column(db.Float, nullable=False)
|
||||
Label = db.Column(db.String(255), nullable=False)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'annotation_id': self.annotation_id,
|
||||
'image_id': self.image_id,
|
||||
'x': self.x,
|
||||
'y': self.y,
|
||||
'height': self.height,
|
||||
'width': self.width,
|
||||
'Label': self.Label
|
||||
}
|
||||
19
backend/models/Images.py
Normal file
19
backend/models/Images.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from database.database import db
|
||||
|
||||
class Image(db.Model):
|
||||
__tablename__ = 'image'
|
||||
|
||||
image_id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
image_path = db.Column(db.String(500), nullable=False)
|
||||
project_id = db.Column(db.Integer, nullable=False)
|
||||
width = db.Column(db.Float)
|
||||
height = db.Column(db.Float)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'image_id': self.image_id,
|
||||
'image_path': self.image_path,
|
||||
'project_id': self.project_id,
|
||||
'width': self.width,
|
||||
'height': self.height
|
||||
}
|
||||
13
backend/models/LabelStudioProject.py
Normal file
13
backend/models/LabelStudioProject.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from database.database import db
|
||||
|
||||
class LabelStudioProject(db.Model):
|
||||
__tablename__ = 'label_studio_project'
|
||||
|
||||
project_id = db.Column(db.Integer, primary_key=True, unique=True)
|
||||
title = db.Column(db.String(255), nullable=False)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'project_id': self.project_id,
|
||||
'title': self.title
|
||||
}
|
||||
28
backend/models/TrainingProject.py
Normal file
28
backend/models/TrainingProject.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from database.database import db
|
||||
|
||||
class TrainingProject(db.Model):
|
||||
__tablename__ = 'training_project'
|
||||
|
||||
project_id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
|
||||
title = db.Column(db.String(255), nullable=False)
|
||||
description = db.Column(db.String(500))
|
||||
classes = db.Column(db.JSON, nullable=False)
|
||||
project_image = db.Column(db.LargeBinary)
|
||||
project_image_type = db.Column(db.String(100))
|
||||
|
||||
def to_dict(self):
|
||||
result = {
|
||||
'project_id': self.project_id,
|
||||
'title': self.title,
|
||||
'description': self.description,
|
||||
'classes': self.classes,
|
||||
'project_image_type': self.project_image_type
|
||||
}
|
||||
if self.project_image:
|
||||
import base64
|
||||
base64_data = base64.b64encode(self.project_image).decode('utf-8')
|
||||
mime_type = self.project_image_type or 'image/png'
|
||||
result['project_image'] = f'data:{mime_type};base64,{base64_data}'
|
||||
else:
|
||||
result['project_image'] = None
|
||||
return result
|
||||
19
backend/models/TrainingProjectDetails.py
Normal file
19
backend/models/TrainingProjectDetails.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from database.database import db
|
||||
|
||||
class TrainingProjectDetails(db.Model):
|
||||
__tablename__ = 'training_project_details'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
|
||||
project_id = db.Column(db.Integer, nullable=False, unique=True)
|
||||
annotation_projects = db.Column(db.JSON, nullable=False)
|
||||
class_map = db.Column(db.JSON)
|
||||
description = db.Column(db.JSON)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'project_id': self.project_id,
|
||||
'annotation_projects': self.annotation_projects,
|
||||
'class_map': self.class_map,
|
||||
'description': self.description
|
||||
}
|
||||
16
backend/models/__init__.py
Normal file
16
backend/models/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
# Import all models to ensure they are registered with SQLAlchemy
|
||||
from models.TrainingProject import TrainingProject
|
||||
from models.TrainingProjectDetails import TrainingProjectDetails
|
||||
from models.training import Training
|
||||
from models.LabelStudioProject import LabelStudioProject
|
||||
from models.Images import Image
|
||||
from models.Annotation import Annotation
|
||||
|
||||
__all__ = [
|
||||
'TrainingProject',
|
||||
'TrainingProjectDetails',
|
||||
'Training',
|
||||
'LabelStudioProject',
|
||||
'Image',
|
||||
'Annotation'
|
||||
]
|
||||
92
backend/models/training.py
Normal file
92
backend/models/training.py
Normal file
@@ -0,0 +1,92 @@
|
||||
from database.database import db
|
||||
|
||||
class Training(db.Model):
|
||||
__tablename__ = 'training'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True, unique=True)
|
||||
exp_name = db.Column(db.String(255))
|
||||
max_epoch = db.Column(db.Integer)
|
||||
depth = db.Column(db.Float)
|
||||
width = db.Column(db.Float)
|
||||
activation = db.Column(db.String(255))
|
||||
warmup_epochs = db.Column(db.Integer)
|
||||
warmup_lr = db.Column(db.Float)
|
||||
basic_lr_per_img = db.Column(db.Float)
|
||||
scheduler = db.Column(db.String(255))
|
||||
no_aug_epochs = db.Column(db.Integer)
|
||||
min_lr_ratio = db.Column(db.Float)
|
||||
ema = db.Column(db.Boolean)
|
||||
weight_decay = db.Column(db.Float)
|
||||
momentum = db.Column(db.Float)
|
||||
input_size = db.Column(db.JSON)
|
||||
print_interval = db.Column(db.Integer)
|
||||
eval_interval = db.Column(db.Integer)
|
||||
save_history_ckpt = db.Column(db.Boolean)
|
||||
test_size = db.Column(db.JSON)
|
||||
test_conf = db.Column(db.Float)
|
||||
nms_thre = db.Column(db.Float)
|
||||
multiscale_range = db.Column(db.Integer)
|
||||
enable_mixup = db.Column(db.Boolean)
|
||||
mosaic_prob = db.Column(db.Float)
|
||||
mixup_prob = db.Column(db.Float)
|
||||
hsv_prob = db.Column(db.Float)
|
||||
flip_prob = db.Column(db.Float)
|
||||
degrees = db.Column(db.Float)
|
||||
mosaic_scale = db.Column(db.JSON)
|
||||
mixup_scale = db.Column(db.JSON)
|
||||
translate = db.Column(db.Float)
|
||||
shear = db.Column(db.Float)
|
||||
training_name = db.Column(db.String(255))
|
||||
project_details_id = db.Column(db.Integer, nullable=False)
|
||||
seed = db.Column(db.Integer)
|
||||
train = db.Column(db.Integer)
|
||||
valid = db.Column(db.Integer)
|
||||
test = db.Column(db.Integer)
|
||||
selected_model = db.Column(db.String(255))
|
||||
transfer_learning = db.Column(db.String(255))
|
||||
model_upload = db.Column(db.LargeBinary)
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'exp_name': self.exp_name,
|
||||
'max_epoch': self.max_epoch,
|
||||
'depth': self.depth,
|
||||
'width': self.width,
|
||||
'activation': self.activation,
|
||||
'warmup_epochs': self.warmup_epochs,
|
||||
'warmup_lr': self.warmup_lr,
|
||||
'basic_lr_per_img': self.basic_lr_per_img,
|
||||
'scheduler': self.scheduler,
|
||||
'no_aug_epochs': self.no_aug_epochs,
|
||||
'min_lr_ratio': self.min_lr_ratio,
|
||||
'ema': self.ema,
|
||||
'weight_decay': self.weight_decay,
|
||||
'momentum': self.momentum,
|
||||
'input_size': self.input_size,
|
||||
'print_interval': self.print_interval,
|
||||
'eval_interval': self.eval_interval,
|
||||
'save_history_ckpt': self.save_history_ckpt,
|
||||
'test_size': self.test_size,
|
||||
'test_conf': self.test_conf,
|
||||
'nms_thre': self.nms_thre,
|
||||
'multiscale_range': self.multiscale_range,
|
||||
'enable_mixup': self.enable_mixup,
|
||||
'mosaic_prob': self.mosaic_prob,
|
||||
'mixup_prob': self.mixup_prob,
|
||||
'hsv_prob': self.hsv_prob,
|
||||
'flip_prob': self.flip_prob,
|
||||
'degrees': self.degrees,
|
||||
'mosaic_scale': self.mosaic_scale,
|
||||
'mixup_scale': self.mixup_scale,
|
||||
'translate': self.translate,
|
||||
'shear': self.shear,
|
||||
'training_name': self.training_name,
|
||||
'project_details_id': self.project_details_id,
|
||||
'seed': self.seed,
|
||||
'train': self.train,
|
||||
'valid': self.valid,
|
||||
'test': self.test,
|
||||
'selected_model': self.selected_model,
|
||||
'transfer_learning': self.transfer_learning
|
||||
}
|
||||
Reference in New Issue
Block a user