我试图使用Tensorflow来机器学习来分析图像,并根据创建的模型(扩展名。h5)返回正或负的概率。我找不到确切的文档或存储库,所以即使是一个链接来阅读也会很棒。
应用程序链接:https://share.streamlit.io/felipelx/hackathon/IDC_Detector.py
我正在使用的库。
import numpy as np
import streamlit as st
import tensorflow as tf
from keras.models import load_model
加载模型的函数。
@st.cache(allow_output_mutation=True)
def loadIDCModel():
model_idc = load_model('models/IDC_model.h5', compile=False)
model_idc.summary()
return model_idc
工作图像的功能,以及我想看到的:模型。predict -我可以看到但不更新%,与图像无关,值总是相同的。
if uploaded_file is not None:
# transform image to numpy array
file_bytes = tf.keras.preprocessing.image.load_img(uploaded_file, target_size=(96,96), grayscale = False, interpolation = 'nearest', color_mode = 'rgb', keep_aspect_ratio = False)
c.image(file_bytes, channels="RGB")
Genrate_pred = st.button("Generate Prediction")
if Genrate_pred:
model = loadMetModel()
input_arr = tf.keras.preprocessing.image.img_to_array(file_bytes)
input_arr = np.array([input_arr])
probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])
prediction = probability_model.predict(input_arr)
dict_pred = {0: 'Benigno/Normal', 1: 'Maligno'}
result = dict_pred[np.argmax(prediction)]
value = 0
if result == 'Benigno/Normal':
value = str(((prediction[0][0])*100).round(2)) + '%'
else:
value = str(((prediction[0][1])*100).round(2)) + '%'
c.metric('Predição', result, delta=value, delta_color='normal')
事先感谢您的帮助。
我注意到的第一件事是,您用于加载模型的函数命名为loadIDCModel
,但是您调用用于加载模型的函数是loadMetModel
。但是,当我检查您的源代码时,看起来您已经解决了这个问题。我建议你更新你的问题来反映这一点。