File size: 2,041 Bytes
e6e90d9
126ba7c
fb24955
3737840
 
 
 
fb24955
3737840
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fb24955
 
 
3737840
 
 
 
 
 
 
 
 
 
 
fb24955
67d1b76
8a7794a
67d1b76
 
3737840
e3a5091
3737840
 
fb24955
3737840
67d1b76
 
e996157
 
 
3737840
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
53
54
55
56
57
58
59
60
61
62
63
64
import gradio as gr
import tensorflow as tf
from tensorflow import keras
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense

# Criar o modelo
model = keras.models.Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(300, 300, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))

# Compilar o modelo
model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

# Carregar pesos pré-treinados (se disponíveis)
model.load_weights('50_epochs.h5')

# Função de pré-processamento
def preprocess(image):
    # Redimensionar a imagem para a forma esperada pelo modelo (300x300)
    image = tf.image.resize(image, (300, 300))
    # Converter os valores dos pixels para o intervalo [0, 1]
    image /= 255.0
    return image

# Função para previsão
def predict(image):
    preprocessed_image = preprocess(image)
    prediction = model.predict(tf.expand_dims(preprocessed_image, axis=0))[0][0]
    if prediction >= 0.5:
        return 'cancer'
    else:
        return 'noncancer'


# Interface Gradio
inputs = gr.inputs.Image()
outputs = gr.outputs.Textbox()

examples = [['8864_idx5_x1801_y2351_class1.png']]

description = "Este é um classificador de histopatologia de mama. Ele foi treinado para distinguir entre amostras de tecido mamário canceroso e não canceroso. Carregue uma imagem de histopatologia de mama e o modelo irá prever se a amostra é cancerosa ou não cancerosa."

app = gr.Interface(fn=predict, inputs=inputs, outputs=outputs, title='Breast Histopathology Classifier', description=description, examples=examples)
app.launch()