Spaces:
Running
Running
| import numpy as np | |
| from transformers import AutoModelForTokenClassification, AutoProcessor | |
| from dotenv import load_dotenv | |
| import os | |
| # Load .env file | |
| load_dotenv() | |
| # Access variables | |
| dummy_key = os.getenv("dummy_key") | |
| # secret_key = os.getenv("SECRET_KEY") | |
| # debug_mode = os.getenv("DEBUG") | |
| # print(f"Database URL: {database_url}") | |
| # print(f"Secret Key: {secret_key}") | |
| # print(f"Debug Mode: {debug_mode}") | |
| def normalize_box(bbox, width, height): | |
| return [ | |
| int(bbox[0]*(1000/width)), | |
| int(bbox[1]*(1000/height)), | |
| int(bbox[2]*(1000/width)), | |
| int(bbox[3]*(1000/height)), | |
| ] | |
| def compare_boxes(b1, b2): | |
| b1 = np.array([c for c in b1]) | |
| b2 = np.array([c for c in b2]) | |
| equal = np.array_equal(b1, b2) | |
| return equal | |
| def unnormalize_box(bbox, width, height): | |
| return [ | |
| width * (bbox[0] / 1000), | |
| height * (bbox[1] / 1000), | |
| width * (bbox[2] / 1000), | |
| height * (bbox[3] / 1000), | |
| ] | |
| def adjacent(w1, w2): | |
| if w1['label'] == w2['label'] and abs(w1['id'] - w2['id']) == 1: | |
| return True | |
| return False | |
| def random_color(): | |
| return np.random.randint(0, 255, 3) | |
| def image_label_2_color(annotation): | |
| if 'output' in annotation.keys(): | |
| image_labels = set([span['label'] for span in annotation['output']]) | |
| label2color = {f'{label}': (random_color()[0], random_color()[ | |
| 1], random_color()[2]) for label in image_labels} | |
| return label2color | |
| else: | |
| raise ValueError('please use "output" as annotation key') | |
| def load_model(model_path): | |
| model = AutoModelForTokenClassification.from_pretrained(model_path,use_auth_token=dummy_key) | |
| return model | |
| def load_processor(model_name_or_path): | |
| processor = AutoProcessor.from_pretrained( | |
| model_name_or_path, apply_ocr=False,use_auth_token=dummy_key) | |
| return processor | |