Skip to content

CNN classification added to computer vision #4350

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Jun 24, 2021
Merged
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
629fd8a
cnn classification file
9harshit Apr 22, 2021
c104a73
Update cnn_classification.py
9harshit Apr 22, 2021
054fdc7
Delete cnn_classification.py
9harshit Apr 22, 2021
d575ef1
cnn classifcation added
9harshit Apr 22, 2021
e24fdf6
cnn classification added
9harshit Apr 22, 2021
62785b7
Update cnn_classification.py
9harshit Apr 22, 2021
96714a3
Update cnn_classification.py
9harshit Apr 22, 2021
61a8e65
Update cnn_classification.py
9harshit Apr 22, 2021
9e9aa1c
Update cnn_classification.py
9harshit Apr 22, 2021
5d93c27
black formatted
9harshit Apr 23, 2021
b27e7af
flake8 corrected
9harshit Apr 23, 2021
24bb00e
Add files via upload
9harshit Apr 23, 2021
96a770e
added dataset link
9harshit Apr 27, 2021
9f0064b
Delete cnn_classification.py
9harshit Apr 27, 2021
f6b14d8
added cnn classification
9harshit Apr 27, 2021
2e5ccbd
Update cnn_classification.py
9harshit Apr 27, 2021
7981c4a
Update cnn_classification.py
9harshit Apr 27, 2021
ab1e53d
Update cnn_classification.py
9harshit Apr 27, 2021
ca54ea0
Delete requirements.txt
9harshit Apr 27, 2021
c8ff175
Update cnn_classification.py
9harshit Apr 27, 2021
8d12d8d
Create cnn_classification.py
9harshit Apr 27, 2021
ecd4161
Add files via upload
9harshit Apr 27, 2021
201d636
using keras from tensorflow only
9harshit Apr 30, 2021
89e0107
update tensorflow
9harshit Apr 30, 2021
2c83aaf
Add files via upload
9harshit May 24, 2021
c43489d
Add files via upload
9harshit May 24, 2021
abdabda
Merge branch 'TheAlgorithms:master' into master
9harshit May 24, 2021
4ac3d3b
Update cnn_classification.py
9harshit May 24, 2021
a3b550c
Add files via upload
9harshit May 24, 2021
3b100ec
Add files via upload
9harshit May 24, 2021
9c3b895
changes made
9harshit May 24, 2021
57f85c6
Delete computer_vision/cnn_classification directory
9harshit Jun 24, 2021
0e28801
Add files via upload
9harshit Jun 24, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions computer_vision/cnn_classification.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
"""
Convolutional Neural Network

Objective : To train a CNN model detect if TB is present in Lung X-ray or not.

Resources CNN Theory :
https://en.wikipedia.org/wiki/Convolutional_neural_network
Resources Tensorflow : https://www.tensorflow.org/tutorials/images/cnn

Download dataset from :
https://lhncbc.nlm.nih.gov/LHC-publications/pubs/TuberculosisChestXrayImageDataSets.html

1. Download the dataset folder and create two folder training set and test set
in the parent dataste folder
2. Move 30-40 image from both TB positive and TB Negative folder
in the test set folder
3. The labels of the iamges will be extracted from the folder name
the image is present in.

"""

# Part 1 - Building the CNN

import numpy as np

# Importing the Keras libraries and packages
import tensorflow as tf
from tensorflow.keras import layers, models

if __name__ == "__main__":

# Initialising the CNN
classifier = models.Sequential()

# Step 1 - Convolution
classifier.add(
layers.Conv2D(32, (3, 3), input_shape=(64, 64, 3), activation="relu")
)

# Step 2 - Pooling
classifier.add(layers.MaxPooling2D(pool_size=(2, 2)))

# Adding a second convolutional layer
classifier.add(layers.Conv2D(32, (3, 3), activation="relu"))
classifier.add(layers.MaxPooling2D(pool_size=(2, 2)))

# Step 3 - Flattening
classifier.add(layers.Flatten())

# Step 4 - Full connection
classifier.add(layers.Dense(units=128, activation="relu"))
classifier.add(layers.Dense(units=1, activation="sigmoid"))

# Compiling the CNN
classifier.compile(
optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"]
)

# Part 2 - Fitting the CNN to the images

# Load Trained model weights

# from keras.models import load_model
# regressor=load_model('cnn.h5')

train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1.0 / 255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True
)

test_datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1.0 / 255)

training_set = train_datagen.flow_from_directory(
"dataset/training_set", target_size=(64, 64), batch_size=32, class_mode="binary"
)

test_set = test_datagen.flow_from_directory(
"dataset/test_set", target_size=(64, 64), batch_size=32, class_mode="binary"
)

classifier.fit_generator(
training_set, steps_per_epoch=5, epochs=30, validation_data=test_set
)

classifier.save("cnn.h5")

# Part 3 - Making new predictions

test_image = tf.keras.preprocessing.image.load_img(
"dataset/single_prediction/image.png", target_size=(64, 64)
)
test_image = tf.keras.preprocessing.image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis=0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 0:
prediction = "Normal"
if result[0][0] == 1:
prediction = "Abnormality detected"