Skin PRJ
Skin PRJ
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
name_class = os.listdir(file_path)
name_class
['benign', 'malignant']
filepaths = list(glob.glob(file_path+'/**/*.*'))
counts = data.Label.value_counts()
sns.barplot(x=counts.index, y=counts)
plt.xlabel('Type')
plt.xticks(rotation=90);
total_samples = len(data)
malignant_count = data[data['Label'] == 'malignant'].shape[0]
benign_count = data[data['Label'] == 'benign'].shape[0]
train_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
train_gen = train_datagen.flow_from_dataframe(
dataframe=train,
x_col='Filepath',
y_col='Label',
target_size=(100,100),
class_mode='categorical',
batch_size=32,
shuffle=True,
seed=42
)
valid_gen = train_datagen.flow_from_dataframe(
dataframe=test,
x_col='Filepath',
y_col='Label',
target_size=(100,100),
class_mode='categorical',
batch_size=32,
shuffle=False,
seed=42
)
test_gen = test_datagen.flow_from_dataframe(
dataframe=test,
x_col='Filepath',
y_col='Label',
target_size=(100,100),
class_mode='categorical',
batch_size=32,
shuffle=False
)
Found 1977 validated image filenames belonging to 2 classes.
Found 660 validated image filenames belonging to 2 classes.
Found 660 validated image filenames belonging to 2 classes.
pretrained_model = ResNet50(
input_shape=(100,100, 3),
include_top=False,
weights='imagenet',
pooling='avg'
)
pretrained_model.trainable = False
inputs = pretrained_model.input
x = Dense(128, activation='relu')(pretrained_model.output)
x = Dense(128, activation='relu')(x)
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy']
)
my_callbacks = [EarlyStopping(monitor='val_accuracy',
min_delta=0,
patience=2,
mode='auto')]
history = model.fit(
train_gen,
validation_data=valid_gen,
epochs=100
)
model.save("model_SkinCancer.h5")
pd.DataFrame(history.history)[['accuracy','val_accuracy']].plot()
plt.title("Accuracy")
plt.show()
pd.DataFrame(history.history)[['loss','val_loss']].plot()
plt.title("Loss")
plt.show()
y_test = list(test.Label)
print(classification_report(y_test, pred))
precision recall f1-score support
# Make predictions
predictions = model.predict(img_array)
# Post-process predictions
predicted_class_index = np.argmax(predictions)
class_labels = {0: 'benign', 1: 'malignant'}
predicted_class_label = class_labels[predicted_class_index]
confidence = predictions[0][predicted_class_index]