File size: 3,213 Bytes
14cb32e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
### Invoice extractor (modified for pet image analysis)

## Importing All the modules
import streamlit as st
import os
from PIL import Image
import google.generativeai as genai
from dotenv import load_dotenv


# 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.set_page_config(page_title="Pet Image Analyzer")

st.header("Analyze Your Pet's Image")

## Removed user input for text prompt

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:

  If the uploaded image is not related to Pets then give them a Applogise message but dont give any improper respones.

  * 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, 
  Give the response in proper format with the 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:
      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)
    else:
      st.error("Please upload an image to proceed.")

else:
  st.info("Upload an image of your pet to get started!")
  
# st.balloons()