-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtrain_detect.py
84 lines (64 loc) · 2.86 KB
/
train_detect.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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 24 15:57:28 2019
@author: alim
"""
"""
The kears implementation of character-digit recognition.
"""
# Part-1 : Building the CNN
# Importing the Keras libraries and packages
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
from keras.callbacks import CSVLogger
from keras.optimizers import RMSprop
# Initialising the CNN
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Convolution2D(32,(3,3),input_shape = (64,64,3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2,2)))
# Step 1 - Convolution
classifier.add(Convolution2D(32,(3,3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2,2)))
# Step 3 - Flattening
classifier.add(Flatten())
classifier.add(Dense(128, activation = 'relu'))
classifier.add(Dropout((0.07)))
classifier.add(Dense(36, activation = 'softmax'))
csv=CSVLogger("epochs2.log")
# Compiling the CNN
classifier.compile(optimizer = RMSprop(lr=0.001,rho=0.9,epsilon=1e-08,decay=0.005), loss = 'categorical_crossentropy', metrics = ['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
classifier.fit_generator(train_set,steps_per_epoch=47605,epochs=5,validation_data=test_set,validation_steps=1292,callbacks=[csv])
#Fitting the CNN to images
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1./255)
training_set = train_generator = train_datagen.flow_from_directory('/home/alim/Desktop/Indian-License-plate-recognition/character-data/training_data',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
test_set = validation_generator = test_datagen.flow_from_directory('/home/alim/Desktop/Indian-License-plate-recognition/character-data/test_data',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
classifier.fit_generator(train_set,steps_per_epoch=47605,epochs=5,validation_data=test_set,validation_steps=1292,callbacks=[csv])
classifier.save('char-reg.h5')
import cv2
import numpy as np
img=cv2.imread('temp1.jpg')
img=cv2.resize(img,(64,64))
img=np.reshape(img,[1,64,64,3])
classes=classifier.predict_classes(img)
print(classes)