|
@ -26,13 +26,16 @@ class Resnet50ImageEmbedding(Operator): |
|
|
""" |
|
|
""" |
|
|
PyTorch model for image embedding. |
|
|
PyTorch model for image embedding. |
|
|
""" |
|
|
""" |
|
|
def __init__(self, model_name: str) -> None: |
|
|
|
|
|
|
|
|
def __init__(self, model_name: str, framework: str = 'pytorch') -> None: |
|
|
super().__init__() |
|
|
super().__init__() |
|
|
sys.path.append(str(Path(__file__).parent)) |
|
|
sys.path.append(str(Path(__file__).parent)) |
|
|
from pytorch.resnet50 import Resnet50 |
|
|
|
|
|
resnet50_image_embedding = Resnet50(model_name) |
|
|
|
|
|
self._model = resnet50_image_embedding.load_model() |
|
|
|
|
|
|
|
|
if framework == 'pytorch': |
|
|
|
|
|
from pytorch.model import Model |
|
|
|
|
|
if framework == 'tensorflow': |
|
|
|
|
|
from tensorflow.model import Model |
|
|
|
|
|
self.model = Model(model_name) |
|
|
|
|
|
|
|
|
def __call__(self, img_tensor: torch.Tensor) -> NamedTuple('Outputs', [('cnn', numpy.ndarray)]): |
|
|
def __call__(self, img_tensor: torch.Tensor) -> NamedTuple('Outputs', [('cnn', numpy.ndarray)]): |
|
|
|
|
|
embedding = self.model(img_tensor) |
|
|
Outputs = NamedTuple('Outputs', [('cnn', numpy.ndarray)]) |
|
|
Outputs = NamedTuple('Outputs', [('cnn', numpy.ndarray)]) |
|
|
return Outputs(self._model(img_tensor).detach().numpy()) |
|
|
|
|
|
|
|
|
return Outputs(embedding) |
|
|