Spaces:
Runtime error
Runtime error
import requests | |
from urllib.request import urlopen | |
import base64 | |
import os | |
def fetch_image(url): | |
""" | |
Fetch image data from a URL. | |
""" | |
return urlopen(url).read() | |
def encode_image_to_base64(img_data): | |
""" | |
Encode image bytes to a base64 string. | |
""" | |
return base64.b64encode(img_data).decode("utf-8") | |
def send_prediction_request(base64_image, server_url): | |
""" | |
Send a single base64 image to the prediction API and retrieve predictions. | |
""" | |
try: | |
response = requests.post(f"{server_url}/predict", json={"image": base64_image}) | |
return response | |
except requests.exceptions.RequestException as e: | |
print(f"Error connecting to the server: {e}") | |
return None | |
def send_batch_prediction_request(base64_images, server_url): | |
""" | |
Send a batch of base64 images to the prediction API and retrieve predictions. | |
""" | |
try: | |
response = requests.post( | |
f"{server_url}/predict", json=[{"image": img} for img in base64_images] | |
) | |
return response | |
except requests.exceptions.RequestException as e: | |
print(f"Error connecting to the server: {e}") | |
return None | |
def main(): | |
# Server URL (default or from environment) | |
server_url = os.getenv("SERVER_URL", "http://localhost:8080") | |
# Example URLs for testing | |
image_urls = [ | |
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/beignets-task-guide.png" | |
] | |
# Fetch and encode images | |
try: | |
print("Fetching and encoding images...") | |
base64_images = [encode_image_to_base64(fetch_image(url)) for url in image_urls] | |
print("Images fetched and encoded successfully.") | |
except Exception as e: | |
print(f"Error fetching or encoding images: {e}") | |
return | |
# Test single image prediction | |
try: | |
print("\n--- Single Image Prediction ---") | |
single_response = send_prediction_request(base64_images[0], server_url) | |
if single_response and single_response.status_code == 200: | |
predictions = single_response.json().get("predictions", []) | |
if predictions: | |
print("Top 5 Predictions:") | |
for pred in predictions: | |
print(f"{pred['label']}: {pred['probability']:.2%}") | |
else: | |
print("No predictions returned.") | |
elif single_response: | |
print(f"Error: {single_response.status_code}") | |
print(single_response.text) | |
except Exception as e: | |
print(f"Error sending single prediction request: {e}") | |
if __name__ == "__main__": | |
main() | |