File size: 1,469 Bytes
18cb2b3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from transformers import ProcessorMixin, AutoImageProcessor, AutoTokenizer

class NexaVisionMoEProcessor(ProcessorMixin):
    attributes = ["image_processor", "tokenizer"]
    image_processor_class = "AutoImageProcessor"
    tokenizer_class = "AutoTokenizer"

    def __init__(self, image_processor=None, tokenizer=None, **kwargs):
        if image_processor is None:
            image_processor = AutoImageProcessor.from_pretrained("google/siglip2-so400m-patch16-naflex")
        if tokenizer is None:
            tokenizer = AutoTokenizer.from_pretrained("Neura-Tech-AI/Nexa-AI-4x4B-Instruct")
        
        super().__init__(image_processor, tokenizer, **kwargs)

    def __call__(self, text=None, images=None, return_tensors="pt", **kwargs):
        if text is None and images is None:
            raise ValueError("You must provide either text or images.")

        output_kwargs = {}
        if images is not None:
            image_inputs = self.image_processor(images, return_tensors=return_tensors, **kwargs)
            output_kwargs.update(image_inputs)

        if text is not None:
            text_inputs = self.tokenizer(text, return_tensors=return_tensors, **kwargs)
            output_kwargs.update(text_inputs)

        return output_kwargs

    def batch_decode(self, *args, **kwargs):
        return self.tokenizer.batch_decode(*args, **kwargs)

    def decode(self, *args, **kwargs):
        return self.tokenizer.decode(*args, **kwargs)