File size: 3,798 Bytes
96a96d9 66ec950 d5465e6 66ec950 96a96d9 e2d5557 6e7a74d 66ec950 e2d5557 96a96d9 590bb1b e2d5557 17d778a 96a96d9 17d778a 96a96d9 6e7a74d 96a96d9 6e61d26 96a96d9 590bb1b 17d778a 590bb1b 17d778a d5465e6 17d778a 590bb1b 17d778a 2403575 17d778a d5465e6 17d778a b30ce1c 17d778a 52a0611 17d778a 6e61d26 17d778a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import os
import streamlit as st
import albumentations as A
from utils import load_augmentations_config, get_arguments
from visuals import (
show_transform_control,
select_image,
show_credentials,
show_docstring,
)
# get CLI params: the path to images and image width
path_to_images, width_original = get_arguments()
if not os.path.isdir(path_to_images):
st.title("There is no directory: " + path_to_images)
else:
# select interface type
interface_type = st.sidebar.radio('Select the interface type',
['Simple', 'Professional'])
# select image
status, image = select_image(path_to_images, interface_type)
if status == 0:
st.title("Can't load image")
if status == 2:
st.title("Please, upload the image")
else:
placeholder_params = {
"image_width": image.shape[1],
"image_height": image.shape[0],
"image_half_width": int(image.shape[1] / 2),
"image_half_height": int(image.shape[0] / 2),
}
# load the config
augmentations = load_augmentations_config(
placeholder_params, "configs/augmentations.json"
)
# select a transformation
if interface_type == 'Simple':
transform_names = [st.sidebar.selectbox(
"Select a transformation:", sorted(list(augmentations.keys()))
)]
# in the professional mode you can choose several transforms
elif interface_type == 'Professional':
transform_names = [st.sidebar.selectbox(
"Select transformation №1:", sorted(list(augmentations.keys()))
)]
while transform_names[-1] != 'None':
transform_names.append(st.sidebar.selectbox(
f"Select transformation №{len(transform_names) + 1}:",
['None'] + sorted(list(augmentations.keys()))
))
transform_names = transform_names[:-1]
transforms = []
for i, transform_name in enumerate(transform_names):
# select the params values
st.sidebar.subheader("Params of the " + transform_name)
param_values = show_transform_control(augmentations[transform_name], i)
transforms.append(getattr(A, transform_name)(**param_values))
try:
# apply the transformation to the image
data = A.ReplayCompose(transforms)(image=image)
error = 0
except ValueError:
error = 1
st.title("The error has occurred. Most probably you have passed wrong set of parameters. \
Check transforms that change the shape of image.")
if error == 0:
augmented_image = data["image"]
# show title
st.title("Demo of Albumentations")
# show the images
width_transformed = int(
width_original / image.shape[1] * augmented_image.shape[1]
)
st.image(image, caption="Original image", width=width_original)
st.image(augmented_image, caption="Transformed image", width=width_transformed)
# random values used to get transformations
if interface_type == 'Professional':
st.subheader("Random params used")
random_values = {}
for applied_params in data["replay"]["transforms"]:
random_values[applied_params['__class_fullname__'].split('.')[-1]] = applied_params['params']
st.write(random_values)
# print additional info
for transform in transforms:
show_docstring(transform)
st.code(str(transform))
show_credentials()
|