Spaces:
Sleeping
Sleeping
import os | |
from _sha1 import sha1 | |
from typing import Tuple, List | |
from PIL import Image | |
from atoms_detection.dl_detection import DLDetection | |
from atoms_detection.image_preprocessing import dl_prepro_image | |
from utils.constants import ModelArgs | |
import numpy as np | |
class DLScaled(DLDetection): | |
# Should take into account for the resize: | |
# Ruler of the image (pixelsxnm) | |
# Covalent radius | |
# beam size/voltage/exposure? (can create larger distortions) (Metadata should be in dm3 files, if it can be read) | |
def __init__(self, | |
model_name: ModelArgs, | |
ckpt_filename: str, | |
dataset_csv: str, | |
threshold: float, | |
detections_path: str, | |
inference_cache_path: str): | |
super().__init__(model_name, ckpt_filename,dataset_csv,threshold,detections_path, inference_cache_path) | |
def image_to_pred_map(self, img: np.ndarray) -> np.ndarray: | |
ruler_units = self.image_dataset.get_ruler_units_by_img_name(self.currently_processing) | |
preprocessed_img, scale_factor = dl_prepro_image(img, ruler_units=ruler_units) | |
padded_image = self.padding_image(preprocessed_img) | |
pred_map = self.get_prediction_map(padded_image) | |
new_dimensions = img.shape[0], img.shape[1] | |
pred_map = np.array(Image.fromarray(pred_map).resize(new_dimensions)) | |
return pred_map | |
def cache_image_identifier(self, img_filename): | |
x = sha1((img_filename+'scaled').encode()).hexdigest() | |
print(x) | |
return x | |