noshot 12.0.0__py3-none-any.whl → 14.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex1/input.txt +1 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex1/mapper.py +6 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex1/reducer.py +22 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex2/Weatherdataset.csv +200 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex2/mapper.py +20 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex2/reducer.py +32 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/BF_Map.py +11 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/BF_Red.py +30 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/bloom_filter.py +71 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/bloom_filter_mapper.py +71 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/bloom_filter_reducer.py +71 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex3/weblog.csv +100 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex4/FMA_mapper.py +14 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex4/FMA_reducer.py +14 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Ex4/Tweets.csv +92 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab/Instructions.txt +56 -0
- noshot/data/DLE FSD BDA/BDA/BDA Lab.iso +0 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/1.1 DNN (Pytorch).ipynb +164 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/1.2 DNN (Tensorflow).ipynb +94 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/1.3 DNN (Image Classification).ipynb +134 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/2.1 DNN vs CNN.ipynb +127 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/2.2 DNN vs CNN.ipynb +123 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/3 Bounding Boxes.ipynb +109 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/4. FCNN (Image Segmentation).ipynb +108 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/Lab Excercise (Training DNN).ipynb +646 -0
- noshot/data/DLE FSD BDA/DLE/DLE 2 (tim stan s)/Load-Images.ipynb +553 -0
- noshot/data/DLE FSD BDA/DLE/DLE 3 (sonic boy)/Ex1.ipynb +216 -0
- noshot/data/DLE FSD BDA/DLE/DLE 3 (sonic boy)/Ex2.ipynb +195 -0
- noshot/data/DLE FSD BDA/DLE/DLE 3 (sonic boy)/Ex3.ipynb +427 -0
- noshot/data/DLE FSD BDA/DLE/DLE 3 (sonic boy)/Ex4.ipynb +186 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp01/DNN Ex No 1.ipynb +398 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp01/Ex No 1 Build in dataset.ipynb +171 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp01/Exp1-Short-DL_ANN_ImageClassification.ipynb +401 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp01/OR GATE .ipynb +8511 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp02/Exp2-Short-DL_CNN_ImageClassification.ipynb +737 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp03/DL-Ex3-RNN.ipynb +591 -0
- noshot/data/DLE FSD BDA/DLE/DLE 4 (senior)/Exp04/Ex no 4.ipynb +551 -0
- {noshot-12.0.0.dist-info → noshot-14.0.0.dist-info}/METADATA +1 -1
- noshot-14.0.0.dist-info/RECORD +50 -0
- noshot-12.0.0.dist-info/RECORD +0 -13
- /noshot/data/DLE FSD BDA/DLE/{1. DNN (Image Classification).ipynb → DLE 1 (Json)/1. DNN (Image Classification).ipynb} +0 -0
- /noshot/data/DLE FSD BDA/DLE/{2. DNN vs CNN.ipynb → DLE 1 (Json)/2. DNN vs CNN.ipynb} +0 -0
- /noshot/data/DLE FSD BDA/DLE/{3. CNN (Object Detecrion).ipynb → DLE 1 (Json)/3. CNN (Object Detecrion).ipynb} +0 -0
- /noshot/data/DLE FSD BDA/DLE/{4. FCN (Image Segmentaion).ipynb → DLE 1 (Json)/4. FCN (Image Segmentaion).ipynb} +0 -0
- {noshot-12.0.0.dist-info → noshot-14.0.0.dist-info}/WHEEL +0 -0
- {noshot-12.0.0.dist-info → noshot-14.0.0.dist-info}/licenses/LICENSE.txt +0 -0
- {noshot-12.0.0.dist-info → noshot-14.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,591 @@
|
|
1
|
+
{
|
2
|
+
"cells": [
|
3
|
+
{
|
4
|
+
"cell_type": "markdown",
|
5
|
+
"metadata": {},
|
6
|
+
"source": [
|
7
|
+
"# Construct an object detector using Convolutional Neural Networks"
|
8
|
+
]
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"cell_type": "code",
|
12
|
+
"execution_count": null,
|
13
|
+
"metadata": {},
|
14
|
+
"outputs": [],
|
15
|
+
"source": [
|
16
|
+
"import os,cv2,keras\n",
|
17
|
+
"import pandas as pd\n",
|
18
|
+
"import matplotlib.pyplot as plt\n",
|
19
|
+
"import numpy as np\n",
|
20
|
+
"import tensorflow as tf"
|
21
|
+
]
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"cell_type": "code",
|
25
|
+
"execution_count": null,
|
26
|
+
"metadata": {},
|
27
|
+
"outputs": [],
|
28
|
+
"source": [
|
29
|
+
"import cv2\n",
|
30
|
+
"print(cv2.__version__)"
|
31
|
+
]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"cell_type": "code",
|
35
|
+
"execution_count": null,
|
36
|
+
"metadata": {},
|
37
|
+
"outputs": [],
|
38
|
+
"source": [
|
39
|
+
"path = \"C://Users//admin//DataSet RCNN//DataSet RCNN//Images//Images\"\n",
|
40
|
+
"annot = \"C://Users//admin//DataSet RCNN//DataSet RCNN//Airplanes_Annotations//Airplanes_Annotations\""
|
41
|
+
]
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"cell_type": "code",
|
45
|
+
"execution_count": null,
|
46
|
+
"metadata": {},
|
47
|
+
"outputs": [],
|
48
|
+
"source": [
|
49
|
+
"for e,i in enumerate(os.listdir(annot)):\n",
|
50
|
+
" if e < 10:\n",
|
51
|
+
" filename = i.split(\".\")[0]+\".jpg\"\n",
|
52
|
+
" print(filename)\n",
|
53
|
+
" img = cv2.imread(os.path.join(path,filename))\n",
|
54
|
+
" df = pd.read_csv(os.path.join(annot,i))\n",
|
55
|
+
" plt.imshow(img)\n",
|
56
|
+
" for row in df.iterrows():\n",
|
57
|
+
" x1 = int(row[1][0].split(\" \")[0])\n",
|
58
|
+
" y1 = int(row[1][0].split(\" \")[1])\n",
|
59
|
+
" x2 = int(row[1][0].split(\" \")[2])\n",
|
60
|
+
" y2 = int(row[1][0].split(\" \")[3])\n",
|
61
|
+
" cv2.rectangle(img,(x1,y1),(x2,y2),(255,0,0), 2)\n",
|
62
|
+
" plt.figure()\n",
|
63
|
+
" plt.imshow(img)\n",
|
64
|
+
" break"
|
65
|
+
]
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"cell_type": "code",
|
69
|
+
"execution_count": null,
|
70
|
+
"metadata": {},
|
71
|
+
"outputs": [],
|
72
|
+
"source": [
|
73
|
+
"#!pip uninstall opencv-contrib-python opencv-python"
|
74
|
+
]
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"cell_type": "code",
|
78
|
+
"execution_count": null,
|
79
|
+
"metadata": {},
|
80
|
+
"outputs": [],
|
81
|
+
"source": [
|
82
|
+
"#!pip install opencv-contrib-python --user"
|
83
|
+
]
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"cell_type": "code",
|
87
|
+
"execution_count": null,
|
88
|
+
"metadata": {},
|
89
|
+
"outputs": [],
|
90
|
+
"source": [
|
91
|
+
"from cv2.ximgproc import segmentation\n",
|
92
|
+
"#from cv2.ximgproc.segmentation import createSelectiveSearchSegmentation\n"
|
93
|
+
]
|
94
|
+
},
|
95
|
+
{
|
96
|
+
"cell_type": "code",
|
97
|
+
"execution_count": null,
|
98
|
+
"metadata": {},
|
99
|
+
"outputs": [],
|
100
|
+
"source": [
|
101
|
+
"import cv2\n",
|
102
|
+
"import cv2.ximgproc.segmentation\n",
|
103
|
+
"\n",
|
104
|
+
"print(dir(cv2.ximgproc.segmentation))"
|
105
|
+
]
|
106
|
+
},
|
107
|
+
{
|
108
|
+
"cell_type": "code",
|
109
|
+
"execution_count": null,
|
110
|
+
"metadata": {},
|
111
|
+
"outputs": [],
|
112
|
+
"source": [
|
113
|
+
"from cv2.ximgproc.segmentation import createSelectiveSearchSegmentation"
|
114
|
+
]
|
115
|
+
},
|
116
|
+
{
|
117
|
+
"cell_type": "code",
|
118
|
+
"execution_count": null,
|
119
|
+
"metadata": {},
|
120
|
+
"outputs": [],
|
121
|
+
"source": [
|
122
|
+
"cv2.setUseOptimized(True);\n",
|
123
|
+
"#ss = segmentation.createSelectiveSearchSegmentation()\n",
|
124
|
+
"ss = createSelectiveSearchSegmentation()\n"
|
125
|
+
]
|
126
|
+
},
|
127
|
+
{
|
128
|
+
"cell_type": "code",
|
129
|
+
"execution_count": null,
|
130
|
+
"metadata": {},
|
131
|
+
"outputs": [],
|
132
|
+
"source": [
|
133
|
+
"im = cv2.imread(os.path.join(path,\"airplane_687.jpg\"))\n",
|
134
|
+
"ss.setBaseImage(im)\n",
|
135
|
+
"ss.switchToSelectiveSearchFast()\n",
|
136
|
+
"rects = ss.process()\n",
|
137
|
+
"imOut = im.copy()\n",
|
138
|
+
"for i, rect in (enumerate(rects)):\n",
|
139
|
+
" x, y, w, h = rect\n",
|
140
|
+
"# print(x,y,w,h)\n",
|
141
|
+
"# imOut = imOut[x:x+w,y:y+h]\n",
|
142
|
+
" cv2.rectangle(imOut, (x, y), (x+w, y+h), (0, 255, 0), 1, cv2.LINE_AA)\n",
|
143
|
+
"# plt.figure()\n",
|
144
|
+
"plt.imshow(imOut)"
|
145
|
+
]
|
146
|
+
},
|
147
|
+
{
|
148
|
+
"cell_type": "code",
|
149
|
+
"execution_count": null,
|
150
|
+
"metadata": {},
|
151
|
+
"outputs": [],
|
152
|
+
"source": [
|
153
|
+
"train_images=[]\n",
|
154
|
+
"train_labels=[]"
|
155
|
+
]
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"cell_type": "code",
|
159
|
+
"execution_count": null,
|
160
|
+
"metadata": {},
|
161
|
+
"outputs": [],
|
162
|
+
"source": [
|
163
|
+
"def get_iou(bb1, bb2):\n",
|
164
|
+
" assert bb1['x1'] < bb1['x2']\n",
|
165
|
+
" assert bb1['y1'] < bb1['y2']\n",
|
166
|
+
" assert bb2['x1'] < bb2['x2']\n",
|
167
|
+
" assert bb2['y1'] < bb2['y2']\n",
|
168
|
+
"\n",
|
169
|
+
" x_left = max(bb1['x1'], bb2['x1'])\n",
|
170
|
+
" y_top = max(bb1['y1'], bb2['y1'])\n",
|
171
|
+
" x_right = min(bb1['x2'], bb2['x2'])\n",
|
172
|
+
" y_bottom = min(bb1['y2'], bb2['y2'])\n",
|
173
|
+
"\n",
|
174
|
+
" if x_right < x_left or y_bottom < y_top:\n",
|
175
|
+
" return 0.0\n",
|
176
|
+
"\n",
|
177
|
+
" intersection_area = (x_right - x_left) * (y_bottom - y_top)\n",
|
178
|
+
"\n",
|
179
|
+
" bb1_area = (bb1['x2'] - bb1['x1']) * (bb1['y2'] - bb1['y1'])\n",
|
180
|
+
" bb2_area = (bb2['x2'] - bb2['x1']) * (bb2['y2'] - bb2['y1'])\n",
|
181
|
+
"\n",
|
182
|
+
" iou = intersection_area / float(bb1_area + bb2_area - intersection_area)\n",
|
183
|
+
" assert iou >= 0.0\n",
|
184
|
+
" assert iou <= 1.0\n",
|
185
|
+
" return iou"
|
186
|
+
]
|
187
|
+
},
|
188
|
+
{
|
189
|
+
"cell_type": "code",
|
190
|
+
"execution_count": null,
|
191
|
+
"metadata": {},
|
192
|
+
"outputs": [],
|
193
|
+
"source": [
|
194
|
+
"ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()"
|
195
|
+
]
|
196
|
+
},
|
197
|
+
{
|
198
|
+
"cell_type": "code",
|
199
|
+
"execution_count": null,
|
200
|
+
"metadata": {},
|
201
|
+
"outputs": [],
|
202
|
+
"source": [
|
203
|
+
"for e,i in enumerate(os.listdir(annot)):\n",
|
204
|
+
" try:\n",
|
205
|
+
" if i.startswith(\"airplane\"):\n",
|
206
|
+
" filename = i.split(\".\")[0]+\".jpg\"\n",
|
207
|
+
" print(e,filename)\n",
|
208
|
+
" image = cv2.imread(os.path.join(path,filename))\n",
|
209
|
+
" df = pd.read_csv(os.path.join(annot,i))\n",
|
210
|
+
" gtvalues=[]\n",
|
211
|
+
" for row in df.iterrows():\n",
|
212
|
+
" x1 = int(row[1][0].split(\" \")[0])\n",
|
213
|
+
" y1 = int(row[1][0].split(\" \")[1])\n",
|
214
|
+
" x2 = int(row[1][0].split(\" \")[2])\n",
|
215
|
+
" y2 = int(row[1][0].split(\" \")[3])\n",
|
216
|
+
" gtvalues.append({\"x1\":x1,\"x2\":x2,\"y1\":y1,\"y2\":y2})\n",
|
217
|
+
" ss.setBaseImage(image)\n",
|
218
|
+
" ss.switchToSelectiveSearchFast()\n",
|
219
|
+
" ssresults = ss.process()\n",
|
220
|
+
" imout = image.copy()\n",
|
221
|
+
" counter = 0\n",
|
222
|
+
" falsecounter = 0\n",
|
223
|
+
" flag = 0\n",
|
224
|
+
" fflag = 0\n",
|
225
|
+
" bflag = 0\n",
|
226
|
+
" for e,result in enumerate(ssresults):\n",
|
227
|
+
" if e < 200 and flag == 0:\n",
|
228
|
+
" for gtval in gtvalues:\n",
|
229
|
+
" x,y,w,h = result\n",
|
230
|
+
" iou = get_iou(gtval,{\"x1\":x,\"x2\":x+w,\"y1\":y,\"y2\":y+h})\n",
|
231
|
+
" if counter < 30:\n",
|
232
|
+
" if iou > 0.70:\n",
|
233
|
+
" timage = imout[y:y+h,x:x+w]\n",
|
234
|
+
" resized = cv2.resize(timage, (56,56), interpolation = cv2.INTER_AREA)\n",
|
235
|
+
" train_images.append(resized)\n",
|
236
|
+
" train_labels.append(1)\n",
|
237
|
+
" counter += 1\n",
|
238
|
+
" else :\n",
|
239
|
+
" fflag =1\n",
|
240
|
+
" if falsecounter <30:\n",
|
241
|
+
" if iou < 0.3:\n",
|
242
|
+
" timage = imout[y:y+h,x:x+w]\n",
|
243
|
+
" resized = cv2.resize(timage, (56,56), interpolation = cv2.INTER_AREA)\n",
|
244
|
+
" train_images.append(resized)\n",
|
245
|
+
" train_labels.append(0)\n",
|
246
|
+
" falsecounter += 1\n",
|
247
|
+
" else :\n",
|
248
|
+
" bflag = 1\n",
|
249
|
+
" if fflag == 1 and bflag == 1:\n",
|
250
|
+
" print(\"inside\")\n",
|
251
|
+
" flag = 1\n",
|
252
|
+
" except Exception as e:\n",
|
253
|
+
" print(e)\n",
|
254
|
+
" print(\"error in \"+filename)\n",
|
255
|
+
" continue"
|
256
|
+
]
|
257
|
+
},
|
258
|
+
{
|
259
|
+
"cell_type": "code",
|
260
|
+
"execution_count": null,
|
261
|
+
"metadata": {},
|
262
|
+
"outputs": [],
|
263
|
+
"source": [
|
264
|
+
"X_new = np.array(train_images)\n",
|
265
|
+
"y_new = np.array(train_labels)"
|
266
|
+
]
|
267
|
+
},
|
268
|
+
{
|
269
|
+
"cell_type": "code",
|
270
|
+
"execution_count": null,
|
271
|
+
"metadata": {},
|
272
|
+
"outputs": [],
|
273
|
+
"source": [
|
274
|
+
"X_new.shape"
|
275
|
+
]
|
276
|
+
},
|
277
|
+
{
|
278
|
+
"cell_type": "code",
|
279
|
+
"execution_count": null,
|
280
|
+
"metadata": {},
|
281
|
+
"outputs": [],
|
282
|
+
"source": [
|
283
|
+
"from keras.layers import Dense\n",
|
284
|
+
"from keras import Model\n",
|
285
|
+
"from keras import optimizers\n",
|
286
|
+
"from keras.preprocessing.image import ImageDataGenerator\n",
|
287
|
+
"from keras.applications.vgg16 import VGG16"
|
288
|
+
]
|
289
|
+
},
|
290
|
+
{
|
291
|
+
"cell_type": "code",
|
292
|
+
"execution_count": null,
|
293
|
+
"metadata": {},
|
294
|
+
"outputs": [],
|
295
|
+
"source": [
|
296
|
+
"vggmodel = VGG16(weights='imagenet', include_top=True)\n",
|
297
|
+
"vggmodel.summary()"
|
298
|
+
]
|
299
|
+
},
|
300
|
+
{
|
301
|
+
"cell_type": "code",
|
302
|
+
"execution_count": null,
|
303
|
+
"metadata": {},
|
304
|
+
"outputs": [],
|
305
|
+
"source": [
|
306
|
+
"import tensorflow as tf\n",
|
307
|
+
"from tensorflow.keras import layers, models\n",
|
308
|
+
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
|
309
|
+
"import matplotlib.pyplot as plt\n",
|
310
|
+
"import seaborn as sns\n",
|
311
|
+
"import numpy as np\n",
|
312
|
+
"from sklearn.metrics import classification_report, confusion_matrix"
|
313
|
+
]
|
314
|
+
},
|
315
|
+
{
|
316
|
+
"cell_type": "code",
|
317
|
+
"execution_count": null,
|
318
|
+
"metadata": {},
|
319
|
+
"outputs": [],
|
320
|
+
"source": [
|
321
|
+
"model = models.Sequential([\n",
|
322
|
+
" layers.Conv2D(32, (3, 3), activation='relu', input_shape=(56, 56, 3)),\n",
|
323
|
+
" layers.MaxPooling2D((2, 2)),\n",
|
324
|
+
" layers.Conv2D(64, (3, 3), activation='relu'),\n",
|
325
|
+
" layers.MaxPooling2D((2, 2)),\n",
|
326
|
+
" layers.Conv2D(128, (3, 3), activation='relu'),\n",
|
327
|
+
" layers.MaxPooling2D((2, 2)),\n",
|
328
|
+
" layers.Conv2D(128, (3, 3), activation='relu'),\n",
|
329
|
+
" layers.MaxPooling2D((2, 2)),\n",
|
330
|
+
" layers.Flatten(),\n",
|
331
|
+
" layers.Dense(512, activation='relu'),\n",
|
332
|
+
"])"
|
333
|
+
]
|
334
|
+
},
|
335
|
+
{
|
336
|
+
"cell_type": "code",
|
337
|
+
"execution_count": null,
|
338
|
+
"metadata": {},
|
339
|
+
"outputs": [],
|
340
|
+
"source": [
|
341
|
+
"# for layers in (vggmodel.layers)[:15]:\n",
|
342
|
+
"# print(layers)\n",
|
343
|
+
"# layers.trainable = False"
|
344
|
+
]
|
345
|
+
},
|
346
|
+
{
|
347
|
+
"cell_type": "code",
|
348
|
+
"execution_count": null,
|
349
|
+
"metadata": {},
|
350
|
+
"outputs": [],
|
351
|
+
"source": [
|
352
|
+
"X= model.layers[-2].output"
|
353
|
+
]
|
354
|
+
},
|
355
|
+
{
|
356
|
+
"cell_type": "code",
|
357
|
+
"execution_count": null,
|
358
|
+
"metadata": {},
|
359
|
+
"outputs": [],
|
360
|
+
"source": [
|
361
|
+
"predictions = Dense(2, activation=\"softmax\")(X)"
|
362
|
+
]
|
363
|
+
},
|
364
|
+
{
|
365
|
+
"cell_type": "code",
|
366
|
+
"execution_count": null,
|
367
|
+
"metadata": {},
|
368
|
+
"outputs": [],
|
369
|
+
"source": [
|
370
|
+
"model_final = Model(inputs = model.input, outputs = predictions)"
|
371
|
+
]
|
372
|
+
},
|
373
|
+
{
|
374
|
+
"cell_type": "code",
|
375
|
+
"execution_count": null,
|
376
|
+
"metadata": {},
|
377
|
+
"outputs": [],
|
378
|
+
"source": [
|
379
|
+
"from keras.optimizers import Adam\n",
|
380
|
+
"opt = Adam(learning_rate=0.0001)"
|
381
|
+
]
|
382
|
+
},
|
383
|
+
{
|
384
|
+
"cell_type": "code",
|
385
|
+
"execution_count": null,
|
386
|
+
"metadata": {},
|
387
|
+
"outputs": [],
|
388
|
+
"source": [
|
389
|
+
"model_final.compile(loss = keras.losses.categorical_crossentropy, optimizer = opt, metrics=[\"accuracy\"])"
|
390
|
+
]
|
391
|
+
},
|
392
|
+
{
|
393
|
+
"cell_type": "code",
|
394
|
+
"execution_count": null,
|
395
|
+
"metadata": {},
|
396
|
+
"outputs": [],
|
397
|
+
"source": [
|
398
|
+
"model_final.summary()"
|
399
|
+
]
|
400
|
+
},
|
401
|
+
{
|
402
|
+
"cell_type": "code",
|
403
|
+
"execution_count": null,
|
404
|
+
"metadata": {},
|
405
|
+
"outputs": [],
|
406
|
+
"source": [
|
407
|
+
"from sklearn.model_selection import train_test_split\n",
|
408
|
+
"from sklearn.preprocessing import LabelBinarizer"
|
409
|
+
]
|
410
|
+
},
|
411
|
+
{
|
412
|
+
"cell_type": "code",
|
413
|
+
"execution_count": null,
|
414
|
+
"metadata": {},
|
415
|
+
"outputs": [],
|
416
|
+
"source": [
|
417
|
+
"class MyLabelBinarizer(LabelBinarizer):\n",
|
418
|
+
" def transform(self, y):\n",
|
419
|
+
" Y = super().transform(y)\n",
|
420
|
+
" if self.y_type_ == 'binary':\n",
|
421
|
+
" return np.hstack((Y, 1-Y))\n",
|
422
|
+
" else:\n",
|
423
|
+
" return Y\n",
|
424
|
+
" def inverse_transform(self, Y, threshold=None):\n",
|
425
|
+
" if self.y_type_ == 'binary':\n",
|
426
|
+
" return super().inverse_transform(Y[:, 0], threshold)\n",
|
427
|
+
" else:\n",
|
428
|
+
" return super().inverse_transform(Y, threshold)"
|
429
|
+
]
|
430
|
+
},
|
431
|
+
{
|
432
|
+
"cell_type": "code",
|
433
|
+
"execution_count": null,
|
434
|
+
"metadata": {},
|
435
|
+
"outputs": [],
|
436
|
+
"source": [
|
437
|
+
"lenc = MyLabelBinarizer()\n",
|
438
|
+
"Y = lenc.fit_transform(y_new)"
|
439
|
+
]
|
440
|
+
},
|
441
|
+
{
|
442
|
+
"cell_type": "code",
|
443
|
+
"execution_count": null,
|
444
|
+
"metadata": {},
|
445
|
+
"outputs": [],
|
446
|
+
"source": [
|
447
|
+
"X_train, X_test , y_train, y_test = train_test_split(X_new,Y,test_size=0.10)"
|
448
|
+
]
|
449
|
+
},
|
450
|
+
{
|
451
|
+
"cell_type": "code",
|
452
|
+
"execution_count": null,
|
453
|
+
"metadata": {},
|
454
|
+
"outputs": [],
|
455
|
+
"source": [
|
456
|
+
"print(X_train.shape,X_test.shape,y_train.shape,y_test.shape)"
|
457
|
+
]
|
458
|
+
},
|
459
|
+
{
|
460
|
+
"cell_type": "code",
|
461
|
+
"execution_count": null,
|
462
|
+
"metadata": {},
|
463
|
+
"outputs": [],
|
464
|
+
"source": [
|
465
|
+
"trdata = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rotation_range=90)\n",
|
466
|
+
"traindata = trdata.flow(x=X_train, y=y_train)\n",
|
467
|
+
"tsdata = ImageDataGenerator(horizontal_flip=True, vertical_flip=True, rotation_range=90)\n",
|
468
|
+
"testdata = tsdata.flow(x=X_test, y=y_test)"
|
469
|
+
]
|
470
|
+
},
|
471
|
+
{
|
472
|
+
"cell_type": "code",
|
473
|
+
"execution_count": null,
|
474
|
+
"metadata": {},
|
475
|
+
"outputs": [],
|
476
|
+
"source": [
|
477
|
+
"from keras.callbacks import ModelCheckpoint, EarlyStopping"
|
478
|
+
]
|
479
|
+
},
|
480
|
+
{
|
481
|
+
"cell_type": "code",
|
482
|
+
"execution_count": null,
|
483
|
+
"metadata": {},
|
484
|
+
"outputs": [],
|
485
|
+
"source": [
|
486
|
+
"checkpoint = ModelCheckpoint(\"ieeercnn_vgg16_1.h5\", monitor='val_loss', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\n",
|
487
|
+
"early = EarlyStopping(monitor='val_loss', min_delta=0, patience=100, verbose=1, mode='auto')"
|
488
|
+
]
|
489
|
+
},
|
490
|
+
{
|
491
|
+
"cell_type": "code",
|
492
|
+
"execution_count": null,
|
493
|
+
"metadata": {},
|
494
|
+
"outputs": [],
|
495
|
+
"source": [
|
496
|
+
"hist = model_final.fit_generator(generator= traindata, steps_per_epoch= 10, epochs= 1000, validation_data= testdata, validation_steps=2, callbacks=[checkpoint,early])"
|
497
|
+
]
|
498
|
+
},
|
499
|
+
{
|
500
|
+
"cell_type": "code",
|
501
|
+
"execution_count": null,
|
502
|
+
"metadata": {},
|
503
|
+
"outputs": [],
|
504
|
+
"source": [
|
505
|
+
"import matplotlib.pyplot as plt\n",
|
506
|
+
"# plt.plot(hist.history[\"acc\"])\n",
|
507
|
+
"# plt.plot(hist.history['val_acc'])\n",
|
508
|
+
"plt.plot(hist.history['loss'])\n",
|
509
|
+
"plt.plot(hist.history['val_loss'])\n",
|
510
|
+
"plt.title(\"model loss\")\n",
|
511
|
+
"plt.ylabel(\"Loss\")\n",
|
512
|
+
"plt.xlabel(\"Epoch\")\n",
|
513
|
+
"plt.legend([\"Loss\",\"Validation Loss\"])\n",
|
514
|
+
"plt.show()\n",
|
515
|
+
"plt.savefig('chart loss.png')"
|
516
|
+
]
|
517
|
+
},
|
518
|
+
{
|
519
|
+
"cell_type": "code",
|
520
|
+
"execution_count": null,
|
521
|
+
"metadata": {},
|
522
|
+
"outputs": [],
|
523
|
+
"source": [
|
524
|
+
"im = X_test[200]\n",
|
525
|
+
"plt.imshow(im)\n",
|
526
|
+
"img = np.expand_dims(im, axis=0)\n",
|
527
|
+
"out= model_final.predict(img)\n",
|
528
|
+
"if out[0][0] > out[0][1]:\n",
|
529
|
+
" print(\"not plane\")\n",
|
530
|
+
"else:\n",
|
531
|
+
" print(\"plane\")"
|
532
|
+
]
|
533
|
+
},
|
534
|
+
{
|
535
|
+
"cell_type": "code",
|
536
|
+
"execution_count": null,
|
537
|
+
"metadata": {},
|
538
|
+
"outputs": [],
|
539
|
+
"source": [
|
540
|
+
"z = 0\n",
|
541
|
+
"\n",
|
542
|
+
"for e, i in enumerate(os.listdir(path)):\n",
|
543
|
+
" if i.startswith(\"airplane_007\"):\n",
|
544
|
+
" z += 1\n",
|
545
|
+
" img = cv2.imread(os.path.join(path, i))\n",
|
546
|
+
" ss.setBaseImage(img)\n",
|
547
|
+
" ss.switchToSelectiveSearchFast()\n",
|
548
|
+
" ssresults = ss.process()\n",
|
549
|
+
" imout = img.copy()\n",
|
550
|
+
"\n",
|
551
|
+
" for e, result in enumerate(ssresults):\n",
|
552
|
+
" if e < 2000:\n",
|
553
|
+
" x, y, w, h = result\n",
|
554
|
+
" timage = imout[y:y+h, x:x+w]\n",
|
555
|
+
" resized = cv2.resize(timage, (56, 56), interpolation=cv2.INTER_AREA) # Resize to (56, 56)\n",
|
556
|
+
" img = np.expand_dims(resized, axis=0)\n",
|
557
|
+
" \n",
|
558
|
+
" # Ensure input shape matches the model's expected input shape\n",
|
559
|
+
" out = model_final.predict(img)\n",
|
560
|
+
" \n",
|
561
|
+
" if out[0][0] > 0.65:\n",
|
562
|
+
" cv2.rectangle(imout, (x, y), (x+w, y+h), (0, 255, 0), 1, cv2.LINE_AA)\n",
|
563
|
+
"\n",
|
564
|
+
" plt.figure()\n",
|
565
|
+
" plt.imshow(cv2.cvtColor(imout, cv2.COLOR_BGR2RGB))\n",
|
566
|
+
" plt.show()"
|
567
|
+
]
|
568
|
+
}
|
569
|
+
],
|
570
|
+
"metadata": {
|
571
|
+
"kernelspec": {
|
572
|
+
"display_name": "Python 3 (ipykernel)",
|
573
|
+
"language": "python",
|
574
|
+
"name": "python3"
|
575
|
+
},
|
576
|
+
"language_info": {
|
577
|
+
"codemirror_mode": {
|
578
|
+
"name": "ipython",
|
579
|
+
"version": 3
|
580
|
+
},
|
581
|
+
"file_extension": ".py",
|
582
|
+
"mimetype": "text/x-python",
|
583
|
+
"name": "python",
|
584
|
+
"nbconvert_exporter": "python",
|
585
|
+
"pygments_lexer": "ipython3",
|
586
|
+
"version": "3.12.4"
|
587
|
+
}
|
588
|
+
},
|
589
|
+
"nbformat": 4,
|
590
|
+
"nbformat_minor": 4
|
591
|
+
}
|