cifar-10-fastapi / utils /image_utils.py
avidaldo's picture
Autocommit
7beff62
Raw
History Blame Contribute Delete
1.53 kB
import torchvision.transforms as transforms
from PIL import Image
import io
import os
def _get_transform():
"""
Returns the transformation pipeline for preprocessing images.
The transformation includes resizing to 32x32 pixels, converting to tensor,
and normalizing with the same values used during model training.
Returns:
torchvision.transforms.Compose: The transformation pipeline
"""
return transforms.Compose([
transforms.Resize((32, 32)),
transforms.ToTensor(),
transforms.Normalize(
mean=[0.4914, 0.4822, 0.4465],
std=[0.2470, 0.2435, 0.2616]
)
])
def process_image(image_input):
"""
Process an image from bytes or file path to a normalized tensor ready for prediction.
Args:
image_input (bytes or str): Raw image data or path to image file
Returns:
torch.Tensor: Processed image tensor with batch dimension added
"""
# Handle different input types
if isinstance(image_input, bytes):
# Input is bytes
image = Image.open(io.BytesIO(image_input))
elif isinstance(image_input, str) and os.path.isfile(image_input):
# Input is a file path
image = Image.open(image_input)
else:
raise ValueError("Input must be image bytes or valid file path")
# Apply transformations
transform = _get_transform()
image_tensor = transform(image).unsqueeze(0) # Add batch dimension
return image_tensor