File size: 3,881 Bytes
bc7d231 c7c92f9 dfda773 58e3cb5 63fc765 5554139 e9d7d81 fdc69a0 bc7d231 0fa8d68 f35e4aa 1d94d91 f35e4aa 2468667 0fa8d68 1d94d91 f35e4aa 2468667 f35e4aa 766fe20 f35e4aa 2468667 f35e4aa 2468667 40e0ea9 0fa8d68 2468667 0fa8d68 2468667 501585d 2468667 0fa8d68 f35e4aa |
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
import streamlit as st
import torch
import bitsandbytes
import accelerate
import scipy
from PIL import Image
import torch.nn as nn
from my_model.object_detection import detect_and_draw_objects
from my_model.captioner.image_captioning import get_caption
from my_model.utilities import free_gpu_resources
# Placeholder for undefined functions
def load_caption_model():
st.write("Placeholder for load_caption_model function")
return None, None
def answer_question(image, question, model, processor):
return "Placeholder answer for the question"
def get_caption(image):
return "Generated caption for the image"
def free_gpu_resources():
pass
# Sample images (assuming these are paths to your sample images)
sample_images = ["Files/sample1.jpg", "Files/sample2.jpg", "Files/sample3.jpg",
"Files/sample4.jpg", "Files/sample5.jpg", "Files/sample6.jpg",
"Files/sample7.jpg"]
def run_inference():
st.title("Run Inference")
image_qa_and_object_detection()
def image_qa_and_object_detection():
# Image-based Q&A functionality
st.subheader("Talk to your image")
image_qa_app()
# Object Detection functionality
st.subheader("Object Detection")
object_detection_app()
def image_qa_app():
# Initialize session state for storing images and their Q&A histories
if 'images_qa_history' not in st.session_state:
st.session_state['images_qa_history'] = []
# Button to clear all data
if st.button('Clear All'):
st.session_state['images_qa_history'] = []
st.experimental_rerun()
# Image uploader
uploaded_image = st.file_uploader("Upload an Image", type=["png", "jpg", "jpeg"])
# Display sample images
st.write("Or choose from sample images:")
for idx, sample_image_path in enumerate(sample_images):
if st.button(f"Use Sample Image {idx+1}", key=f"sample_{idx}"):
uploaded_image = Image.open(sample_image_path)
process_uploaded_image(uploaded_image)
if uploaded_image is not None:
image = Image.open(uploaded_image)
process_uploaded_image(image)
def process_uploaded_image(image):
current_image_key = image.filename # Use image filename as a unique key
# Check if the image is already in the history
if not any(info['image_key'] == current_image_key for info in st.session_state['images_qa_history']):
st.session_state['images_qa_history'].append({
'image_key': current_image_key,
'image': image,
'qa_history': []
})
# Display all images and their Q&A histories
for image_info in st.session_state['images_qa_history']:
st.image(image_info['image'], caption='Uploaded Image.', use_column_width=True)
for q, a in image_info['qa_history']:
st.text(f"Q: {q}\nA: {a}\n")
# If the current image is being processed
if image_info['image_key'] == current_image_key:
# Unique keys for each widget
question_key = f"question_{current_image_key}"
button_key = f"button_{current_image_key}"
# Question input for the current image
question = st.text_input("Ask a question about this image:", key=question_key)
# Get Answer button for the current image
if st.button('Get Answer', key=button_key):
# Process the image and question
answer = answer_question(image_info['image'], question, None, None) # Implement this function
image_info['qa_history'].append((question, answer))
st.experimental_rerun() # Rerun to update the display
# Object Detection App
def object_detection_app():
# ... Implement your code for object detection ...
pass
# Main function and other display functions...
if __name__ == "__main__":
main()
|