Spaces:
Running
Running
File size: 5,888 Bytes
da78f82 693649c da78f82 693649c ac7f87d 693649c da78f82 693649c da78f82 693649c da78f82 693649c da78f82 693649c da78f82 693649c da78f82 9a6ed49 693649c |
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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
import gradio as gr
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage, SystemMessage
import tensorflow as tf
from tensorflow import keras
import json
import numpy as np
from PIL import Image
bird_cnn = keras.models.load_model('bird_model.h5')
with open('class_names.json', 'r') as class_name:
class_names = json.load(class_name)
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash-latest", convert_system_message_to_human=True)
def get_info(language, img):
img = img.resize((224, 224), resample=Image.NEAREST)
img_array = keras.utils.img_to_array(img)
img_array = tf.expand_dims(img_array, 0)
predictions = bird_cnn.predict(img_array)
score = tf.nn.softmax(predictions[0])
species = class_names[np.argmax(score)]
result = llm(
[
SystemMessage(content=f'Anda adalah sistem penulis ensiklopedia yang memberikan informasi teraktual dan '
f'bersifat fakta mengenai dunia aves.'
f'Setiap kali memberikan informasi, berikan dengan struktur yang terformat layaknya '
f'buku ensiklopedia.'
f'Informasi yang diberikan antara lain adalah taksonomi, habitat, populasi, tingkah '
f'laku, serta sebarannya diseluruh dunia.'
f'Berikan Output yang detail mengenai Species Burungnya tambahkan Infomasi yang '
f'berkaitan dengan Informasi yang diinginkan sebelumnya'
f'Jadikan Struktur output rapih dan bersih agar lebih mudah dibaca dan dipahami'
f'Tampilkan Domain, Kingdom, Phylum, Class, Order, Family, Genus, dan Species dari '
f'Species Burung sebagai infomasi Taksonomi'
f'Berikan output tanpa format teks dan hanya berupa raw string dengan garis baru dan '
f'pemaragrafan seperti docs'
f'Output tidak perlu menggunakan markdown'
f'Nama Species Burung (Nama Latin)'
f''
f'Taksonomi'
f'- Domain :'
f'- Kingdom :'
f'- Phylum :'
f'- Class :'
f'- Order :'
f'- Family :'
f'- Genus :'
f'- Species :'
f''
f'Habitat'
f''
f'Populasi'
f''
f'Tingkah Laku'
f''
f'Penyebaran'
f'Jadikan struktur diatas menjadi default untuk output dari species burung dan selalu '
f'gunakan struktur ini tanpa perlu markdown'
f'Jika jenis burung bukan merupakan spesies spesifik, '
f'berikan informasi umum mengenai burung dan '
f'pada kolom species berikan setiap species yang termasuk dalam jenis burung tersebut'
f'lalu pada nama spesies burung, '
f'berikan nama latin untuk genus saja. Kasuari (Casuarius). '
f'Nama burung disesuaikan dengan bahasa yang dipilih oleh pengguna, jika pengguna '
f'memilih bahasa indonesia, maka nama burung harus disesuaikan dengan bahasa indonesia'
f'Jangan tambahkan simbol sebagain pembeda judul dan sub-judul dengan teks biasa'
f'Tambahkan Referensi darimana informasi didapatkan dalam bentuk journal, website '
f'atau referensi manapun, gunakan formatting seperti mendeley untuk referensi'),
HumanMessage(content=f'Berikan informasi taksonomi, habitat, Populasi, Tingkah Laku, dan Penyebaran '
f'mengenai burung {species} menggunakan bahasa {language}'),
]
)
return result.content
title = "Aviary Vision"
description = """
<div style="display: flex; flex-direction: column; align-items: center;">
<h1 style="margin: 0; font-size: 60px;">Aviary Vision</h1>
<p style="margin: 0; font-size: 20px;">By: A2 Si Paling Data</p>
</div>
<p>Aviary Vision is a system that can identify bird species from an image and provide
information about the species in the selected language.</p>
<i>Note: The information provided is AI generated and may not be accurate. Use at your own risk.</i>
"""
examples = [
['English', 'bali_starling.png'],
['Bahasa Indonesia', 'cassowary.png']
]
demo = gr.Interface(
fn=get_info,
inputs=[
gr.Dropdown(choices=[
'English',
'Bahasa Indonesia',
'日本語',
'中文',
'한국어',
'Español',
'Français',
'Deutsch',
'Русский'
],
label="Select Language",
type="value",
info="Select the language you want to use"),
gr.Image(type="pil",
label="Upload Image")
],
outputs=['text'],
allow_flagging="never",
title=title,
description=description,
examples=examples,
cache_examples=False
)
demo.launch()
|