StegNet / app /models /DEEP_STEGO /hide_image.py
Ankush
Fix build: use tensorflow-cpu, CPU torch wheels, pin numpy<2.0, fix imageio.v2
690bbc9
import os
import tempfile
import numpy as np
from tensorflow.keras.models import load_model
from PIL import Image
import imageio.v2 as imageio
from app.models.DEEP_STEGO.Utils.preprocessing import normalize_batch, denormalize_batch
_MODEL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'models', 'hide.h5')
_model = None
def _get_model():
global _model
if _model is None:
_model = load_model(_MODEL_PATH)
return _model
def hide_image(cover_image_filepath, secret_image_filepath):
model = _get_model()
secret_image_in = Image.open(secret_image_filepath).convert('RGB')
cover_image_in = Image.open(cover_image_filepath).convert('RGB')
if secret_image_in.size != (224, 224):
secret_image_in = secret_image_in.resize((224, 224))
if cover_image_in.size != (224, 224):
cover_image_in = cover_image_in.resize((224, 224))
secret_image_in = np.array(secret_image_in).reshape(1, 224, 224, 3) / 255.0
cover_image_in = np.array(cover_image_in).reshape(1, 224, 224, 3) / 255.0
steg_image_out = model.predict([normalize_batch(secret_image_in), normalize_batch(cover_image_in)])
steg_image_out = denormalize_batch(steg_image_out)
steg_image_out = np.squeeze(steg_image_out) * 255.0
steg_image_out = np.uint8(steg_image_out)
_, output_path = tempfile.mkstemp(suffix='.png')
imageio.imsave(output_path, steg_image_out)
print("Saved steg image to", output_path)
return output_path