File size: 4,655 Bytes
aae8d68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from keras.models import load_model
import numpy as np
import cv2
from PIL import Image
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence
import joblib
from tensorflow.keras.preprocessing.sequence import pad_sequences



st.title("DL_PREDICTION")

# Dropdown for selecting the task
task = st.selectbox("Select Task", ["Sentiment Analysis", "Tumor Classification"])

if task == "Sentiment Analysis":
    selected_algorithm = st.selectbox("Select Algorithm", ["Perceptron", "Backpropagation", "DNN", "RNN", "LSTM"])
    if selected_algorithm=='LSTM':
        imdb_lstm=load_model('saved_model/imdb_lstm.h5')
    
        def lstm_predict_imdb(review, model, max_review_length):
            top_words=5000
            # Convert the review to the IMDB dataset format
            review_sequence = imdb.get_word_index()
            review = [review_sequence[word] if word in review_sequence and review_sequence[word] < top_words else 0 for word in review.split()]
            review = sequence.pad_sequences([review], maxlen=max_review_length)
            prediction = model.predict(review)
            if prediction>0.5:
                st.write("Positive Sentiment")
            else:
                st.write("Negative Sentiment")
        review=st.text_input("Enter your review here.")
        if st.button("*Make Prediction*"):
            lstm_predict_imdb(review,imdb_lstm,500)
    elif selected_algorithm=="Perceptron":
        imdb_perceptron = joblib.load(r"saved_model/imdb_percepton.joblib")

        def perceptron_predict_imdb(review, vectorizer, model):
            review_bow = vectorizer.transform([review])
            prediction = imdb_perceptron.predict(review_bow)
            if prediction > 0.5 :
                st.success("Positive sentiment")
            else:
                st.success("Negative sentiment")
        
        review=st.text_input("Give your review here.")
        vectorizer = joblib.load(r"saved_model/vectariser_imdb.joblib")
        if st.button("*Make Prediction*"):
            perceptron_predict_imdb(review,vectorizer,imdb_perceptron)
    elif selected_algorithm=='DNN':
        imdb_dnn = load_model(r'saved_model/imdb_dnn.h5') 
        word_to_index = imdb.get_word_index()
        def dnn_predict_sentiment(review, model):
            prediction = imdb_dnn.predict(review)
            if prediction > 0.5 :
                st.success("Positive sentiment")
            else:
                st.success("Negative sentiment")
        
        review=st.text_input("Enter your review here.")
        
        if st.button("Make Prediction"):
            max_review_length=500
            new_review_tokens=[word_to_index.get(word, 0) for word in review.split()]
            new_review_tokens = pad_sequences([new_review_tokens], maxlen=max_review_length)    
            dnn_predict_sentiment(new_review_tokens,imdb_dnn)
    elif selected_algorithm=='RNN':
    
        imdb_rnn=load_model("saved_model/rnn_imdb.h5")

        def rnn_predict_imdb(review, model, max_review_length):
            top_words=5000
            # Convert the review to the IMDB dataset format
            review_sequence = imdb.get_word_index()
            review = [review_sequence[word] if word in review_sequence and review_sequence[word] < top_words else 0 for word in review.split()]
            review = sequence.pad_sequences([review], maxlen=max_review_length)
            prediction = model.predict(review)
            if prediction>0.5:
                st.write("Positive Sentiment")
            else:
                st.write("Negative Sentiment")

        review=st.text_input("Enter your review here.")
        if st.button("*Make Prediction*"):
            rnn_predict_imdb(review,imdb_rnn,500)
elif task == "Tumor Classification":
    selected_algorithm = st.selectbox("Select Algorithm", ["CNN"])
    uploaded_file = st.file_uploader("Upload Tumor Image", type=["jpg", "jpeg", "png"])

    tumor_cnn = load_model('saved_model/cnn_tumor.h5')

    def make_tumor_prediction(img,model):
        if img is None:
            st.warning("Please upload an image.")
            return
        if img is not None:
            img_array = np.array(Image.open(img))
            img_array = cv2.resize(img_array, (128, 128))
            input_img = np.expand_dims(img_array, axis=0)
            prediction = model.predict(input_img)
            if prediction > 0.5:
                st.success("Tumor Detected")
            else:
                st.success("No Tumor")

    if st.button('Make prediction'):
        make_tumor_prediction(uploaded_file, tumor_cnn)