Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from PIL import Image | |
| import torch | |
| import yake | |
| import requests | |
| from io import BytesIO | |
| # Load Janus-Pro-7B model and tokenizer | |
| model = AutoModelForCausalLM.from_pretrained("deepseek-ai/Janus-Pro-7B") | |
| tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/Janus-Pro-7B") | |
| # Function to process image and generate text-based caption using external image model (e.g., BLIP, CLIP) | |
| # For this case, we assume BLIP is used or any other text-based description for image | |
| def process_image_for_caption(image): | |
| # This is just a placeholder; replace this with a real image captioning model like BLIP or CLIP | |
| # For now, we'll return a dummy caption. | |
| return "A person holding a book in a library." | |
| # Function to enhance caption using Janus-Pro-7B | |
| def enhance_caption_with_janus(caption): | |
| inputs = tokenizer(caption, return_tensors="pt") | |
| outputs = model.generate(**inputs, max_length=100) | |
| enhanced_caption = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| return enhanced_caption | |
| # YAKE-based keyword extraction and task name generation | |
| class YakeTaskGenerator: | |
| def __init__(self, n=2, top_k=3): | |
| self.kw_extractor = yake.KeywordExtractor(n=n, top=top_k) | |
| def extract_keywords(self, caption): | |
| return [kw[0] for kw in self.kw_extractor.extract_keywords(caption)] | |
| def generate_task_name(self, caption): | |
| keywords = self.extract_keywords(caption) | |
| if not keywords: | |
| return "General Image Processing" | |
| task_name = " ".join(keywords[:2]) # Use top 2 keywords for task | |
| task_name = task_name.capitalize() + " Analysis" # Format task name | |
| return task_name | |
| # Full pipeline for image processing and task name generation | |
| def process_image_and_generate_task(image): | |
| caption = process_image_for_caption(image) # Get image caption | |
| enhanced_caption = enhance_caption_with_janus(caption) # Enhance the caption using Janus-Pro-7B | |
| task_generator = YakeTaskGenerator() | |
| task_name = task_generator.generate_task_name(enhanced_caption) | |
| return task_name | |
| # Gradio Interface | |
| def gradio_interface(image): | |
| task_name = process_image_and_generate_task(image) | |
| return task_name | |
| # Create Gradio interface | |
| image_input = gr.Image(type="pil", label="Upload Image") | |
| output = gr.Textbox(label="Generated Task Name") | |
| gr.Interface( | |
| fn=gradio_interface, | |
| inputs=image_input, | |
| outputs=output, | |
| live=True, | |
| title="Image Captioning and Task Name Generation with Janus-Pro-7B" | |
| ).launch(share=True, debug=True) | |