{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "id": "Dn6Ey7mV7-YW" }, "outputs": [], "source": [ "# import part\n", "!pip install streamlit pyngrok\n", "import streamlit as st\n", "from transformers import pipeline\n", "from PIL import Image\n", "import io\n", "\n", "\n", "# function part\n", "def generate_image_caption(image):\n", " \"\"\"Generates a caption for the given image using a pre-trained model.\"\"\"\n", " img2caption = pipeline(\"image-to-text\", model=\"Salesforce/blip-image-captioning-base\")\n", " result = img2caption(image)\n", " return result[0]['generated_text']\n", "\n", "def text2story(text):\n", " \"\"\"Generates a children's story from text input with genre adaptation\"\"\"\n", " story_prompt = f\"Create a funny 100-word story for 8-year-olds about: {text}. Include: \"\n", " story_prompt += \"1) A silly character 2) Magical object 3) Sound effects 4) Happy ending\"\n", "\n", " pipe = pipeline(\"text-generation\", model=\"pranavpsv/genre-story-generator-v2\")\n", " story_text = pipe(\n", " story_prompt,\n", " max_new_tokens=200,\n", " temperature=0.9,\n", " top_k=50\n", " )[0]['generated_text']\n", " return story_text.split(\"Happy ending\")[-1].strip() # Clean output\n", "\n", "def main():\n", " st.title(\"📖 Image Story Generator\")\n", " st.write(\"Upload an image and get a magical children's story!\")\n", "\n", " uploaded_image = st.file_uploader(\"Choose an image...\", type=[\"jpg\", \"jpeg\", \"png\"])\n", "\n", " if uploaded_image:\n", " image = Image.open(uploaded_image).convert(\"RGB\")\n", " st.image(image, use_column_width=True)\n", "\n", " with st.spinner(\"✨ Analyzing image...\"):\n", " caption = generate_image_caption(image)\n", "\n", " st.subheader(\"Image Understanding\")\n", " st.write(caption)\n", "\n", " with st.spinner(\"📖 Writing story...\"):\n", " story = text2story(caption)\n", "\n", " st.subheader(\"Magical Story\")\n", " st.write(story)\n", "\n", "if __name__ == \"__main__\":\n", " main()" ] } ] }