Spaces:
Sleeping
Sleeping
import numpy as np | |
import pandas as pd | |
import tensorflow as tf | |
from tensorflow import keras | |
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization, GlobalAveragePooling2D | |
from tensorflow.keras.models import Model, load_model, Sequential | |
from tensorflow.keras.optimizers import Adam | |
from tensorflow.keras.metrics import Precision, Recall | |
from tensorflow.keras.callbacks import EarlyStopping | |
from sklearn.utils.class_weight import compute_class_weight | |
from sklearn.model_selection import train_test_split | |
from tensorflow.image import resize | |
from tensorflow.keras.utils import to_categorical | |
import matplotlib.pyplot as plt | |
import warnings | |
import warnings | |
warnings.filterwarnings("ignore") | |
# print ('modules loaded') | |
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
from PIL import Image | |
import tensorflow.keras as keras | |
st.title("Skin Cancer Classification App") | |
models = { | |
"Le_Net": load_model('LeNet_5.h5'), | |
"Simple_CNN": load_model('Simple CNN.h5'), | |
"Alex_Net": load_model('AlexNet.h5'), | |
"Deeper_CNN": load_model('Deeper CNN.h5') | |
} | |
# Allow user to select model | |
model_name = st.selectbox("Choose a model", list(models.keys())) | |
model = models[model_name] | |
# Upload CSV file | |
# file = st.file_uploader("Upload a CSV file", type=["csv"]) | |
file ='hmnist_28_28_RGB.csv' | |
def image_resize(data): | |
Data = data.drop(columns=["label"]) | |
Data = np.array(Data).reshape(-1, 28, 28, 3) | |
Data = Data / 255.0 # Normalizing the data | |
# Resize images to 32x32 pixels | |
Data_resized = resize(Data, [32, 32]).numpy() # Ensure conversion to NumPy array | |
return Data_resized | |
if file is not None: | |
df = pd.read_csv(file) | |
# Get first row | |
img_reshaped = image_resize(df) | |
# Get prediction | |
pred = model.predict(img_reshaped[0]) | |
label = np.argmax(pred) | |
label_map = {4: ('nv', ' melanocytic nevi'), | |
6: ('mel', 'melanoma'), | |
2: ('bkl', 'benign keratosis-like lesions'), | |
1: ('bcc' , ' basal cell carcinoma'), | |
5: ('vasc', 'pyogenic granulomas and hemorrhage'), | |
0: ('akiec', 'Actinic keratoses and intraepithelial carcinomae'), | |
3: ('df', 'dermatofibroma')} | |
if label in label_map: | |
label_name = label_map[label][0] | |
full_name = label_map[label][1] | |
# Display image and result | |
col1, col2 = st.columns(2) | |
with col1: | |
st.header("Input Image") | |
# st.image(image) | |
with col2: | |
st.header("Prediction") | |
st.metric("Digit", full_name) | |
# import streamlit as st | |
# import predict_model # our prediction model | |
# # Label maps | |
# label_map = {0: ('akiec', 'Actinic keratoses'), | |
# 1: ('bcc', 'basal cell carcinoma'), | |
# # Rest of label map | |
# } | |
# # Get prediction | |
# img = st.file_uploader("Upload image") | |
# if img: | |
# pred_id = predict_model.get_prediction(img) | |
# # Display prediction | |
# if pred_id in label_map: | |
# label_name = label_map[pred_id][0] | |
# full_name = label_map[pred_id][1] | |
# st.success(f"Predicted Label: {label_name} - {full_name}") | |
# else: | |
# st.warning("Unknown label predicted") | |
# data_dir = 'hmnist_28_28_RGB.csv' | |
# data = pd.read_csv(data_dir) | |
# data.head() | |
# Label = data["label"] | |
# Data = data.drop(columns=["label"]) | |
# data["label"].value_counts() | |
# classes = {4: ('nv', ' melanocytic nevi'), | |
# 6: ('mel', 'melanoma'), | |
# 2 :('bkl', 'benign keratosis-like lesions'), | |
# 1:('bcc' , ' basal cell carcinoma'), | |
# 5: ('vasc', ' pyogenic granulomas and hemorrhage'), | |
# 0: ('akiec', 'Actinic keratoses and intraepithelial carcinomae'), | |
# 3: ('df', 'dermatofibroma')} | |
# from tensorflow.image import resize | |
# #preprocess data | |
# Label = data["label"] | |
# Label = to_categorical(Label, num_classes=7) # Assuming 7 classes | |
# # Later in Streamlit... | |