ORM DB Models

orm models for Eyewitness with the support of peewee

ImageInfo

class ImageInfo(BaseModel):
   image_id = CharField(unique=True, primary_key=True)
   channel = CharField()
   file_format = CharField()
   timestamp = TimestampField()
   raw_image_path = CharField(null=True)
   drawn_image_path = CharField(null=True)

BboxDetectionResult

class BboxDetectionResult(BaseModel):
   image_id = ForeignKeyField(ImageInfo)
   x1 = IntegerField()
   x2 = IntegerField()
   y1 = IntegerField()
   y2 = IntegerField()
   label = CharField()
   meta = CharField()
   score = DoubleField()

RegisteredAudience

class RegisteredAudience(BaseModel):
   audience_id = CharField(unique=True, primary_key=True)
   user_id = CharField(null=False)
   platform_id = CharField(null=False)
   register_time = TimestampField()
   description = CharField()

FalseAlertFeedback

class FalseAlertFeedback(BaseModel):
   # peewee didn't support compositeKey as foreignKey, using field to specify field
   audience_id = ForeignKeyField(RegisteredAudience)
   image_id = ForeignKeyField(ImageInfo, null=True)
   receive_time = TimestampField()
   feedback_meta = CharField()
   # TODO: if the is_false_alert field needed??
   is_false_alert = BooleanField()

BboxAnnotationFeedback

class BboxAnnotationFeedback(BaseModel):
   # peewee didn't support compositeKey as foreignKey, using field to specify field
   audience_id = ForeignKeyField(RegisteredAudience)
   image_id = ForeignKeyField(ImageInfo, null=True)
   receive_time = TimestampField()
   feedback_meta = CharField()
   is_false_alert = BooleanField()
   x1 = IntegerField()
   x2 = IntegerField()
   y1 = IntegerField()
   y2 = IntegerField()
   label = CharField()