24Sureshkumar commited on
Commit
3c4c14d
·
verified ·
1 Parent(s): 92c7729

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -53
app.py CHANGED
@@ -1,66 +1,84 @@
1
- # Install necessary libraries if not already installed
2
- # !pip install transformers diffusers torch torchvision accelerate huggingface_hub matplotlib Pillow
3
-
4
- from huggingface_hub import login
5
- from transformers import MarianTokenizer, MarianMTModel
6
  from PIL import Image
7
  import torch
8
- from torchvision import transforms
9
- from transformers import BlipProcessor, BlipForConditionalGeneration
10
- import matplotlib.pyplot as plt
11
-
12
- # Step 1: Login to Hugging Face
13
- login("your_huggingface_token_here") # 🔐 Replace this with your actual token
14
 
15
- # Step 2: Tamil to English Translation
16
- def translate_tamil_to_english(text):
17
- model_name = "Helsinki-NLP/opus-mt-ta-en"
18
- tokenizer = MarianTokenizer.from_pretrained(model_name)
19
- model = MarianMTModel.from_pretrained(model_name)
20
 
21
- inputs = tokenizer(text, return_tensors="pt", padding=True)
22
- translated = model.generate(**inputs)
23
- english_text = tokenizer.decode(translated[0], skip_special_tokens=True)
24
- return english_text
25
 
26
- # Step 3: Generate Image (using any placeholder image here since BLIP is captioning-only)
27
- # You can download a sample image or use a real generation model like Stable Diffusion
28
- def get_sample_image():
29
- img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
30
- img = Image.open(requests.get(img_url, stream=True).raw).convert('RGB')
31
- return img
32
 
33
- # Step 4: Describe the Image
34
- def describe_image(image):
35
- processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
36
- model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")
37
 
38
- inputs = processor(images=image, return_tensors="pt")
39
- out = model.generate(**inputs)
40
- caption = processor.decode(out[0], skip_special_tokens=True)
41
- return caption
 
 
42
 
43
- # === MAIN ===
44
- if __name__ == "__main__":
45
- import requests
 
 
46
 
47
- # Step A: Input Tamil text
48
- tamil_text = "ஒரு சிறிய வீடு கடற்கரைக்கு அருகிலுள்ளது"
49
- print("Tamil Input:", tamil_text)
 
 
50
 
51
- # Step B: Translate to English
52
- english_translation = translate_tamil_to_english(tamil_text)
53
- print("Translated English:", english_translation)
 
 
 
54
 
55
- # Step C: Get sample image (placeholder for now, since we aren't using text-to-image yet)
56
- image = get_sample_image()
 
 
 
 
57
 
58
- # Step D: Describe the image
59
- caption = describe_image(image)
60
- print("Image Caption:", caption)
61
 
62
- # Optional: Display the image
63
- plt.imshow(image)
64
- plt.title(caption)
65
- plt.axis("off")
66
- plt.show()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import requests
3
+ from transformers import MarianMTModel, MarianTokenizer, AutoModelForCausalLM, AutoTokenizer
 
 
4
  from PIL import Image
5
  import torch
6
+ import io
7
+ import os
 
 
 
 
8
 
9
+ # Load Hugging Face API key securely
10
+ HF_API_KEY = os.getenv("HF_API_KEY") # give token
11
+ if not HF_API_KEY:
12
+ raise ValueError("HF_API_KEY is not set. Add it in Hugging Face 'Variables and Secrets'.")
 
13
 
14
+ # API Endpoint for Image Generation
15
+ IMAGE_GEN_URL = "https://api-inference.huggingface.co/models/black-forest-labs/FLUX.1-schnell"
16
+ HEADERS = {"Authorization": f"Bearer {HF_API_KEY}"}
 
17
 
18
+ # Check if GPU is available
19
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
 
 
 
 
20
 
21
+ # Load Tamil-to-English Translation Model
22
+ translator_model = "Helsinki-NLP/opus-mt-mul-en"
23
+ translator = MarianMTModel.from_pretrained(translator_model).to(device)
24
+ translator_tokenizer = MarianTokenizer.from_pretrained(translator_model)
25
 
26
+ # Load Text Generation Model
27
+ generator_model = "EleutherAI/gpt-neo-1.3B"
28
+ generator = AutoModelForCausalLM.from_pretrained(generator_model).to(device)
29
+ generator_tokenizer = AutoTokenizer.from_pretrained(generator_model)
30
+ if generator_tokenizer.pad_token is None:
31
+ generator_tokenizer.pad_token = generator_tokenizer.eos_token
32
 
33
+ def translate_tamil_to_english(text):
34
+ """Translates Tamil text to English."""
35
+ inputs = translator_tokenizer(text, return_tensors="pt", padding=True, truncation=True).to(device)
36
+ output = translator.generate(**inputs)
37
+ return translator_tokenizer.decode(output[0], skip_special_tokens=True)
38
 
39
+ def generate_text(prompt):
40
+ """Generates a creative text based on English input."""
41
+ inputs = generator_tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(device)
42
+ output = generator.generate(**inputs, max_length=100)
43
+ return generator_tokenizer.decode(output[0], skip_special_tokens=True)
44
 
45
+ def generate_image(prompt):
46
+ """Sends request to API for image generation."""
47
+ response = requests.post(IMAGE_GEN_URL, headers=HEADERS, json={"inputs": prompt})
48
+ if response.status_code == 200:
49
+ return Image.open(io.BytesIO(response.content))
50
+ return Image.new("RGB", (300, 300), "red") # Placeholder image for errors
51
 
52
+ def process_input(tamil_text):
53
+ """Complete pipeline: Translation, Text Generation, and Image Generation."""
54
+ english_text = translate_tamil_to_english(tamil_text)
55
+ creative_text = generate_text(english_text)
56
+ image = generate_image(english_text)
57
+ return english_text, creative_text, image
58
 
59
+ # Create Gradio Interface
 
 
60
 
61
+ # interface = gr.Interface(
62
+ # fn=process_input,
63
+ # inputs=gr.Textbox(label="Enter Tamil Text"),
64
+ # outputs=[
65
+ # gr.Textbox(label="Translated English Text"),
66
+ # gr.Textbox(label="Creative Text"),
67
+ # gr.Image(label="Generated Image")
68
+ # ],
69
+ # title="Tamil to English Translator & Image Generator",
70
+ # description="Enter Tamil text, and this app will translate it, generate a creative description, and create an image based on the text."
71
+ # )
72
+ interface = gr.Interface(
73
+ fn=process_input,
74
+ inputs=gr.Textbox(label="Enter Tamil Text"),
75
+ outputs=[
76
+ gr.Textbox(label="Translated English Text"),
77
+ gr.Textbox(label="Creative Text"),
78
+ gr.Image(label="Generated Image")
79
+ ],
80
+ title="Tamil to English Translator & Image Generator",
81
+ description="Enter Tamil text, and this app will translate it, generate a creative description, and create an image based on the text."
82
+ )
83
+ # Launch the Gradio app
84
+ interface.launch()