File size: 1,988 Bytes
02ad932
 
 
 
 
 
6e9ff3d
02ad932
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import gradio as gr
import numpy as np
import cv2  # Ensure you have opencv-python installed
from tensorflow.keras.models import load_model  # Ensure you have TensorFlow installed

# Load your trained model
model = load_model(r"breast_cancer_detection_model3.h5")  # Update this path to your actual model file

# Define class names according to your model
class_names = ['benign', 'malignant', 'normal']  # Update this list if different

# Define the prediction function
def predict_cancer(images):
    results = []
    for img in images:
        # Convert image to grayscale (if it's not already), resize, and normalize
        img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)  # Convert to grayscale if not already
        img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))  # Resize to match model input
        img = np.expand_dims(img, axis=-1)  # Add channel dimension
        img = img / 255.0  # Normalize
        img = np.expand_dims(img, axis=0)  # Add batch dimension

        # Make prediction
        prediction = model.predict(img)
        class_idx = np.argmax(prediction[0])
        class_name = class_names[class_idx]
        probability = np.max(prediction[0])
        results.append(f"{class_name} (Probability: {probability:.2f})")

    return results

# Define Gradio interface
def classify_images(images):
    if not isinstance(images, list):  # Ensure `images` is a list of images
        images = [images]
    return predict_cancer(images)

# Define the Gradio interface
input_images = gr.Image(type='numpy', label='Upload Ultrasound Images')
output_labels = gr.Textbox(label='Predictions')

gr_interface = gr.Interface(
    fn=classify_images,
    inputs=input_images,
    outputs=output_labels,
    title="Breast Cancer Detection from Ultrasound Images",
    description="Upload multiple breast ultrasound images to get predictions on whether they show benign, malignant, or normal conditions."
)

# Launch the Gradio app
if __name__ == "__main__":
    gr_interface.launch()