| import os |
| import torch |
|
|
| BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
|
|
| DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
|
|
| MODELS_DIR = os.path.join(BASE_DIR, "models", "saved_weights_finetuned") |
|
|
|
|
| TRIAGE_CONFIG = { |
| "architecture": "large", |
| "path": os.path.join(MODELS_DIR, "triage_model.pth"), |
| "num_classes": 3 |
| } |
|
|
| EXPERT_CONFIG = { |
| "digits": { |
| "architecture": "small", |
| "path": os.path.join(MODELS_DIR, "digits_model.pth"), |
| "num_classes": 10 |
| }, |
| "uppercase": { |
| "architecture": "medium", |
| "path": os.path.join(MODELS_DIR, "uppercase_model.pth"), |
| "num_classes": 26 |
| }, |
| "lowercase": { |
| "architecture": "medium", |
| "path": os.path.join(MODELS_DIR, "lowercase_model.pth"), |
| "num_classes": 26 |
| } |
| } |
|
|
| TRIAGE_OUTPUT_MAP = { |
| 0: 'digits', |
| 1: 'uppercase', |
| 2: 'lowercase' |
| } |
|
|
| EXPERT_LABEL_OFFSETS = { |
| "digits": 0, |
| "uppercase": 10, |
| "lowercase": 36 |
| } |
|
|
| EXPERT_CHARACTER_MAPS = { |
| 'digits': {i: str(i) for i in range(10)}, |
| 'uppercase': {i: chr(ord('A') + i) for i in range(26)}, |
| 'lowercase': {i: chr(ord('a') + i) for i in range(26)} |
| } |
|
|
| EMNIST_MAPPING = { |
| 0: '0', 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6', 7: '7', 8: '8', 9: '9', |
| 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F', 16: 'G', 17: 'H', 18: 'I', 19: 'J', |
| 20: 'K', 21: 'L', 22: 'M', 23: 'N', 24: 'O', 25: 'P', 26: 'Q', 27: 'R', 28: 'S', 29: 'T', |
| 30: 'U', 31: 'V', 32: 'W', 33: 'X', 34: 'Y', 35: 'Z', |
| 36: 'a', 37: 'b', 38: 'c', 39: 'd', 40: 'e', 41: 'f', 42: 'g', 43: 'h', 44: 'i', 45: 'j', |
| 46: 'k', 47: 'l', 48: 'm', 49: 'n', 50: 'o', 51: 'p', 52: 'q', 53: 'r', 54: 's', 55: 't', |
| 56: 'u', 57: 'v', 58: 'w', 59: 'x', 60: 'y', 61: 'z' |
| } |
|
|
| SPACE_THRESHOLD_FACTOR = 0.4 |
| NEWLINE_THRESHOLD_FACTOR = 0.7 |
|
|
| MODEL_IMAGE_SIZE = 28 |
|
|
| POPPLER_PATH = "/opt/homebrew/opt/poppler" |
|
|
|
|