Spaces:
Sleeping
Sleeping
| from fastai.vision.all import * | |
| import gradio as gr | |
| import fal_client | |
| from PIL import Image | |
| import io | |
| import random | |
| import requests | |
| from pathlib import Path | |
| # Load your model | |
| learn = load_learner('resnet50_30_categories.pkl') | |
| # Wikipedia links | |
| search_terms_wikipedia = { | |
| "blazing star": "https://en.wikipedia.org/wiki/Mentzelia", | |
| "bristlecone pine": "https://en.wikipedia.org/wiki/Pinus_longaeva", | |
| # ... (same as before) | |
| "goldfields coreopsis": "https://en.wikipedia.org/wiki/Coreopsis" | |
| } | |
| # Prompt templates for art generation | |
| prompt_templates = [ | |
| "A dreamy watercolor scene of a {flower} on a misty morning trail, with golden sunbeams filtering through towering redwoods, and a curious hummingbird hovering nearby.", | |
| "A loose, expressive watercolor sketch of a {flower} in a wild meadow, surrounded by dancing butterflies and morning dew drops sparkling like diamonds in the dawn light.", | |
| "An artist's nature journal page featuring a detailed {flower} study, with delicate ink lines and soft watercolor washes, complete with small sketches of bees and field notes in the margins.", | |
| "A vibrant plein air painting of a {flower} patch along a coastal hiking trail, with crashing waves and rugged cliffs in the background, painted in bold, energetic brushstrokes.", | |
| "A whimsical mixed-media scene of a {flower} garden at sunrise, combining loose watercolor washes with detailed botanical illustrations, featuring hidden wildlife and morning fog rolling through the valley." | |
| ] | |
| # Example image paths (replace with actual paths on your system or Hugging Face space) | |
| example_images = [ | |
| str(Path('example_images/example_1.jpg')), | |
| str(Path('example_images/example_2.jpg')), | |
| str(Path('example_images/example_3.jpg')), | |
| str(Path('example_images/example_4.jpg')), | |
| str(Path('example_images/example_5.jpg')) | |
| ] | |
| def on_queue_update(update): | |
| if isinstance(update, fal_client.InProgress): | |
| for log in update.logs: | |
| print(log["message"]) | |
| else: | |
| print("Received non-InProgress update:", update) | |
| # Processing function | |
| def process_image(img): | |
| predicted_class, _, probs = learn.predict(img) | |
| classification_results = dict(zip(learn.dls.vocab, map(float, probs))) | |
| # Wikipedia | |
| wiki_url = search_terms_wikipedia.get(predicted_class.lower(), "No Wikipedia entry found.") | |
| # Generate image via FAL | |
| result = fal_client.subscribe( | |
| "fal-ai/flux/schnell", | |
| arguments={ | |
| "prompt": random.choice(prompt_templates).format(flower=predicted_class), | |
| "image_size": "portrait_4_3" | |
| }, | |
| with_logs=True, | |
| on_queue_update=on_queue_update, | |
| ) | |
| image_url = result['images'][0]['url'] | |
| response = requests.get(image_url) | |
| generated_image = Image.open(io.BytesIO(response.content)) | |
| return classification_results, generated_image, wiki_url | |
| # Interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🌼 Wildflower Classifier & Artistic Generator") | |
| with gr.Row(): | |
| input_image = gr.Image(height=230, width=230, label="Upload an image", type="pil") | |
| with gr.Row(): | |
| with gr.Column(): | |
| label_output = gr.Label(label="Prediction") | |
| wiki_output = gr.Textbox(label="Wikipedia Link") | |
| generated_image = gr.Image(label="AI Artistic Interpretation") | |
| gr.Examples( | |
| examples=example_images, | |
| inputs=input_image, | |
| examples_per_page=6 | |
| ) | |
| input_image.upload( | |
| fn=process_image, | |
| inputs=input_image, | |
| outputs=[label_output, generated_image, wiki_output] | |
| ) | |
| demo.launch() | |