PawSome-AI-V2 / model.py
Musharraf11's picture
Update model.py
52c3014 verified
raw
history blame
4.18 kB
def model():
# Importing All the modules
import streamlit as st
import os
from PIL import Image
import google.generativeai as genai
from dotenv import load_dotenv
import faiss # Assuming faiss library is used for the index
# Load all environment Variables
load_dotenv()
# Configuring the api key
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
# Function to load Gemini Vison Pro Vision Model and Get response
def get_gemini_response(image, prompt):
# Loading the desired Model
model = genai.GenerativeModel("gemini-pro-vision")
response = model.generate_content([image[0], prompt])
return response.text
# Function to extract data from Image Uploaded
def input_image_setup(uploaded_file):
# Check if a file has been uploaded
if uploaded_file is not None:
# Read the file into bytes
bytes_data = uploaded_file.getvalue()
image_parts = [
{
"mime_type": uploaded_file.type, # Get the mime type of the uploaded file
"data": bytes_data
}
]
return image_parts
else:
raise FileNotFoundError("No file uploaded")
# Initializing our Streamlit Prompt
st.title("Pet Image Analyzer")
st.write(
"""
Welcome to the Pet Image Analyzer! This tool uses advanced AI technology to analyze images of your pets
and provide insights into their breed, potential health issues, and more. Please upload an image of your pet
to get started.
"""
)
# File uploader for image input
uploaded_file = st.file_uploader("Choose a pet image...", type=["jpg", "jpeg", "png", "webp"])
image = None
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image.", use_column_width=True)
# Defining a System Prompt (pre-defined)
input_prompt = f"""Image: (content of the uploaded image)
Text: Analyze the image and provide the following information:
* Breed: Identify the breed of the animal in the image (if possible).
* Disease Detection: If the image shows a diseased area, identify the specific disease (if possible).
* Severity: If a disease is detected, assess the severity of the disease.
* Symptoms: Describe the common symptoms associated with the detected disease.
* Precautions: Recommend preventative measures to avoid the disease.
Give response with headings,
Inform the user if the image is not related to pet care.
"""
submit = st.button("Analyze Image")
Disclaimer = (
"**Disclaimer:** This application uses image analysis to provide potential information about your pet's health. "
"The results are for informational purposes only and should not be considered a replacement for professional veterinary diagnosis. "
"For any concerns about your pet's health, please consult a licensed veterinarian. They can conduct a thorough examination and provide personalized recommendations for your pet's well-being."
)
if submit:
if image:
with st.spinner("Analyzing Image..."):
image_data = input_image_setup(uploaded_file)
response = get_gemini_response(image_data, input_prompt)
st.subheader("Analysis Result:")
st.write(response)
st.warning(Disclaimer)
st.balloons()
else:
st.error("Please upload an image to proceed.")
else:
st.info("Upload an image of your pet to get started!")
st.write(
"""
To analyze your pet's image, click on the 'Choose a pet image...' button above and select an image file from your device.
Once the image is uploaded, click on 'Analyze Image' to receive detailed information about your pet.
"""
)
# Example usage if running as a script
if __name__ == "__main__":
model()