import numpy as np import gradio as gr from PIL import Image import tensorflow as tf from tensorflow import keras from huggingface_hub import from_pretrained_keras model = from_pretrained_keras("keras-io/low-light-image-enhancement", compile=False) examples = ['got2.png', 'gotj.png', 'goti.png' ] def get_enhanced_image(data, output): r1 = output[:, :, :, :3] r2 = output[:, :, :, 3:6] r3 = output[:, :, :, 6:9] r4 = output[:, :, :, 9:12] r5 = output[:, :, :, 12:15] r6 = output[:, :, :, 15:18] r7 = output[:, :, :, 18:21] r8 = output[:, :, :, 21:24] x = data + r1 * (tf.square(data) - data) x = x + r2 * (tf.square(x) - x) x = x + r3 * (tf.square(x) - x) enhanced_image = x + r4 * (tf.square(x) - x) x = enhanced_image + r5 * (tf.square(enhanced_image) - enhanced_image) x = x + r6 * (tf.square(x) - x) x = x + r7 * (tf.square(x) - x) enhanced_image = x + r8 * (tf.square(x) - x) return enhanced_image def infer(original_image): image = keras.preprocessing.image.img_to_array(original_image) image = image.astype("float32") / 255.0 image = np.expand_dims(image, axis=0) output = model.predict(image) output = get_enhanced_image(image, output) output_image = tf.cast((output[0, :, :, :] * 255), dtype=np.uint8) output_image = Image.fromarray(output_image.numpy()) return output_image iface = gr.Interface( fn=infer, title="Zero-DCE for low-light image enhancement", description = "Implementing Zero-Reference Deep Curve Estimation for low-light image enhancement.", inputs=[gr.inputs.Image(label="Original Image", type="pil")], outputs=[gr.outputs.Image(label="Enhanced Image", type="numpy")], examples=examples, article = "**Original Author**: [Soumik Rakshit](https://github.com/soumik12345)
**HF Contribution**: [Harveen Singh Chadha](https://github.com/harveenchadha)
", ).launch(debug=True, enable_queue=False, cache_examples=True)