-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrain.py
84 lines (64 loc) · 2.33 KB
/
Train.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
import os
import cv2
from PIL import Image
import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Activation
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers import Dense
from sklearn.model_selection import train_test_split
image_directory='dataset/'
no_tumor_images=os.listdir(image_directory+ 'no/')
yes_tumor_images=os.listdir(image_directory+ 'yes/')
dataset=[]
label=[]
INPUT_SIZE=64
for i , image_name in enumerate(no_tumor_images):
if(image_name.split('.')[1]=='jpg'):
image=cv2.imread(image_directory+'no/'+image_name)
image=Image.fromarray(image,'RGB')
image=image.resize((INPUT_SIZE,INPUT_SIZE))
dataset.append(np.array(image))
label.append(0)
for i , image_name in enumerate(yes_tumor_images):
if(image_name.split('.')[1]=='jpg'):
image=cv2.imread(image_directory+'yes/'+image_name)
image=Image.fromarray(image, 'RGB')
image=image.resize((INPUT_SIZE,INPUT_SIZE))
dataset.append(np.array(image))
label.append(1)
dataset=np.array(dataset)
label=np.array(label)
x_train, x_test, y_train, y_test=train_test_split(dataset, label, test_size=0.2, random_state=0)
x_train=tf.keras.utils.normalize(x_train, axis=1)
x_test=tf.keras.utils.normalize(x_test, axis=1)
y_train=tf.keras.utils.to_categorical(y_train , num_classes=2)
y_test=tf.keras.utils.to_categorical(y_test , num_classes=2)
model=Sequential()
model.add(Conv2D(32, (3,3), input_shape=(INPUT_SIZE, INPUT_SIZE, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(32, (3,3), kernel_initializer='he_uniform'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(64, (3,3), kernel_initializer='he_uniform'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=16,
verbose=1, epochs=10,
validation_data=(x_test, y_test),
shuffle=False)
model.save('Models/myModel.h5')