- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从同一目录中的本地系统上传图像。上传后,当我通过打开的 cv 拆分和合并 b、g 和 r 颜色时,我收到错误 ValueError:没有足够的值来解压(预期 3,得到 0)
这是显示的错误是否有可能在我可以跟踪不同代码行更改的流中进行调试? (如在图像路径中一样)当在 google collab 中执行时,作为单个 ipynb 文件正常运行并且我得到所需的分类
ValueError: not enough values to unpack (expected 3, got 0)
Traceback:
File "C:\Users\ADARSH\anaconda3\lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 564, in _run_script
exec(code, module.__dict__)
File "C:\Users\ADARSH\streamlit\deploy_test.py", line 76, in <module>
main()
File "C:\Users\ADARSH\streamlit\deploy_test.py", line 68, in main
mask = imageToTensor('image')
File "C:\Users\ADARSH\streamlit\deploy_test.py", line 44, in imageToTensor
b,g,r = cv2.split(bgr_img)
from pathlib import Path
import cv2
import numpy as np
import pandas as pd
import os
import cv2
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import random
from sklearn.utils import shuffle
from tqdm import tqdm_notebook
import streamlit as st
from PIL import Image as impo
from fastai import *
from fastai.vision import *
from torchvision.models import *
class MyImageItemList(ImageList):
def open(self, fn:PathOrStr)->Image:
img = readCroppedImage(fn.replace('/./','').replace('//','/'))
# This ndarray image has to be converted to tensor before passing on as fastai Image, we can use pil2tensor
return vision.Image(px=pil2tensor(img, np.float32))
def read_image(name):
image = st.file_uploader("Upload an "+ name, type=["png", "jpg", "jpeg",'tif'])
if image is not None:
im = impo.open(image)
im.filename = image.name
return image
def imageToTensor(image):
sz = 68
bgr_img = cv2.imread(image)
b,g,r = cv2.split(bgr_img)
rgb_img = cv2.merge([r,g,b])
# crop to center to the correct size and convert from 0-255 range to 0-1 range
H,W,C = rgb_img.shape
rgb_img = rgb_img[(H-sz)//2:(sz +(H-sz)//2),(H-sz)//2:(sz +(H-sz)//2),:] / 256
return vision.Image(px=pil2tensor(rgb_img, np.float32))
def learn_infernce():
return load_learner('./')
def get_prediction(image):
if st.button('Classify'):
pred, pred_idx, probs = learn_inference.predict(image)
classes = ['negative', 'tumor']
st.write(f'Prediction: {pred}; Probability: {probs[pred_idx]:.04f}')
else:
st.write(f'Click the button to classify')
def main():
st.set_page_config(page_title='Cancer detection', page_icon=None, layout='centered', initial_sidebar_state='auto')
image = read_image('image')
mask = imageToTensor('image')
if mask is not None:
get_prediction('mask')
if __name__ == "__main__":
main()
最佳答案
在您的主要函数中,您传递的是“str”而不是变量,而且我认为您的 read_image
结构不合理。
你应该做的是首先将上传的文件保存在一个目录中,然后从该目录中获取文件并将其作为参数传递给 imageToTensor()
。这是一种解决方法,可以让您完全控制文件。否则,在修复第一个错误后,您将收到其他错误消息。
您可以在一个单独的 python 文件中自动执行几行代码,以在给定的持续时间内从目录中删除上传的文件。
注意:请注意导入,因为我跳过了它们以保持代码简短
class MyImageItemList(ImageList):
def open(self, fn:PathOrStr)->Image:
img = readCroppedImage(fn.replace('/./','').replace('//','/'))
# This ndarray image has to be converted to tensor before passing on as fastai Image, we can use pil2tensor
return vision.Image(px=pil2tensor(img, np.float32))
# Refactured read_image()
def get_uploaded_image():
upload = st.file_uploader("Upload an image", type=["png", "jpg", "jpeg",'tif'])
if upload is not None:
st.write(upload.name)
# Create a directory and save the image file before proceeding.
file_path = os.path.join("data/uploadedImages/", upload.name)
with open(file_path, "wb") as user_file:
user_file.write(upload.getbuffer())
return file_path # fixed indentation
def imageToTensor(image):
sz = 68
bgr_img = cv2.imread(image)
b,g,r = cv2.split(bgr_img)
rgb_img = cv2.merge([r,g,b])
# crop to center to the correct size and convert from 0-255 range to 0-1 range
H,W,C = rgb_img.shape
rgb_img = rgb_img[(H-sz)//2:(sz +(H-sz)//2),(H-sz)//2:(sz +(H-sz)//2),:] / 256
return vision.Image(px=pil2tensor(rgb_img, np.float32))
def learn_infernce():
return load_learner('./')
def get_prediction(image):
if st.button('Classify'):
pred, pred_idx, probs = learn_inference.predict(image)
classes = ['negative', 'tumor']
st.write(f'Prediction: {pred}; Probability: {probs[pred_idx]:.04f}')
else:
st.write(f'Click the button to classify')
def main():
st.set_page_config(page_title='Cancer detection', page_icon=None, layout='centered', initial_sidebar_state='auto')
# Holds the saved file path
user_image = get_uploaded_image()
if user_image is not None:
# Pass the path to imageToTensor() as a parameter.
mask = imageToTensor(user_image)
get_prediction(mask)
if __name__ == "__main__":
main()
关于streamlit - 无法加载图像并将其传递给模型预测的预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74569805/
当我尝试将 streamlit 部署到 heroku 时,出现以下错误。我该如何解决? 没有名为 streamlit.main 的模块; ‘streamlit’是一个包,不能直接执行 最佳答案 我试过
我正在使用带有 streamlit 的简单 ML 模型。它在 conda 环境中的本地机器上运行良好,但当我尝试将其部署到 share.streamlit.io 时,它显示错误安装要求。 错误信息如下
我想使用 docker 来容器化 nginx、fastapi 和 2 个 streamlit 应用程序。所有 3 个应用程序(fastapi、2streamlit 应用程序)都不会相互交互。 Ngin
Is there a way in Streamlit to:Streamlight中是否有方法: Select text in a text area选择文本区域中的文本 Cl
我正在尝试从同一目录中的本地系统上传图像。上传后,当我通过打开的 cv 拆分和合并 b、g 和 r 颜色时,我收到错误 ValueError:没有足够的值来解压(预期 3,得到 0) 错误: 这是显示
我想创建一个简单的流线型应用程序,当您按下按钮时,它会增加 x 并显示 x 的新值。 但是,它仅适用于第一次“x 仅显示值 2 且不增加” import streamlit as st x = 1 i
我一直在尝试使用 streamlit 创建一个网络仪表板。运行一个片段后的错误是,“There are multiple identical st.button widgets with the sa
我使用 2 个不同的 radio 选项来执行不同的任务。我想从一捕获图像,然后稍后在选项 2 中执行一些操作。当我在 my_image(在选项 1 中)中存储一帧后尝试将单选选项更改为 2 时,出现s
有谁知道我是否可以使用 streamlit_chat 消息在 Streamlit 中显示类似 chatgpt 的流响应? 我需要类似 message(streaming=True) 或任何其他替代方案
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
有谁知道我是否可以使用 streamlit_chat 消息在 Streamlit 中显示类似 chatgpt 的流响应? 我需要类似 message(streaming=True) 或任何其他替代方案
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
我正在用子图绘制图像,它在 Jupyter(或“纯 python”)和 Streamlit 中看起来不同。 例如,如果我有一个只有1 张图像 的(2 x 2) 子图,它将在 Streamlit 中被拉
嗨,过去几天我一直在尝试在 azure 中部署 Streamlit 应用程序。一个简单的应用程序,例如 import streamlit as st def main(): st.wr
我是 Streamlit 的新手。我想进行多项选择用户输入(复选框)。但我想从 4 个选项中最多选择 3 个选项。 我已经尝试过 multiselect 的下拉功能. import streamlit
我的应用程序中有一个按钮,我想在用户单击它时设置它的样式。问题在于,因为 Streamlit 不允许我们向我们创建的对象发布类,所以我需要找到一种方法来以稳健且与版本无关的方式指定确切的按钮。这是按钮
我正在处理一个机器学习项目,我想(相对)实时地显示具有适应度函数的图表。 我正在使用 this SO answer 中的代码只要图表显示在 matplotlib 窗口中,它就可以正常工作。一旦我将其添
我的应用程序中有一个按钮,我想在用户单击它时设置它的样式。问题在于,因为 Streamlit 不允许我们向我们创建的对象发布类,所以我需要找到一种方法来以稳健且与版本无关的方式指定确切的按钮。这是按钮
我正在尝试使用 启动 Streamlit 应用程序 import os os.popen("streamlit run stockXchange.py") 当我运行这段代码时,会出现无限多的流光窗口,
全部, 我以前成功使用过多选,但是当我尝试这个我作为 POC 尝试的特定示例时,行为非常奇怪。本质上,我想要做的是使用多选让应用程序在中间步骤等待用户输入。但是,multiselect 不会等我选择我
我是一名优秀的程序员,十分优秀!