File size: 9,669 Bytes
9cc66e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19de612
 
 
 
9cc66e2
 
 
 
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
from core.controllers.pages_controller import Page


class Teoria(Page):
    variables_globales = {
    }
    archivos_css = ["main",
                    "teoria"]
    avances = [
        {"fecha": 1960,
         "texto": "Aparece 1"},
        {"fecha": 1970,
         "texto": "Aparece 2"},
        {"fecha": 1980,
         "texto": "Aparece 3"},
        {"fecha": 1990,
         "texto": "Aparece 4"},
        {"fecha": 2000,
         "texto": "Aparece 5"},
        {"fecha": 2010,
         "texto": "Aparece 6"},
        {"fecha": 2020,
         "texto": "Aparece 7"}
    ]
    fuentes = [
        {"titulo": "Analysis of Classification by Supervised and Unsupervised Learning",
         "url": "https://www.computer.org/csdl/proceedings-article/iccima/2007/30500280/12OmNzxyiHV"},
        {"titulo": "Implementation of Interval Arithmetic Algorithms on FPGAs",
         "url": "https://dl.acm.org/doi/10.1109/ICCIMA.2007.237"},
        {"titulo": "La Noticia 3",
         "url": "https://enlace3.com"},
        {"titulo": "La Noticia 4",
         "url": "https://enlace4.com"},
        {"titulo": "La Noticia 5",
         "url": "https://enlac5.com"},
        {"titulo": "La Noticia 6",
         "url": "https://enlace6.com"},
    ]

    def __init__(self, title=str("Teoría"), icon=str("🖼️"), init_page=False):
        super().__init__()
        if init_page:
            self.new_page(title=title, icon=icon)
            self.new_body(True)
        self.init_globals(globals=self.variables_globales)
        for archivo in self.archivos_css:
            self.cargar_css(archivo_css=archivo)

    def agregar_card_fundamentos(self, columna):
        card_fundamentos = columna.container()
        card_fundamentos.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            ## Sobre el origen de la tecnología
            """)
        expander = card_fundamentos.expander(
            expanded=False,
            label="Aspectos básicos y fundamentales de la clasificación de imágenes."
        )
        expander.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            La **visión artificial** es un **campo interdisciplinario** que busca **emular la percepción visual humana** utilizando **sistemas computacionales**.
            
            La **clasificación de imágenes**, es una rama esencial de la **visión artificial**, se refiere a la **capacidad de las computadoras** para **identificar y categorizar** objetos y patrones en **imágenes visuales.** 
            """)
        imagen_intro1, imagen_intro2, imagen_intro3 = expander.columns(
            3, gap="small")
        src_imgI_1 = self.imgg.open("core/imagenes/shiba.png")
        src_imgI_2 = self.imgg.open("core/imagenes/shiba.png")
        src_imgI_3 = self.imgg.open("core/imagenes/shiba.png")
        imagen_intro1.image(
            src_imgI_1,
            use_column_width="auto"
        )
        imagen_intro2.image(
            src_imgI_2,
            use_column_width="auto"
        )
        imagen_intro3.image(
            src_imgI_3,
            use_column_width="auto"
        )
        expander.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            La **clasificación de imágenes** tuvo sus inicios en las **décadas de 1960 y 1970**, cuando los **investigadores** comenzaron a explorar **métodos** para la **detección** de bordes y formas elementales en **imágenes** [Roberts, 1973]. Fue en este **período** cuando se sentaron las **bases** para la **comprensión** computacional del **contenido visual**.

            Las **primeras aplicaciones** de la **clasificación de imágenes** se centraron en la **detección y reconocimiento** de patrones básicos en **imágenes**, con **aplicaciones** en campos como la **industria manufacturera** y la **inspección de calidad**.
            
            A lo largo de su **evolución**, la **clasificación de imágenes** por computadora ha experimentado **avances** notables.
            """)
        imagen_outro1, imagen_outro2 = expander.columns(2, gap="small")
        src_imgO_1 = self.imgg.open("core/imagenes/shiba.png")
        src_imgO_2 = self.imgg.open("core/imagenes/shiba.png")
        imagen_outro1.image(
            src_imgO_1,
            use_column_width="auto"
        )
        imagen_outro2.image(
            src_imgO_2,
            use_column_width="auto"
        )
        expander.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            Desde su **descubrimiento** en la década de **1960**, la introducción de **redes neuronales convolucionales** (CNN) en los **90's**, incluyendo la última década, marcada por la adopción de **modelos** pre-entrenados con **transformers**, como el **Vision Transformer** (ViT) en **2021** y el **Swin Transformer** en el mismo año, se ha presenciado una **transición significativa** en la **capacidad** de las **computadoras** para **comprender y categorizar contenido visual**, impulsando la **visión artificial** hacia nuevas fronteras de **eficiencia y precisión** en la **clasificación de imágenes**.
            """)
        card_fundamentos.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            ##### La **clasificación de imágenes**, esencial en **visión artificial**, implica que las **computadoras identifiquen objetos en imágenes.**
            """)

    def agregar_card_avances(self, columna):
        card_avances = columna.container()

        card_avances.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            ## Línea de tiempo.
            """)
        expander = card_avances.expander(
            expanded=False,
            label="Avances, desarrollos y aplicaciones a través de la historia."
        )
        expander.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            Desde la **década de 1960** hasta la **actualidad**, la **clasificación de imágenes** por **visión artificial** ha tenido **grandes avances**.
            
            A continuación puede **ver** de forma **interactiva** algunos de estos **avances**.
            """)
        a_inicio, a_fin = expander.select_slider(
            label='Seleccione un rango de fecha',
            options=[avance.get('fecha') for avance in self.avances],
            value=(self.avances[1].get('fecha'), self.avances[2].get('fecha')))
        expander.markdown(
            unsafe_allow_html=False,
            help=None,
            body=f"""
            ##### Algunos acontecimientos desde {a_inicio} hasta {a_fin} incluyen:
            """
        )
        for fecha in range(a_inicio, a_fin+1):
            for avance in self.avances:
                if fecha == avance.get('fecha'):
                    expander.markdown(
                        unsafe_allow_html=False,
                        help=None,
                        body=f"""
                        ###### **{avance.get('fecha')}** : *{avance.get('texto')}*
                        """
                    )
        card_avances.markdown(
            unsafe_allow_html=False,
            help=None,
            # Esto se logra mediante el entrenamiento de **algoritmos de aprendizaje profundo**, como las **redes neuronales convolucionales (CNN)** o modelos basados en **Transformers**. Estos algoritmos se entrenan utilizando un **amplio conjunto de datos** de imágenes etiquetadas, donde cada imagen tiene una **etiqueta que describe** su contenido (por ejemplo, "gato" o "árbol").
            # A continuación veremos cómo la librería Transformers utiliza el **modelo pre-entrenado Google/ViT**, entrenado con un conjunto de datos de más de 14 millones de imágenes, etiquetadas en más de 21,000 clases diferentes, todas con una resolución de 224x224.
            body="""
            ##### Desde sus **orígenes** hasta la **actualidad**, la **clasificación de imágenes** ha tenido **grandes avances** en el campo de la **automatización e inteligencia artificial**.
            
            """)

    def agregar_card_fuentes(self, columna):
        card_fuentes = columna.container()
        card_fuentes.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            ## Fuentes
            """)
        expander = card_fuentes.expander(
            expanded=False,
            label="Enlaces de referencia."
        )

        for fuente in self.fuentes:
            expander.markdown(
                unsafe_allow_html=False,
                help=None,
                body=f"""
                ###### * **{fuente.get('titulo')}:**

                *Enlace: {fuente.get('url')}*
                """
                )
        card_fuentes.markdown(
            unsafe_allow_html=False,
            help=None,
            body="""
            ###### Es **importante** mencionar que esta **compilación** se encuentra en proceso de **construcción**.
            
            *Si deseas **participar**, eres **bienvenido** de aportar en el repositorio oficial:*
            
            https://github.com/coder160/demos/
            """)

    def build(self):
        # secciones
        columna_principal = self.get_body().columns(1, gap="small")[0]
        
        self.agregar_card_fundamentos(columna_principal)
        self.agregar_card_avances(columna_principal)
        self.agregar_card_fuentes(columna_principal)


if __name__ == "__main__":
    Teoria(init_page=True).build()