77AC_anno / src /tas_const.py
treizh's picture
Upload src/tas_const.py with huggingface_hub
890c4e1 verified
from pathlib import Path
import cv2
# MARK: Paths
PT_PARENT = Path(__file__).parent.resolve()
PT_ROOT = PT_PARENT.joinpath("..").joinpath("..").resolve()
PT_DATAIN = PT_ROOT.joinpath("datain").resolve()
PT_DI_DATASETS = PT_DATAIN.joinpath("datasets")
PT_DI_DATA = PT_DATAIN.joinpath("data")
PT_DI_EXP_DATA = PT_DI_DATA.joinpath("experiments")
PT_DI_SAM_TRAIN_CONFIG = PT_DATAIN.joinpath("sam_train_config")
PT_DI_NN_TRAIN_CONFIG = PT_DATAIN.joinpath("nn_train_config")
PT_DI_DATA_SEGMENTED = PT_DI_DATA.joinpath("segmented")
PT_DI_IMAGES = PT_DATAIN.joinpath("images")
PT_DI_CROPPED = PT_DI_IMAGES.joinpath("cropped")
PT_DI_SEGMENTED = PT_DI_IMAGES.joinpath("annotated").joinpath("cvppa")
PT_DI_SEG_IMAGES = PT_DI_SEGMENTED.joinpath("images")
PT_DI_SEG_MASKS = PT_DI_SEGMENTED.joinpath("masks")
PT_DI_SEG_PST = PT_DI_IMAGES.joinpath("annotated").joinpath("pst")
PT_DI_SEG_PST_IMAGES = PT_DI_SEG_PST.joinpath("images")
PT_DI_SEG_PST_PLANT_COCO_DATASETS = PT_DI_SEG_PST.joinpath("plant_coco_datasets")
PT_DI_SEG_PST_MASKS = PT_DI_SEG_PST.joinpath("masks")
PT_DI_SEG_PST_RAW_MASKS_V1 = PT_DI_SEG_PST.joinpath("raw_masks_v1")
PT_DI_SEG_PST_RAW_MASKS_V2 = PT_DI_SEG_PST.joinpath("raw_masks_v2")
PT_DI_SEG_PST_RAW_MASKS_MIX = PT_DI_SEG_PST.joinpath("raw_masks_mix")
PT_DI_SEG_PST_RAW_MASKS_MERGE = PT_DI_SEG_PST.joinpath("raw_masks_merge")
PT_DI_SEG_PST_RAW_MASKS_COCO = PT_DI_SEG_PST.joinpath("raw_masks_coco")
PT_DI_SEG_PST_CLEAN_MASKS = PT_DI_SEG_PST.joinpath("clean_masks")
PT_SAM_CHECKPOINTS = PT_ROOT.joinpath("checkpoints")
PT_SAM_CONFIGS = PT_ROOT.joinpath("configs").joinpath("sam2.1")
PT_DATAOUT = PT_ROOT.joinpath("dataout")
PT_DO_DATA = PT_DATAOUT.joinpath("data")
PT_DO_MASKS = PT_DATAOUT.joinpath("masks")
PT_DO_VIDEOS = PT_DATAOUT.joinpath("videos")
PT_DO_CHECKPOINTS = PT_DATAOUT.joinpath("checkpoints")
PT_DO_LOGS = PT_DO_CHECKPOINTS.joinpath("logs")
PT_DO_CHKPT_PLANT = PT_DO_CHECKPOINTS.joinpath("plant_segmentation")
PT_DO_CHKPT_PLANT_SEQUENCE = PT_DO_CHECKPOINTS.joinpath("plant_sequence")
PT_DO_CHKPT_IGNITE = PT_DO_CHECKPOINTS.joinpath("ignite")
PT_DO_CHKPT_MLFLOW = PT_DO_CHECKPOINTS.joinpath("mlflow")
PT_DO_IMAGES = PT_DATAOUT.joinpath("images")
PT_DO_MASKS = PT_DATAOUT.joinpath("masks")
PT_DO_VIDEO = PT_DATAOUT.joinpath("videos")
PT_DO_FINE_ROTATION_ANGLES = PT_DATAOUT.joinpath("fine_rotation_angles")
PT_NOTEBOOKS = PT_ROOT.joinpath("notebooks")
PT_NB_SRC = PT_NOTEBOOKS.joinpath("src")
PT_TMP = PT_ROOT.joinpath("temp")
PT_TMP_SEQUENCE = PT_TMP.joinpath("sequence")
PT_TMP_CHECKPOINT = PT_TMP.joinpath("checkpoint")
PT_TMP_CHK_IGNITE = PT_TMP_CHECKPOINT.joinpath("ignite")
PT_TMP_DATASET = PT_TMP.joinpath("dataset")
# MARK: Words
PLANT = "plant"
BACKGROUND = "background"
PST_SEGMENTATION = "pst segmentation"
LEAF = "leaf"
SYMPTOM = "symptom"
IS_VALID = "is_valid"
# MARK: Dataset filtering
DF_ALL = "all"
DF_HEALTHY = "healthy"
DF_INFECTED = "infected"
DF_FIRST_JOB = "first_job"
DF_LAST_JOB = "last_job"
DF_HEALTHY_FIRST_JOB = "healthy_first_job"
DF_INFECTED_FIRST_JOB = "infected_first_job"
DF_HEALTHY_LAST_JOB = "healthy_last_job"
DF_INFECTED_LAST_JOB = "infected_last_job"
DF_FILTER_CHOICES = [
DF_ALL,
DF_HEALTHY,
DF_INFECTED,
DF_FIRST_JOB,
DF_LAST_JOB,
DF_HEALTHY_FIRST_JOB,
DF_HEALTHY_LAST_JOB,
DF_INFECTED_FIRST_JOB,
DF_INFECTED_LAST_JOB,
]
DFK_FULL = "Full"
DFK_HEALTHY = "Healthy only"
DFK_1_HEALTHY = "1 healthy only"
DFK_2_HEALTHY = "2 healthy only"
DFK_1_FIRST_JOG = "1 first job only"
DFK_2_FIRST_JOG = "2 first job only"
DF_KEYS = [
DFK_FULL,
DFK_HEALTHY,
DFK_1_HEALTHY,
DFK_2_HEALTHY,
DFK_1_FIRST_JOG,
DFK_2_FIRST_JOG,
]
# MARK: Units
CM = 1 / 2.54
FMT_TIMESTAMP = "%Y%m%d%H%M%S"
FMT_TIMESTAMP_LONG = "%Y_%m_%d_%H%M%S"
# MARK: Colors
C_BLACK = (0, 0, 0)
C_BLUE = (255, 0, 0)
C_BLUE_VIOLET = (226, 43, 138)
C_CABIN_BLUE = (209, 133, 67)
C_CYAN = (255, 255, 0)
C_DIM_GRAY = (105, 105, 105)
C_FUCHSIA = (255, 0, 255)
C_GREEN = (0, 128, 0)
C_LIGHT_STEEL_BLUE = (222, 196, 176)
C_LIME = (0, 255, 0)
C_MAROON = (0, 0, 128)
C_ORANGE = (80, 127, 255)
C_PURPLE = (128, 0, 128)
C_RED = (0, 0, 255)
C_SILVER = (192, 192, 192)
C_TEAL = (128, 128, 0)
C_WHITE = (255, 255, 255)
C_YELLOW = (0, 255, 255)
C_BROWN = (42, 42, 165)
C_SIENNA = (45, 82, 160)
# Colorblind safe colors
C_CBF_GREEN = (115, 158, 0)
C_CBF_RED = (0, 94, 213)
C_CBF_BLUE = (178, 114, 0)
C_RGB_BLACK = (0, 0, 0)
C_RGB_BLUE = (255, 0, 0)[::-1]
C_RGB_BLUE_VIOLET = (226, 43, 138)[::-1]
C_RGB_CABIN_BLUE = (209, 133, 67)[::-1]
C_RGB_CYAN = (255, 255, 0)[::-1]
C_RGB_DIM_GRAY = (105, 105, 105)[::-1]
C_RGB_FUCHSIA = (255, 0, 255)[::-1]
C_RGB_GREEN = (0, 128, 0)[::-1]
C_RGB_LIGHT_STEEL_BLUE = (222, 196, 176)[::-1]
C_RGB_LIME = (0, 255, 0)[::-1]
C_RGB_MAROON = (0, 0, 128)[::-1]
C_RGB_ORANGE = (80, 127, 255)[::-1]
C_RGB_PURPLE = (128, 0, 128)[::-1]
C_RGB_RED = (0, 0, 255)[::-1]
C_RGB_SILVER = (192, 192, 192)[::-1]
C_RGB_TEAL = (128, 128, 0)[::-1]
C_RGB_YELLOW = (0, 255, 255)[::-1]
C_RGB_WHITE = (255, 255, 255)
C_RGB_BROWN = (42, 42, 165)[::-1]
C_RGB_SIENNA = (45, 82, 160)[::-1]
# Colorblind safe colors
C_CBF_GREEN = (115, 158, 0)[::-1]
C_CBF_RED = (0, 94, 213)[::-1]
C_CBF_BLUE = (178, 114, 0)[::-1]
COLOR_SPACES = {
"rgb": ["red", "green", "blue"],
"hsv": ["h", "s", "v"],
"yiq": ["y", "i", "q"],
"lab": ["l", "a", "b"],
}
# MARK: Mask properties
MP_HULL = "masp_property_hull"
MP_CENTROID = "masp_property_centroid"
MP_BOUND_RECT = "masp_property_bounding_rectangle"
MP_ROT_BOUND_RECT = "masp_property_rotated_bounding_rectangle"
MP_ENCLOSING_CIRCLE = "masp_property_enclosing_circle"
AVAILABLE_MASK_PROPERTIES = [
MP_HULL,
MP_CENTROID,
MP_BOUND_RECT,
MP_ROT_BOUND_RECT,
MP_ENCLOSING_CIRCLE,
]
AVAILABLE_THRESHOLDS = ["otsu", "triangle", "isodata", "li", "mean", "minimum", "yen"]
KLC_FULLY_INSIDE = dict(val=0, color=C_GREEN)
KLC_OVERLAPS = dict(val=1, color=C_LIME)
KLC_OK_TOLERANCE = dict(val=4, color=C_TEAL)
KLC_SMALL = dict(val=5, color=C_BLUE)
KLC_FAR = dict(val=6, color=C_RED)
KLC_SMALL_FAR = dict(val=7, color=C_FUCHSIA)
# MARK: Distancies
OPENCV_DIST_METHODS = {
"Correlation": cv2.HISTCMP_CORREL,
"Chi-Squared": cv2.HISTCMP_CHISQR,
"Alt Chi-Squared": cv2.HISTCMP_CHISQR_ALT,
"Intersection": cv2.HISTCMP_INTERSECT,
"Hellinger": cv2.HISTCMP_BHATTACHARYYA,
"KL-Div": cv2.HISTCMP_KL_DIV,
}
# MARK : Images
GEN_SOURCE = "source"
GEN_GROUND_TRUTH = "ground truth"
SDR_SOURCE_SEEDS = "source with seeds"
SDR_RAW_MASK_PLANT = "raw plant mask"
SDR_MASK_PLANT = "plant mask"
SDR_RAW_MASK_BACKGROUND = "raw background mask"
SDR_MASK_BACKGROUND = "background mask"
SDR_MASK_PLANT_REGIONS = "plant mask regions"
SDR_MASK_REGIONS_BACKGROUND = "background mask regions"
SDR_MASK_MERGED = "merged mask"
SDR_MASK_REGIONS = "regions"
SDR_MASK_SEEDS = "merged mask with seeds"
SDR_MASK_REGIONS_SEEDS = "regions with seeds"
SDR_IMAGES = [
SDR_SOURCE_SEEDS,
SDR_RAW_MASK_PLANT,
SDR_MASK_PLANT,
SDR_RAW_MASK_BACKGROUND,
SDR_MASK_BACKGROUND,
SDR_MASK_MERGED,
SDR_MASK_REGIONS,
SDR_MASK_REGIONS_SEEDS,
SDR_MASK_REGIONS_BACKGROUND,
SDR_MASK_SEEDS,
]
SHS_SEG_MASK_RAW = "raw mask"
SHS_SEG_MASK_CLEAN = "clean mask"
SHS_SEG_MASK_DEMO = "demo klc mask"
SHS_SEG_PP_DEMO = "post-processing demo"
SHS_SEG_MASK_LOGITS = "logits"
SHS_SEG_MASK_EVO = "segmentation evolution"
SHS_SEG_PLANT_ONLY = "plant only"
SHS_SEG_PLANT_DEMO = "plant demo"
SHS_IMAGES = [
SHS_SEG_MASK_RAW,
SHS_SEG_MASK_CLEAN,
SHS_SEG_MASK_DEMO,
SHS_SEG_PP_DEMO,
SHS_SEG_MASK_LOGITS,
SHS_SEG_MASK_EVO,
SHS_SEG_PLANT_ONLY,
SHS_SEG_PLANT_DEMO,
]
AVAILABLE_IMAGES = [GEN_SOURCE] + SDR_IMAGES + SHS_IMAGES
# MARK: Experiments
EXP_ARA_UNET = "unet-arabidopsis-segmentation"
EXP_ARA_SAM = "sam-arabidopsis-segmentation"