File size: 2,896 Bytes
fdd0a59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{
  "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()"
      ]
    }
  ]
}