Spaces:
Runtime error
Runtime error
import cv2 | |
import numpy as np | |
import streamlit as st | |
from datasets import load_dataset | |
from PIL import Image | |
from matplotlib.pyplot import imshow | |
from transformers import pipeline | |
from transformers import AutoFeatureExtractor, AutoModelForImageClassification | |
import json | |
def load_dataset_from_Hugging_Face(): | |
reloaded_dataset_thermal = load_dataset("gokulraja17/rice-thermal-demo") | |
reloaded_dataset_rgb = load_dataset("gokulraja17/rice-rgb-demo2") | |
return reloaded_dataset_thermal,reloaded_dataset_rgb | |
def load_model_from_Hugging_Face(type): | |
if(type=="thermal"): | |
feature_extractor = AutoFeatureExtractor.from_pretrained("flagship/convnext-fine-tuned-thermal-new_demo") | |
model = AutoModelForImageClassification.from_pretrained("flagship/convnext-fine-tuned-thermal-new_demo") | |
else: | |
feature_extractor = AutoFeatureExtractor.from_pretrained("gokulraja17/convnext-fine-tuned-rgb-demo2") | |
model = AutoModelForImageClassification.from_pretrained("gokulraja17/convnext-fine-tuned-rgb-demo2") | |
return feature_extractor,model | |
def get_image_and_label(reloaded_dataset_thermal,reloaded_dataset_rgb,index): | |
url_thermal = reloaded_dataset_thermal["test"][index] | |
url_rgb = reloaded_dataset_rgb["test"][index] | |
return url_thermal["image"],url_thermal["label"],url_rgb["image"],url_rgb["label"] | |
def create_pipeline(_feature_extractor,_model): | |
pipe = pipeline("image-classification", | |
model=_model, | |
feature_extractor=_feature_extractor) | |
return pipe | |
def get_output_label(result): | |
max = -999 | |
label = "" | |
for i in result: | |
if(max<i['score']): | |
max = i['score'] | |
label = i["label"] | |
return label | |
def consolidate_score(thermal_result,rgb_result): | |
consol_score_1=[] | |
consol_score_2=[] | |
consol_score=[] | |
for i in range(0,len(thermal_result)): | |
consol_score_1.append(list(thermal_result[i].values())) | |
consol_score_2.append(list(rgb_result[i].values())) | |
temp_label="" | |
for i in range(0,len(thermal_result)): | |
temp_label=consol_score_1[i][1] | |
for j in range(0,len(rgb_result)): | |
if(temp_label==consol_score_2[j][1]): | |
consol_score.append([temp_label,consol_score_1[i][0],consol_score_2[j][0]]) | |
output_consol=[] | |
for i in consol_score: | |
output_consol.append({'score':(((i[2]/100)*35)+((i[1]/100)*65)),'label':i[0]}) | |
return output_consol | |
thermal_check = st.checkbox("Thermal Input") | |
rgb_check = st.checkbox("RGB Input") | |
both_check = st.checkbox("Both") | |
if(thermal_check or rgb_check): | |
if(thermal_check): | |
st.write("Thermal Image file uploader...") | |
uploaded_file = st.file_uploader("Choose a thermal image file", type=["jpg","png"]) | |
if uploaded_file is not None: | |
input_image = Image.open(uploaded_file) | |
st.write("Input Image...") | |
st.image(input_image) | |
dataset_thermal,dataset_rgb = load_dataset_from_Hugging_Face() | |
labels=dataset_thermal["train"].features["label"].names | |
id2label={k:v for k,v in enumerate(labels)} | |
label2id = {v:k for k,v in enumerate(labels)} | |
feature_extractor_thermal,model_thermal = load_model_from_Hugging_Face("thermal") | |
pipe_thermal = create_pipeline(feature_extractor_thermal,model_thermal) | |
# opencv_image = np.array(opencv_image) | |
thermal_result=pipe_thermal(input_image) | |
consolidated_result=get_output_label(thermal_result) | |
if(consolidated_result!="RiceLeafs_Healthy"): | |
f = open("remedy.json") | |
data = json.load(f) | |
for i in data[consolidated_result.split("_")[0]]: | |
if(i["disease_name"]==consolidated_result.split("_")[1]): | |
for key in i: | |
st.write(key," : ",i[key]) | |
else: | |
st.write(consolidated_result.split("_")[0]," is ",consolidated_result.split("_")[1]) | |
if(rgb_check): | |
st.write("RGB Image file uploader...") | |
uploaded_file = st.file_uploader("Choose a rgb image file", type=["jpg","png"]) | |
if uploaded_file is not None: | |
input_image = Image.open(uploaded_file) | |
st.write("Input Image...") | |
st.image(input_image) | |
dataset_thermal,dataset_rgb = load_dataset_from_Hugging_Face() | |
labels=dataset_thermal["train"].features["label"].names | |
id2label={k:v for k,v in enumerate(labels)} | |
label2id = {v:k for k,v in enumerate(labels)} | |
feature_extractor_rgb,model_rgb = load_model_from_Hugging_Face("rgb") | |
pipe_rgb = create_pipeline(feature_extractor_rgb,model_rgb) | |
rgb_result=pipe_rgb(input_image) | |
consolidated_result=get_output_label(rgb_result) | |
if(consolidated_result!="RiceLeafs_Healthy"): | |
f = open("remedy.json") | |
data = json.load(f) | |
for i in data[consolidated_result.split("_")[0]]: | |
if(i["disease_name"]==consolidated_result.split("_")[1]): | |
for key in i: | |
st.write(key," : ",i[key]) | |
else: | |
st.write(consolidated_result.split("_")[0]," is ",consolidated_result.split("_")[1]) | |
if(both_check): | |
st.write("Thermal Image file uploader...") | |
uploaded_file = st.file_uploader("Choose a thermal image file", type=["jpg","png"]) | |
if uploaded_file is not None: | |
input_image = Image.open(uploaded_file) | |
st.write("Input Image...") | |
st.image(input_image) | |
dataset_thermal,dataset_rgb = load_dataset_from_Hugging_Face() | |
labels=dataset_thermal["train"].features["label"].names | |
id2label={k:v for k,v in enumerate(labels)} | |
label2id = {v:k for k,v in enumerate(labels)} | |
feature_extractor_thermal,model_thermal = load_model_from_Hugging_Face("thermal") | |
pipe_thermal = create_pipeline(feature_extractor_thermal,model_thermal) | |
# opencv_image = np.array(opencv_image) | |
thermal_result=pipe_thermal(input_image) | |
st.write("RGB Image file uploader...") | |
uploaded_file = st.file_uploader("Choose a rgb image file", type=["jpg","png"]) | |
if uploaded_file is not None: | |
input_image = Image.open(uploaded_file) | |
st.write("Input Image...") | |
st.image(input_image) | |
dataset_thermal,dataset_rgb = load_dataset_from_Hugging_Face() | |
labels=dataset_thermal["train"].features["label"].names | |
id2label={k:v for k,v in enumerate(labels)} | |
label2id = {v:k for k,v in enumerate(labels)} | |
feature_extractor_rgb,model_rgb = load_model_from_Hugging_Face("rgb") | |
pipe_rgb = create_pipeline(feature_extractor_rgb,model_rgb) | |
rgb_result=pipe_rgb(input_image) | |
consolidated_result=get_output_label(consolidate_score(thermal_result,rgb_result)) | |
if(consolidated_result!="RiceLeafs_Healthy"): | |
f = open("remedy.json") | |
data = json.load(f) | |
for i in data[consolidated_result.split("_")[0]]: | |
if(i["disease_name"]==consolidated_result.split("_")[1]): | |
for key in i: | |
st.write(key," : ",i[key]) | |
else: | |
st.write(consolidated_result.split("_")[0]," is ",consolidated_result.split("_")[1]) |