Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Pneumonia Image Detection

This repository contains a code implementation for detecting pneumonia in X-ray images using deep learning techniques. The code processes the input dataset, generates new images, creates and trains a model to classify the images, and evaluates the performance of the model. The code also supports using a pre-trained InceptionV3 model for transfer learning.

Functions

The following functions are implemented in the code:

  • image_exploration: Creates a list of tuples containing class, path, and size for each image in the given path.
  • images_creator: Generates a specified number of new images, creating a certain number of images for each image in the input list of tuples.
  • image_generator: Generates new images from a given image using data augmentation techniques.
  • format_example: Returns an image that is reshaped to IMG_SIZE.
  • dataset_creator: Creates two lists of tuples with class and formatted image arrays, one for normal images and one for pneumonia images.
  • dataset_loader: Loads image data from a list of tuples and returns two arrays, one for images and one for labels.
  • `convert_RGB' : Converts a grayscale image to an RGB image by duplicating the number of channels and pixel values.

Usage

  1. Set the dir_images variable to the directory containing your dataset of X-ray images.

  2. Create a list of tuples with class, path, and size for each image in the dataset:

images_list = image_exploration(dir_images)
  1. Generate new images from the dataset:
images_creator(images_list)
  1. Combine the original images and the newly generated images into a single list, and create a dataset:
ds_list = images_list + new_images_list
ds_NORMAL, ds_PNEUMO = dataset_creator(ds_list)
ds_total = ds_NORMAL + ds_PNEUMO
  1. Load the dataset and split it into training, validation, and test sets:
X, y = dataset_loader(ds_total)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=val_size, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=test_size, random_state=42)
  1. Train and evaluate the custom model:
#Train the model
history = model_PROP.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=EPOCHS, batch_size=BATCH_SIZE)

#Evaluate the model
accuracy_train = model_PROP.history.history['accuracy'][-1]
loss0, accuracy_test = model_PROP.evaluate(X_test, y_test)

print(f'ACC. TEST: {accuracy_test} -- ACC. TRAIN: {accuracy_train} ')
  1. Train and evaluate the InceptionV3 model:
#Train the model
history = model_V3.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=EPOCHS, batch_size=BATCH_SIZE)

#Evaluate the model
accuracy_train = model_V3.history.history['accuracy'][-1]
loss0, accuracy_test = model_V3.evaluate(X_test, y_test)

print(f'ACC. TEST: {accuracy_test} -- ACC. TRAIN: {accuracy_train} ')

Dependencies

  • TensorFlow
  • NumPy
  • OpenCV
  • Pillow
  • Matplotlib
  • tqdm
  • scikit-learn

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages