Spaces:
Sleeping
Sleeping
| 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" | |