shijianjian
init
24217e7
import torch
import kornia
import gradio as gr
def image_to_grayscale(image, version, step_no):
image = kornia.utils.image_to_tensor(image, keepdim=False) / 255.
image = kornia.geometry.transform.resize(
image, 384, interpolation='bilinear', align_corners=None, side='short', antialias=False)
dissolved = kornia.filters.StableDiffusionDissolving(version)(image, int(step_no))
output = kornia.utils.tensor_to_image(dissolved)
return output
iface = gr.Interface(
fn=image_to_grayscale,
inputs=[
gr.Image(type="numpy"),
gr.Dropdown(
["2.1", "1.5", "1.4"], value="2.1", multiselect=False, label="Stable Diffusion Version"
),
gr.Number(value=500, minimum=0, precision=0, maximum=1000, label="Timestep No."),
],
outputs="image",
title="Dissolving Transformations with Stable Diffusion",
description="Dissolving transformation based on `Dissolving Is Amplifying: Towards Fine-Grained Anomaly Detection`. Original rep is https://github.com/shijianjian/DIA. It has been included in Kornia lib (https://kornia.readthedocs.io/en/latest/augmentation.module.html#kornia.augmentation.RandomDissolving). You may try by `kornia.filters.StableDiffusionDissolving(version)(image, step_no)`, or `kornia.augmentation.RandomDissolving()(image)`. In this demo, the images are downsampled for fast computation."
)
# Launch the Gradio app
iface.launch()