123456789101112131415161718192021222324252627282930313233343536373839404142 |
- try:
- from PIL import Image, UnidentifiedImageError
- from sentence_transformers import SentenceTransformer
- except ImportError:
- raise ImportError("Images requires extra dependencies. Install with `pip install 'embedchain[images]'") from None
- MODEL_NAME = "clip-ViT-B-32"
- class ClipProcessor:
- @staticmethod
- def load_model():
- """Load data from a director of images."""
- # load model and image preprocessing
- model = SentenceTransformer(MODEL_NAME)
- return model
- @staticmethod
- def get_image_features(image_url, model):
- """
- Applies the CLIP model to evaluate the vector representation of the supplied image
- """
- try:
- # load image
- image = Image.open(image_url)
- except FileNotFoundError:
- raise FileNotFoundError("The supplied file does not exist`")
- except UnidentifiedImageError:
- raise UnidentifiedImageError("The supplied file is not an image`")
- image_features = model.encode(image)
- meta_data = {"url": image_url}
- return {"content": image_url, "embedding": image_features.tolist(), "meta_data": meta_data}
- @staticmethod
- def get_text_features(query):
- """
- Applies the CLIP model to evaluate the vector representation of the supplied text
- """
- model = ClipProcessor.load_model()
- text_features = model.encode(query)
- return text_features.tolist()
|