xai_framework / utils /augmentation_ex.py
hodorfi's picture
Upload 1288 files
191195c
raw
history blame
3.03 kB
import streamlit as st
from matplotlib import pyplot as plt
import albumentations as A
import cv2
# https://github.com/phrasenmaeher/image_augmentations_visualization/blob/master/Start.py
def create_pipeline(transformations: list):
pipeline = []
for index, transformation in enumerate(transformations):
if transformation:
pipeline.append(index_to_transformation(index))
return pipeline
def load_image(filename):
img = cv2.imread(filename)
return cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
def index_to_transformation(index: int):
if index == 0:
return A.GaussNoise(p=1.0, var_limit=(0.25, 0.5))
elif index == 1:
return A.HorizontalFlip(p=1.0)
elif index == 2:
return A.VerticalFlip(p=1.0)
elif index == 3:
return A.RandomBrightness(p=1.0, limit=(0.5, 1.5))
# elif index == 4:
# return A.AdvancedBlur(p=1.0, blur_limit=3)
elif index == 4:
return A.ChannelShuffle(p=1.0)
elif index == 5:
return A.ChannelDropout(p=1.0)
elif index == 6:
return A.RandomContrast(p=1.0, limit=(0.5, 1.5))
placeholder = st.empty()
placeholder2 = st.empty()
placeholder.markdown(
"# Visualize an image augmentation pipeline\n"
"### Select the components of the pipeline in the sidebar.\n"
"Once you have chosen the augmentation techniques, select or upload an image.\n"
"Then click 'Apply' to start!\n"
)
placeholder2.markdown(
"After clicking start, the individual steps of the pipeline are visualized. The ouput of the previous step is the input to the next step."
)
# placeholder.write("Create your audio pipeline by selecting augmentations in the sidebar.")
st.markdown("Choose the transformations here:")
gaussian_noise = st.sidebar.checkbox("GaussianNoise")
horizontal_flip = st.sidebar.checkbox("HorizontalFlip")
vertical_flip = st.sidebar.checkbox("VerticalFlip")
random_brightness = st.sidebar.checkbox("RandomBrightness")
# advanced_blur = st.sidebar.checkbox("AdvancedBlur")
channel_shuffle = st.sidebar.checkbox("ChannelShuffle")
channel_dropout = st.sidebar.checkbox("ChannelDropout")
random_contrast = st.sidebar.checkbox("RandomContrast")
st.markdown("---")
st.markdown("(Optional) Upload an image file here:")
file_uploader = st.sidebar.file_uploader(label="", type=[".png", ".jpg", ".jpeg"])
st.markdown("Or select a sample file here:")
st.markdown("---")
transformations = [
gaussian_noise,
horizontal_flip,
vertical_flip,
random_brightness,
# advanced_blur,
channel_shuffle,
channel_dropout,
random_contrast,
]
pipeline = A.Compose(create_pipeline(transformations))
print(pipeline)
tmp_img = load_image("/home/hodor/dev/Learning/XAI/streamlit_demo/multipage-app/figures/cnv.png")
# apply the transformation to the image
data = pipeline(image=tmp_img)["image"]
# modified_image = individual_transformation(image=tmp_img)["image"]
st.image(data)