File size: 4,167 Bytes
2f39864
0217301
7b504ac
0217301
3efd956
 
 
 
 
 
 
afd6ab5
 
 
 
3efd956
afd6ab5
0217301
afd6ab5
887726c
44eca6d
 
 
 
 
 
 
 
 
87c454c
887726c
 
 
 
 
 
 
 
 
2f39864
f670049
887726c
 
 
 
 
 
 
 
 
 
 
 
 
20b8cdc
ad0dde3
887726c
 
7b504ac
887726c
 
2ecea20
887726c
 
 
 
 
 
 
44eca6d
 
887726c
 
87c454c
887726c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88a6820
 
 
887726c
 
 
 
 
 
 
 
35d044c
fb63ca4
 
d384e2a
 
cd76cb4
 
3b98b33
 
 
 
 
d384e2a
cd76cb4
 
fb63ca4
f670049
887726c
 
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import os
import streamlit as st
import albumentations as A

from utils import (
    load_augmentations_config,
    get_arguments,
    get_placeholder_params,
    select_transformations,
    show_random_params,
)
from visuals import (
    select_image,
    show_credentials,
    show_docstring,
    get_transormations_params,
)


def main():
    st.write("This instance of the app will be discontinued after 18th of March 2024.")
    st.write(
        "You can still use it locally of deploy your own instance. See the \
            [source code](https://github.com/IliaLarchenko/albumentations-demo)."
    )
    st.write(
        "Or use the fork supported and deployed by albumentations team: \
            [https://demo.albumentations.ai/](https://demo.albumentations.ai/)."
    )

    # 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 mode", ["Simple", "Professional"]
        )

        # select image
        status, image = select_image(path_to_images, interface_type)
        if status == 1:
            st.title("Can't load image")
        if status == 2:
            st.title("Please, upload the image")
        else:
            # image was loaded successfully
            placeholder_params = get_placeholder_params(image)

            # load the config
            augmentations = load_augmentations_config(
                placeholder_params, "configs/augmentations.json"
            )

            # get the list of transformations names
            transform_names = select_transformations(augmentations, interface_type)

            # get parameters for each transform
            transforms = get_transormations_params(transform_names, augmentations)

            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."
                )
            
            # proceed only if everything is ok
            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,
                )

                # comment about refreshing
                st.write("*Press 'R' to refresh*")

                # random values used to get transformations
                show_random_params(data, interface_type)

                # print additional info
                for transform in transforms:
                    show_docstring(transform)
                    st.code(str(transform))
                show_credentials()

                # adding google analytics pixel
                # only when deployed online. don't collect statistics of local usage
                if "GA" in os.environ:
                    st.image(os.environ["GA"])
                    st.markdown(
                        (
                            "[Privacy policy]"
                            + (
                                "(https://htmlpreview.github.io/?"
                                + "https://github.com/IliaLarchenko/"
                                + "albumentations-demo/blob/deploy/docs/privacy.html)"
                            )
                        )
                    )


if __name__ == "__main__":
    main()