-
Notifications
You must be signed in to change notification settings - Fork 0
/
decodePredictionArray.py
104 lines (59 loc) · 3.27 KB
/
decodePredictionArray.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
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 11 21:18:35 2019
@author: nithish k
"""
import imageManipulations
import plotGridAndBound
import XMLParser
import assigngrid
import normalization
import denormalization
import numpy as np
import generateTargetVariable
classMappingDict = {'milk':0,'tomato': 1, 'apple':2 , 'eggs':3 ,'onion': 4,
'salt':5, 'yogurt': 6, 'sugar': 7, 'butter': 8, 'orange':9}
def denormPredForEachGrid(image_dict,arrayOf4Elems,grid_row_no,
grid_col_no,total_grid_rows,total_grid_cols):
normalized_coords = {}
normalized_dimensions = {}
normalized_coords['x'] = arrayOf4Elems[0] ##x
normalized_coords['y'] = arrayOf4Elems[1] ## y
normalized_dimensions['height'] = arrayOf4Elems[2] ##width
normalized_dimensions['width'] = arrayOf4Elems[3] ##height
denormalisedBBoxDict = denormalization.getDenormalizedBoxParams(image_dict,
normalized_dimensions,normalized_coords,
grid_row_no,grid_col_no,total_grid_rows,total_grid_cols)
return denormalisedBBoxDict
def decodePredArr(image_dict,predictedArray,classMappingDict):
"""
"""
reverseMappingDict = {value: key for key, value in classMappingDict.items()}
total_grid_rows,total_grid_cols,total_depth = predictedArray.shape
classProbsArray = predictedArray[:,:,5:]
probOfObjectPresent = predictedArray[:,:,:1] ##preserve 3 dimennsions
probObjTimesClassProb = probOfObjectPresent*classProbsArray
classLabelPredsEachGrid = np.argmax(probObjTimesClassProb,axis = 2)
classProbsEachGrid = np.max(probObjTimesClassProb,axis = 2)
bBoxDims = predictedArray[:,:,1:5]
### generate object list looping every grid cell
objectList = []
for gridRow in range(total_grid_rows):
for gridCol in range(total_grid_cols):
arrayOf4Elems = bBoxDims[gridRow,gridCol,]
eachObj = denormPredForEachGrid(image_dict,arrayOf4Elems,gridRow,gridCol,
total_grid_rows,total_grid_cols)
eachObj['name'] = reverseMappingDict[classLabelPredsEachGrid[gridRow,gridCol]]
eachObj['intClass'] = classLabelPredsEachGrid[gridRow,gridCol]
eachObj['probClass'] = classProbsEachGrid[gridRow,gridCol]
eachObj['ObjectnessProb'] = probOfObjectPresent[gridRow,gridCol,0]
objectList.append(eachObj)
return objectList
if __name__ == '__main__':
xmlFile = "C:/Users/ntihish/Documents/IUB/Deep Learning/Project/Git Repo/product-recognition/sample_files/twoObjectsCorrect.xml"
imgFile = "C:/Users/ntihish/Documents/IUB/Deep Learning/Project/Git Repo/product-recognition/sample_files/twoObjectsCorrect.jpg"
imageDict, objectList = XMLParser.parseXMLtoDict(xmlFile)
TargetArr = generateTargetVariable.genTargetArray(imgFile,imageDict,objectList,3,3, {'dog': 0, 'cat': 1})
objectList = decodePredArr(imageDict,TargetArr,classMappingDict)
gridImg = plotGridAndBound.plotGridOnImg(imgFile,3,3,objectList)
gridImg.savefig("griddedImage")