apoorvrajdev's picture
feat: finalize Phase 1 modular ML architecture
3a2e5f0
"""Inference-time image loader — same path as cell 25 of the notebook.
The training pipeline goes through ``data.pipeline.build_*_pipeline`` which
calls ``preprocessing.image.preprocess_image_tensor``. The inference path
must produce the same tensor for the same image, otherwise BLEU drops
silently. This module re-uses ``preprocess_image_tensor`` so train/serve
parity is by construction.
"""
from __future__ import annotations
from captioning.preprocessing.image import preprocess_image_tensor
def load_image_from_path(image_path: str):
"""Read a JPEG/PNG from disk and produce a model-ready tensor.
Mirrors the ``load_image_from_path`` helper in notebook cell 25.
Args:
image_path: Filesystem path to the image. ``str``, ``Path``, and
``tf.string`` tensors all work (TF does the conversion).
Returns:
A ``tf.Tensor`` of shape ``[299, 299, 3]``, dtype ``float32``,
with InceptionV3 normalisation.
"""
import tensorflow as tf
raw = tf.io.read_file(image_path)
image = tf.io.decode_jpeg(raw, channels=3)
return preprocess_image_tensor(image)