Spaces:
Sleeping
Sleeping
| 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() | |