Image-to-Text
Transformers
PyTorch
Safetensors
vision-encoder-decoder
image-text-to-text
vision
nougat
Instructions to use HongxuanLi/nougat-base-deploy with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use HongxuanLi/nougat-base-deploy with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "image-to-text" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # pip install "transformers<5.0.0" from transformers import pipeline pipe = pipeline("image-to-text", model="HongxuanLi/nougat-base-deploy")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForMultimodalLM tokenizer = AutoTokenizer.from_pretrained("HongxuanLi/nougat-base-deploy") model = AutoModelForMultimodalLM.from_pretrained("HongxuanLi/nougat-base-deploy", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Download handler.py from HongxuanLi/nougat-base-deploy: direct link, hf CLI and curl.
- Browser
- Download file 1.68 kB
-
https://huggingface.co/HongxuanLi/nougat-base-deploy/resolve/main/handler.py
- Command line
-
hf download hf://HongxuanLi/nougat-base-deploy/handler.py
-
curl -L -o handler.py https://huggingface.co/HongxuanLi/nougat-base-deploy/resolve/main/handler.py
1.68 kB
| from transformers import NougatProcessor, VisionEncoderDecoderModel | |
| import torch.cuda | |
| import io | |
| import base64 | |
| from PIL import Image | |
| from typing import Dict, Any | |
| class EndpointHandler(): | |
| def __init__(self, path="facebook/nougat-base"): | |
| self.device = "cuda" if torch.cuda.is_available() else "cpu" | |
| self.processor = NougatProcessor.from_pretrained(path) | |
| self.model = VisionEncoderDecoderModel.from_pretrained(path) | |
| self.model = self.model.to(self.device) | |
| def __call__(self, data: Dict[str, Any]) -> Dict[str, Any]: | |
| """ | |
| Args: | |
| data (Dict): The payload with the text prompt | |
| and generation parameters. | |
| """ | |
| # Get inputs | |
| input = data.pop("inputs", None) | |
| parameters = data.pop("parameters", None) | |
| fix_markdown = data.pop("fix_markdown", None) | |
| if input is None: | |
| raise ValueError("Missing image.") | |
| # autoregressively generate tokens, with custom stopping criteria (as defined by the Nougat authors) | |
| binary_data = base64.b64decode(input) | |
| image = Image.open(io.BytesIO(binary_data)) | |
| pixel_values = self.processor(images= image, return_tensors="pt").pixel_values | |
| outputs = self.model.generate(inputs = pixel_values.to(self.device), | |
| bad_words_ids=[[self.processor.tokenizer.unk_token_id]], | |
| **parameters) | |
| generated = self.processor.batch_decode(outputs[0], skip_special_tokens=True)[0] | |
| prediction = self.processor.post_process_generation(generated, fix_markdown=fix_markdown) | |
| return {"generated_text": prediction} |