File size: 2,168 Bytes
683c547 f528ede a2cce3c d5a9d4e a2cce3c a887793 a2cce3c d5a9d4e a2cce3c d5a9d4e f528ede d5a9d4e 683c547 a2cce3c 0e7dc80 76f07f2 683c547 1f3f0b0 683c547 76f07f2 683c547 f2009fd 683c547 76f07f2 f2009fd 683c547 76f07f2 0e7dc80 ea38376 f2009fd |
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 65 |
import torch
from torchvision import transforms
from efficientnet_pytorch import EfficientNet
from huggingface_hub import HfFileSystem
from PIL import Image
# Authenticate and download the EfficientNet model from Hugging Face Spaces
fs = HfFileSystem()
model_path = 'dhhd255/efficientnet_b3/efficientnet_b3.pt'
with fs.open(model_path, 'rb') as f:
model_content = f.read()
# Save the EfficientNet model file to disk
efficientnet_model_file = 'efficientnet_b3.pt'
with open(efficientnet_model_file, 'wb') as f:
f.write(model_content)
# Load the EfficientNet model onto the CPU
model = EfficientNet.from_pretrained('efficientnet-b3')
model.load_state_dict(torch.load(efficientnet_model_file, map_location=torch.device('cpu')))
# Load your custom model onto the CPU
custom_model_file = 'best_model.pth'
model.load_state_dict(torch.load(custom_model_file, map_location=torch.device('cpu')))
model.eval()
# Define a function that takes an image as input and uses the model for inference
def image_classifier(image):
# Preprocess the input image
data_transform = transforms.Compose([
transforms.Lambda(lambda x: x.convert('RGB')),
transforms.Resize((224, 224)),
transforms.ToTensor()
])
image = Image.fromarray(image)
image = data_transform(image)
image = image.unsqueeze(0)
# Use your custom model for inference
with torch.no_grad():
outputs = model(image)
_, predicted = torch.max(outputs.data, 1)
# Map the index to a class label
labels = ['Healthy', 'Parkinson']
predicted_label = labels[predicted.item()]
# Return the result
return outputs[0].numpy(), predicted_label
# Create a Streamlit app with an image upload input
uploaded_file = st.file_uploader('Upload an image')
if uploaded_file is not None:
# Convert the UploadedFile object to a NumPy array
image = Image.open(uploaded_file)
image = np.array(image)
# Use the image for inference
predictions, predicted_label = image_classifier(image)
# Display the result
st.write(f'Predictions: {predictions}')
st.write(f'Predicted label: {predicted_label}')
|