|
45 | 45 | imageU = cv2.imread("../input/cell-images-for-detecting-malaria/cell_images/Uninfected/" + b)
|
46 | 46 | image_from_arrayU = Image.fromarray(imageU, 'RGB')
|
47 | 47 | size_imageU = image_from_arrayU.resize((36, 36))
|
48 | | - data.append(np.array(size_imageU)) |
| 48 | + data.append(np.array(size_image)) |
49 | 49 | labels.append(1)
|
50 | 50 | except AttributeError:
|
51 | 51 | print("")
|
52 | | - |
| 52 | + |
53 | 53 | # Creating single numpy array of all the images and labels
|
54 | 54 | data1 = np.array(data)
|
55 | 55 | labels1 = np.array(labels)
|
56 | 56 |
|
57 | 57 | print('Cells : {} and labels : {}'.format(data1.shape , labels1.shape))
|
58 | 58 |
|
59 | 59 | # lets shuffle the data and labels before splitting them into training and testing sets
|
60 | | -n = np.arange(data.shape[0]) |
| 60 | +n = np.arange(data1.shape[0]) |
61 | 61 | np.random.shuffle(n)
|
62 | 62 | data2 = data1[n]
|
63 | 63 | labels2 = labels1[n]
|
64 | 64 |
|
65 | 65 |
|
66 | 66 | ### Splitting the dataset into the Training set and Test set
|
67 | | - |
68 | | -X_train, X_valid, y_trainPre, y_validPre = train_test_split(data2, labels2, test_size = 0.2, random_state = 0) |
69 | | -X_train = X_train.astype('float32') |
70 | | -X_valid = X_valid.astype('float32') |
| 67 | +deftraning(): |
| 68 | +X_train, X_valid, y_train, y_valid = train_test_split(data2, labels2, test_size = 0.2, random_state = 0) |
| 69 | +X_trainF = X_train.astype('float32') |
| 70 | +X_validF = X_valid.astype('float32') |
71 | 71 | # One Hot Encoding
|
72 | | -y_train = to_categorical(y_trainPre) |
73 | | -y_valid = to_categorical(y_validPre) |
| 72 | + y_trainF = to_categorical(y_train) |
| 73 | + y_validF = to_categorical(y_valid) |
| 74 | + |
| 75 | +traning() |
| 76 | + |
| 77 | +def CNN_model(): |
| 78 | + classifier = Sequential() |
| 79 | + # CNN layers |
| 80 | + classifier.add(Conv2D(32, kernel_size=(3, 3), input_shape = (36, 36, 3), activation = 'relu')) |
| 81 | + classifier.add(MaxPooling2D(pool_size = (2, 2))) |
| 82 | + classifier.add(BatchNormalization(axis = -1)) |
| 83 | + classifier.add(Dropout(0.5)) # Dropout prevents overfitting |
| 84 | + classifier.add(Conv2D(32, kernel_size=(3, 3), input_shape = (36, 36, 3), activation = 'relu')) |
| 85 | + classifier.add(MaxPooling2D(pool_size = (2, 2))) |
| 86 | + classifier.add(BatchNormalization(axis = -1)) |
| 87 | + classifier.add(Dropout(0.5)) |
| 88 | + classifier.add(Flatten()) |
| 89 | + classifier.add(Dense(units=128, activation='relu')) |
| 90 | + classifier.add(BatchNormalization(axis = -1)) |
| 91 | + classifier.add(Dropout(0.5)) |
| 92 | + classifier.add(Dense(units=2, activation='softmax')) |
| 93 | + classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy']) |
| 94 | + history = classifier.fit(X_trainF, y_trainF, batch_size=120, epochs=15, verbose=1, validation_data=(X_validF, y_validF)) |
| 95 | + classifier.summary() |
74 | 96 |
|
75 | | -classifier = Sequential() |
76 | | -# CNN layers |
77 | | -classifier.add(Conv2D(32, kernel_size=(3, 3), input_shape = (36, 36, 3), activation = 'relu')) |
78 | | -classifier.add(MaxPooling2D(pool_size = (2, 2))) |
79 | | -classifier.add(BatchNormalization(axis = -1)) |
80 | | -classifier.add(Dropout(0.5)) # Dropout prevents overfitting |
81 | | -classifier.add(Conv2D(32, kernel_size=(3, 3), input_shape = (36, 36, 3), activation = 'relu')) |
82 | | -classifier.add(MaxPooling2D(pool_size = (2, 2))) |
83 | | -classifier.add(BatchNormalization(axis = -1)) |
84 | | -classifier.add(Dropout(0.5)) |
85 | | -classifier.add(Flatten()) |
86 | | -classifier.add(Dense(units=128, activation='relu')) |
87 | | -classifier.add(BatchNormalization(axis = -1)) |
88 | | -classifier.add(Dropout(0.5)) |
89 | | -classifier.add(Dense(units=2, activation='softmax')) |
90 | | -classifier.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy']) |
91 | | -history = classifier.fit(X_train, y_train, batch_size=120, epochs=15, verbose=1, validation_data=(X_valid, y_valid)) |
92 | | -classifier.summary() |
| 97 | +CNN_model() |
93 | 98 |
|
94 | | -y_pred = classifier.predict(X_valid) |
| 99 | +y_pred = classifier.predict(X_validF) |
95 | 100 | # Convert back to categorical values
|
96 | | -y_predf = np.argmax(y_pred, axis=1) |
97 | | -y_validf = np.argmax(y_valid, axis=1) |
| 101 | +y_predF = np.argmax(y_pred, axis=1) |
| 102 | +y_valid_one = np.argmax(y_validF, axis=1) |
98 | 103 | classifier.save("./Malaria/Models/malaria.h5")
|
0 commit comments