|
from utils.image_utils import load_image, check_url |
|
from utils.caption_utils import ImageCaptioning |
|
from utils.topic_generation import TopicGenerator |
|
import streamlit as st |
|
import io |
|
|
|
def main(): |
|
st.title("TopicGen") |
|
|
|
topic_generator = TopicGenerator() |
|
img_caption = ImageCaptioning() |
|
|
|
|
|
user_input = st.selectbox(label="Text Input or Image Input", options=["Text", "Image", "Image URL"]) |
|
if user_input == "Text": |
|
text_input = st.text_input(label="Put in your Idea, Let's generate a matching Topic Sentence🤗🤗") |
|
generated_topics = topic_generator.generate_topics(text_input) |
|
for idx, topic in enumerate(generated_topics, 1): |
|
st.write(f"Topic {idx}: {topic}") |
|
elif user_input == "Image": |
|
img_input = st.file_uploader(label="Drop an Image you have been admiring, Let's see what we can do🤔🤔", |
|
type=["jpg", "png", "jpeg"], |
|
accept_multiple_files=True) |
|
for in_img in img_input: |
|
if in_img is not None: |
|
image = io.BytesIO(in_img.read()) |
|
img = load_image(in_img) |
|
capt = img_caption.get_caption(img) |
|
st.image(image=img, caption=capt, width=250, height=250) |
|
generated_topics = topic_generator.generate_topics(capt) |
|
for idx, topic in enumerate(generated_topics, 1): |
|
st.write(f"Topic {idx}: {topic}") |
|
|
|
elif user_input == "Image URL": |
|
url_input = st.text_input(label="Do you have a link to the Image you would like to drop, Go Ahead and We got " |
|
"you covered😉😉") |
|
url_img = check_url(url_input) |
|
img_load = load_image(url_img) |
|
caption = img_caption.get_caption(img_load) |
|
st.image(image=img_load, caption=caption, width=250, height=250) |
|
|
|
generated_topics = topic_generator.generate_topics(caption) |
|
for idx, topic in enumerate(generated_topics, 1): |
|
st.write(f"Topic {idx}: {topic}") |
|
|
|
|
|
if __name__ == "__main__": |
|
main() |
|
|