-
Notifications
You must be signed in to change notification settings - Fork 0
/
ImgCap_Deploy.py
123 lines (86 loc) · 3.27 KB
/
ImgCap_Deploy.py
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
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 24 23:27:49 2021
@author: Abhishek
"""
import streamlit as st
import warnings
warnings.filterwarnings("ignore")
# EDA Pkgs
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.use('Agg')
import seaborn as sns
sns.set_style('darkgrid')
from keras import models
from keras.preprocessing.sequence import pad_sequences
from keras.models import load_model
import pickle
import cv2
#encoding_test = pickle.load( open( "encoding_test_dict.p", "rb" ))
#print(encoding_test['2271755053_e1b1ec8442.jpg'])
#pip install keras==2.6.0
import keras
print(keras. __version__)
#import os
#os.chdir(r'F:\Machine Learning\AI ML\Case Studies\DL\ImageCaption\Deployment')
#print(os.getcwd())
#To Hide Warnings
st.set_option('deprecation.showfileUploaderEncoding', False)
st.set_option('deprecation.showPyplotGlobalUse', False)
STYLE = """
<style>
img {
max-width: 100%;
}
</style> """
def main():
model = load_model('Image_Caption_Model1.h5')
encoding_test = pickle.load( open( "encoding_test_dict.p", "rb" ))
wordtoix = pickle.load( open( "wordtoix.p", "rb" ) )
ixtoword = pickle.load( open( "ixtoword.p", "rb" ) )
max_len = 38
def greedySearch(photo):
in_text = 'startseq'
for i in range(max_len):
sequence = [wordtoix[w] for w in in_text.split() if w in wordtoix]
sequence = pad_sequences([sequence], maxlen=max_len)
yhat = model.predict([photo,sequence], verbose=0)
yhat = np.argmax(yhat)
word = ixtoword[yhat]
in_text += ' ' + word
if word == 'endseq':
break
final = in_text.split()
final = final[1:-1]
final = ' '.join(final)
return final
def get_pic(pic_name,pic):
image = encoding_test[pic_name].reshape((1,2048))
x=plt.imread(pic)
plt.imshow(x)
plt.show()
st.title("Selected Image :")
st.image(pic , caption='Image')
print("Greedy Search:",greedySearch(image))
st.title("The Generated Caption is :")
st.write(greedySearch(image))
image_file = st.file_uploader("Upload Image",type=['png','jpeg','jpg'])
if image_file is not None:
pic_name=image_file.name
pic = image_file
#st.write(type(image_file))
file_details = {"Filename":image_file.name,"FileType":image_file.type,"FileSize":image_file.size}
st.write(file_details)
get_pic(pic_name , pic)
st.sidebar.header("About App")
st.sidebar.info("Image captioning model that generate a sentence description for an image. \n Our model will take an image as input and generate an English sentence as output, describing the contents of the image.")
st.sidebar.text("Built with Streamlit")
st.sidebar.subheader("Scatter-plot setup")
if st.button("Thanks"):
st.balloons()
# To RUn : F:\Machine Learning\AI ML\Case Studies\DL\ImageCaption\Deployment>streamlit run ImgCap_Deploy.py
# Go to directory in cmd and do : streamlit run ImgCap_Deploy.py
if __name__ == '__main__':
main()