Instructions to use yuvansharma/caip-vitl256 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use yuvansharma/caip-vitl256 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("feature-extraction", model="yuvansharma/caip-vitl256", trust_remote_code=True)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("yuvansharma/caip-vitl256", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
| """Processor for CAIP: bundles the image processor and the SigLIP 2 tokenizer. | |
| Mirrors open_clip's `HFTokenizer.__call__` for the text path: each string is | |
| `canonicalize`-cleaned (underscores->spaces, punctuation removed, lowercased, | |
| whitespace collapsed) then tokenized with padding to a fixed context length | |
| (64) and truncation. The pad token id (0) is what the model's cross-attention | |
| pool treats as padding. | |
| proc = AutoProcessor.from_pretrained(repo, trust_remote_code=True) | |
| inputs = proc(images=pil_image, text="pick up the red cup", return_tensors="pt") | |
| # inputs["pixel_values"] [B,3,256,256], inputs["input_ids"] [B,64] | |
| """ | |
| import string | |
| from transformers.feature_extraction_utils import BatchFeature | |
| from transformers.processing_utils import ProcessorMixin | |
| _PUNCT_TABLE = str.maketrans("", "", string.punctuation) | |
| def canonicalize_text(text: str) -> str: | |
| # From open_clip.tokenizer.canonicalize_text (big_vision canonicalization). | |
| text = text.replace("_", " ") | |
| text = text.translate(_PUNCT_TABLE) | |
| text = text.lower() | |
| text = " ".join(text.split()) | |
| return text.strip() | |
| class CaipProcessor(ProcessorMixin): | |
| attributes = ["image_processor", "tokenizer"] | |
| image_processor_class = "AutoImageProcessor" | |
| tokenizer_class = "AutoTokenizer" | |
| def __init__(self, image_processor=None, tokenizer=None, context_length: int = 64, **kwargs): | |
| super().__init__(image_processor, tokenizer) | |
| self.context_length = context_length | |
| def __call__(self, images=None, text=None, return_tensors="pt", **kwargs): | |
| if images is None and text is None: | |
| raise ValueError("Provide at least one of `images` or `text`.") | |
| data = {} | |
| if images is not None: | |
| data.update(self.image_processor(images, return_tensors=return_tensors)) | |
| if text is not None: | |
| if isinstance(text, str): | |
| text = [text] | |
| text = [canonicalize_text(t) for t in text] | |
| enc = self.tokenizer( | |
| text, | |
| return_tensors=return_tensors, | |
| max_length=self.context_length, | |
| padding="max_length", | |
| truncation=True, | |
| add_special_tokens=True, | |
| ) | |
| data["input_ids"] = enc["input_ids"] | |
| return BatchFeature(data=data, tensor_type=return_tensors) | |