-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeepLabV3Main.py
More file actions
106 lines (87 loc) · 4.33 KB
/
deepLabV3Main.py
File metadata and controls
106 lines (87 loc) · 4.33 KB
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
#from matplotlib import pyplot as plt
from tkinter import *
from tkinter import ttk
from PIL import Image , ImageTk
from tkinter import filedialog
import tensorflow as tf
import numpy as np
mainWindow = Tk()
sess = tf.Session()
class deepLabV3_GUI:
TestImage = []
SegmentedImage = []
def __init__(self,master):
master.title('Semantic Segmentation : Deep Lab V3')
master.minsize(200, 200)
#Setting Up Test Image Panel
self.testImgFrame = Frame(master,highlightbackground="red",
width=300,height=300,
highlightthickness=1).\
grid(row=0,column=0,padx=2,pady=2)
self.testImgLabel = ttk.Label(self.testImgFrame,
image = self.TestImage,
text = 'Test Image Will Be Loaded Here',
relief=SUNKEN)
self.testImgLabel.grid(row=0,column=0)
self.loadtestImg = ttk.Button(self.testImgFrame,
text='Select Image',
command=self.loadTestImage).\
grid(row=1, column=0,sticky=W,padx=2,pady=2)
#Setting Up Segmented Image Panel
self.userCommandsFrame = Frame(master,highlightbackground="blue",
width=300,height=300,
highlightthickness=1).\
grid(row=0,column=1,sticky=E,padx=2,pady=2)
self.segmentedImgLabel = ttk.Label(self.userCommandsFrame,
image = self.SegmentedImage,
text = 'Segmented Image Will Be Displayed Here',
relief=SUNKEN)
self.segmentedImgLabel.grid(row=0,column=1)
self.setModelDirectory = ttk.Button(self.userCommandsFrame,
text='Model Directory',
state=DISABLED,
command=self.setModelWeights)
self.setModelDirectory.grid(row=1, column=1,sticky=W,padx=2,pady=2)
self.segmentTestImage = ttk.Button(self.userCommandsFrame,
text='Segment Image',
state=DISABLED,
command=self.segmentImage)
self.segmentTestImage.grid(row=2, column=1,sticky=W,padx=2,pady=2)
#Quit Button
self.quitButton = ttk.Button(self.userCommandsFrame,
text='Quit',
command=master.destroy).\
grid(row=3, column=1, sticky=W,padx=2,pady=2)
def setModelWeights(self):
modelDir = filedialog.askdirectory()
if(len(modelDir)>0):
from semanticSegmentation import deepLabV3_InferenceEngine
self.deepLab = deepLabV3_InferenceEngine(modelDir,sess)
#print('Deeplab Inference Object Created')
self.segmentedImgLabel['text'] = 'Model Weights Loaded'
self.segmentTestImage['state'] = NORMAL
else:
return
def loadTestImage(self):
path=filedialog.askopenfilename(filetypes=[("Image Format",'.jpg'),("Image Format",'.png')])
if(len(path)>0):
self.TestImage = Image.open(path)
tkimage = ImageTk.PhotoImage(self.TestImage)
self.testImgLabel.configure(image=tkimage)
self.testImgLabel.image=tkimage
self.testImgLabel.grid(row=0,column=0)
self.setModelDirectory['state'] = NORMAL
else:
return
def segmentImage(self):
self.SegmentedImage = self.deepLab.segmentImage(self.TestImage)
display = self.SegmentedImage*255 #otherwise fromarray produces a blacked out image
tkimage = ImageTk.PhotoImage(Image.fromarray(display.astype(np.uint8)))
self.segmentedImgLabel.configure(image=tkimage)
self.segmentedImgLabel.image = tkimage
self.segmentedImgLabel.grid(row=0,column=1)
#This displays correct segmented image
#plt.imshow(self.SegmentedImage)
#plt.show()
deepLabV3 = deepLabV3_GUI(mainWindow)
mainWindow.mainloop()