visualref_docker / models /vlm_wrapper.py
bulatkh
WIP: Adding relevance feedback based on afs and captioning
5ea4a3b
Raw
History Blame Contribute Delete
1.28 kB
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from typing import Any, Optional
@dataclass
class VLMWrapperRetrieval(ABC):
model: Optional[Any] = field(default=None)
processor: Optional[Any] = field(default=None)
def __post_init__(self):
if self.model is None or self.processor is None:
raise ValueError("Both model and processor must be provided")
@abstractmethod
def process_inputs(self, *args, **kwargs):
pass
@abstractmethod
def get_embeddings(self, *args, **kwargs):
pass
@abstractmethod
def get_text_embeddings(self, *args, **kwargs):
pass
@abstractmethod
def get_image_embeddings(self, *args, **kwargs):
pass
@dataclass
class VLMWrapperCaptioning(ABC):
model: Optional[Any] = field(default=None)
processor: Optional[Any] = field(default=None)
def __post_init__(self):
if self.model is None or self.processor is None:
raise ValueError("Both model and processor must be provided")
@abstractmethod
def process_inputs(self, *args, **kwargs):
pass
@abstractmethod
def generate(self, *args, **kwargs):
pass
@abstractmethod
def decode(self, *args, **kwargs):
pass