-
Notifications
You must be signed in to change notification settings - Fork 2
/
feature_extractor.py
93 lines (68 loc) · 2.92 KB
/
feature_extractor.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
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 3 17:05:32 2019
@author: M.Usman Ali
"""
import cv2
import glob
import utility
import pandas as pd
import numpy as np
import imageio
import os
import pickle
patchsize = 224
stride = 224
#Loading DenseNet model
model_densenet = utility.load_denseNet()
model_densenet.summary()
#Reading images from train folder
train_destructed_images= []
train_destructed_folder = os.path.join("Data","train","destructed","*.jpg")
train_destructed_images.extend(glob.glob(train_destructed_folder))
train_destructed_features = []
print("Started extracted patches of Destructed Class images.")
total_images = len(train_destructed_images)
for i in range(total_images):
img = cv2.imread(train_destructed_images[i])
imgpatches = utility.get_patches(img,patchsize,stride)
tempimgfeatures = []
for j in range(imgpatches.shape[0]):
for k in range(imgpatches.shape[1]):
temp = imgpatches[j][k][0]
temp = utility.preprocessing(temp,patchsize)
temp = model_densenet.predict(temp,steps=1)
tempimgfeatures.append(temp)
print("Extracting features of image "+str(i)+"/"+str(total_images))
train_destructed_features.append(tempimgfeatures)
print("Features Extracted succesfully!")
train_destructed_features = np.array(train_destructed_features)
print(train_destructed_features.shape)
train_destructed_features = np.reshape(train_destructed_features,(-1,9,1024))
train_non_destructed_images=[]
train_non_destructed_folder = os.path.join("Data","train","non_destructed","*.jpg")
train_non_destructed_images.extend(glob.glob(train_non_destructed_folder))
train_non_destructed_features = []
print("Started extracted patches of Non Destructed Class images.")
total_images = len(train_non_destructed_images)
for i in range(total_images):
img = cv2.imread(train_non_destructed_images[i])
imgpatches = utility.get_patches(img,patchsize,stride)
tempimgfeatures = []
for j in range(imgpatches.shape[0]):
for k in range(imgpatches.shape[1]):
temp = imgpatches[j][k][0]
temp = utility.preprocessing(temp,patchsize)
temp = model_densenet.predict(temp,steps=1)
tempimgfeatures.append(temp)
print("Extracting features of image "+str(i)+"/"+str(total_images))
train_non_destructed_features.append(tempimgfeatures)
print("Features Extracted succesfully!")
train_non_destructed_features = np.array(train_non_destructed_features)
print(train_non_destructed_features.shape)
train_non_destructed_features = np.reshape(train_non_destructed_features,(-1,9,1024))
print("Now saving features...")
picklepath= os.path.join("features","trainfeatures.pickle")
with open(picklepath, 'wb') as handle:
pickle.dump(train_destructed_features, handle, protocol=pickle.HIGHEST_PROTOCOL)
pickle.dump(train_non_destructed_features, handle, protocol=pickle.HIGHEST_PROTOCOL)