Subido por Alex Cervantes

Cervantes Fong Alex Informe02

Anuncio
Instituto Politécnico Nacional
Unidad Profesional interdisciplinaria de ingeniería Campus Tlaxcala
Procesamiento de Señales.
Informe 2: Convolución.
Alumno: Alex Eduardo Cervantes Fong.
Docente: Antonio Castillo
15 de abril de 2024.
1. Resumen
2. Introducción
3. Desarrollo
3.1.
Conmutatividad
3.1.1. Demostración conmutatividad
3.1.2. Ejemplo conmutatividad
3.2.
Asociatividad
3.2.1. Demostración asociatividad
3.2.2. Ejemplo
3.3.
Distributiva
3.3.1. Demostración distrivutividad
3.3.2. Ejemplo
3.4.
Matriz discreta
3.5.
Matriz convolucional
3.5.1. Ejemplo matriz convolucional
3.6.
Ejemplo Arduino
4. Conclusiones
5. Referencias
1. Resumen
En este informe, se explicaran las propiedades de la convolución discreta, como su
conmutatividad, asociatividad y distributividad, con la demostración matemática y un ejmplo
practico de cada una. Nos centraremos específicamente en la convolución discreta, donde la
convolución se aplica a datos discretos, además se profundizara sobre método donde se
emplea una matriz de convolución discreta para llegar al resultado de una convolución. Y
por último, observaremos un ejemplo de implementación en la plataforma Arduino,
demostrando cómo la convolución discreta se traduce en soluciones tangibles para problemas
del mundo real.
La convolución discreta es un concepto fundamental en el procesamiento de señales y el
aprendizaje automático, utilizado en una amplia gama de aplicaciones
En el contexto de las redes neuronales convolucionales, la convolución desempeña un papel
crucial en la extracción de características de datos complejos, lo que permite el aprendizaje
de representaciones significativas y la realización de tareas de clasificación y reconocimiento
con alta precisión.
Comprender los principios y técnicas de la convolución discreta es esencial para nosotros
estudiantes de inteligencia artificial, ya que nos capacita para diseñar, implementar y mejorar
modelos de CNNs y aplicarlos en diversos problemas del mundo real.
2. Introducción
La convolución discreta es una variante de la convolución que se aplica a señales discretas,
como secuencias numéricas o imágenes digitales. Se utiliza en una variedad de campos,
incluyendo el procesamiento de señales y la inteligencia artificial. Entre sus propiedades más
importantes se encuentran la conmutatividad, asociatividad y distributividad. La
conmutatividad significa que el orden en el que se convolucionan dos funciones no afecta el
resultado final, lo que proporciona flexibilidad en su aplicación. Por otro lado, la
asociatividad implica que la convolución de tres funciones puede realizarse en cualquier
orden sin cambiar el resultado. Además, la distributividad establece que la convolución
distribuye sobre la suma, lo que facilita el tratamiento de señales compuestas por múltiples
componentes.
En este contexto, la convolución se realiza mediante la superposición y multiplicación de una
función (kernel) sobre la señal de entrada, seguida de la suma de los productos resultantes.
Para realizar la convolución discreta en una computadora, se utiliza una matriz de
convolución discreta, que contiene los coeficientes del kernel. Un ejemplo discreto en
Arduino podría ser la aplicación de un filtro de media móvil a una serie temporal de datos
sensoriales para suavizar el ruido y extraer tendencias.
El objetivo de este informe es poder comprender la convolución discreta, características,
propiedades, maneras de resolverla e implementaciones, centrándose en su importancia en el
procesamiento de señales y su aplicación en redes neuronales convolucionales (CNNs), un
componente fundamental en el campo de la inteligencia artificial. A través de una explicación
y ejemplos prácticos, este informe técnico nos ayudara a comprender y aplicar la convolución
de manera efectiva y posteriormente aplicarlo en nuestra área de IA donde se necesite
entrenamiento de modelos de aprendizaje automático.
3. Desarrollo
3.1.
Conmutatividad
La propiedad de conmutatividad establece que el orden en el que se convolucionan dos
funciones no altera el resultado final. Matemáticamente, esto se expresa como: 𝑓 (𝑡) ∗ 𝑔(𝑡) =
𝑔(𝑡) ∗ 𝑓 (𝑡). Donde 𝑓 𝑦 𝑔 son las funciones que se están convolucionando. Esta propiedad es
fundamental en el análisis de sistemas lineales, donde la entrada y la respuesta del sistema
pueden intercambiarse sin afectar el resultado.
3.1.1. Demostración:
∞
(𝑓1 ∗ 𝑓2 ) [𝑛] =
∑ 𝑓1 [𝑘1 ]𝑓2[𝑛 − 𝑘1 ]
𝑘1 =−∞
∞
∑ 𝑓1[𝑛 − 𝑘2 ] 𝑓2 [𝑘2 ]
=
𝑘1 =−∞
= (𝑓2 ∗ 𝑓1 ) [𝑛]
3.1.2. Ejemplo:
% Definimos las tres secuencias discretas
f1 = [1 2 3 4 5];
f2 = [0 1 0.5 0.25];
% Calculamos las convoluciones individuales
conv_f1_f2 = conv(f1, f2); % (f1 * f2)
conv_f2_f1 = conv(f2, f1); % (f2 * f1)
% Los resultados con los siguientes
disp(conv_f1_f2)
disp(conv_f2_f1)
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| 0 | 1.0000 | 2.5000 | 4.2500 | 6.0000 | 7.7500 | 3.5000 | 5.5000 | 1.2500 |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| 0 | 1.0000 | 2.5000 | 4.2500 | 6.0000 | 7.7500 | 3.5000 | 5.5000 | 1.2500 |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+
Así que podemos comprobar que la propiedad conmutativa se cumple en la convolución
3.2.
Asociatividad
La propiedad de asociatividad implica que el agrupamiento de las funciones a convolucional
no afecta el resultado final. Es decir, para tres funciones 𝑓, 𝑔 𝑦 ℎ la convolución 𝑓 (𝑡) ∗
(𝑔(𝑡) ∗ ℎ(𝑡)) = (𝑓(𝑡) ∗ 𝑔(𝑡)) ∗ ℎ(𝑡) . Esta propiedad es esencial en la simplificación de
operaciones complejas y facilita el análisis de sistemas con múltiples etapas de
procesamiento.
3.2.1. Demostración:
∞
(𝑓1 ∗ (𝑓2 ∗ 𝑓3 ))[𝑛] = ∑
∞
∑ 𝑓1 [𝑘1 ] 𝑓2 [𝑘2 ]𝑓3 ((𝑛 − 𝑘1 ) − 𝑘2 )
𝑘1 =−∞ 𝑘2 =−∞
∞
∞
∑ 𝑓1 [𝑘1] 𝑓2 (( 𝑘1 − 𝑘2 ) − 𝑘1 ) 𝑓3 [𝑛 − (𝑘1 + 𝑘2 )]
= ∑
𝑘1 =−∞ 𝑘2 =−∞
∞
= ∑
∞
∑ 𝑓1 [𝑘1] 𝑓2 [ 𝑘2 − 𝑘1 ] 𝑓3 [𝑛 − (𝑘1 + 𝑘2 )]
𝑘1 =−∞ 𝑘2 =−∞
= ((𝑓1 ∗ 𝑓2 ) ∗ 𝑓3 ) [𝑛]
3.2.2
Ejemplo:
% Definimos las tres secuencias discretas
f1 = [1 2 3 4 5];
f2 = [0 1 0.5 0.25];
f3 = [1 -1 1];
% Calculamos las convoluciones individuales
conv_f2_f3 = conv(f2, f3); % Convolución de f2 y f3
conv_f1_f2 = conv(f1, f2); % Convolución de f1 y f2
% Calculamos la convolución asociada de f1 * (f2 * f3)
conv_associative1 = conv(f1, conv_f2_f3);
% Calculamos la convolución asociada de (f1 * f2) * f3
conv_associative2 = conv(conv_f1_f2, f3);
% Los resultados con los siguientes
disp(conv_associative1)
disp(conv_associative2)
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| 0 | 1.0000 | 1.5000 | 2.7500 | 4.2500 | 6.0000 | 1.7500 | 5.5000 | 2.2500 | 1.2500 |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
| 0 | 1.0000 | 1.5000 | 2.7500 | 4.2500 | 6.0000 | 1.7500 | 5.5000 | 2.2500 | 1.2500 |
+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
Así que podemos comprobar que la propiedad asociativa se cumple en la convolución
3.3 Distributividad
La convolución exhibe la propiedad de distributividad con respecto a la suma de funciones.
Esto significa que la convolución de una función 𝑓 con la suma de dos funciones 𝑔 𝑦 ℎ es
igual a la suma de las convoluciones de 𝑔 con 𝑓 𝑦 𝑔 con ℎ . Matemáticamente, esto se
expresa como 𝑓 ∗ (𝑔 + ℎ) = 𝑓 ∗ 𝑔 + 𝑓 ∗ ℎ. Esta propiedad es fundamental en el diseño de
sistemas de filtrado, donde múltiples filtros se aplican a una señal de entrada.
3.3.1
Demostración:
∞
(𝑓1 ∗ (𝑓2 + 𝑓3 ))[𝑛] = ∑ 𝑓1 (𝑘 ) (𝑓2 (𝑛 − 𝑘 ) + 𝑓3 (𝑛 − 𝑘))
𝑘=−∞
∞
∞
= ∑ 𝑓1 (𝑘 ) 𝑓2 (𝑛 − 𝑘 ) + 𝑓3 (𝑛 − 𝑘)) + ∑ 𝑓1 (𝑘 ) 𝑓3 (𝑛 − 𝑘 )
𝑘=−∞
𝑘=−∞
= (𝑓1 ∗ 𝑓2 + 𝑓1 ∗ 𝑓3 )[𝑛]
3.3.2
Ejemplo:
% Definimos las secuencias discretas
f1 = [1, 2, 3, 4];
f2 = [0, 1, 0.5, 0.25];
f3 = [1, -1, 1, 0];
% Calculamos las convoluciones individuales
conv_f2 = conv(f1, f2);
conv_f3 = conv(f1, f3);
% Calculamos la parte izquierda de la ecuación distributiva
conv_left = conv(f1, f2 + f3);
% Calculamos la parte derecha de la ecuación distributiva
conv_right = conv_f2 + conv_f3;
% Los resultados con los siguientes
disp(conv_left)
disp(conv_right)
+--------+--------+--------+--------+--------+--------+--------+
| 1.0000 | 2.0000 | 4.5000 | 7.2500 | 5.0000 | 6.7500 | 1.0000 |
+--------+--------+--------+--------+--------+--------+--------+
| 1.0000 | 2.0000 | 4.5000 | 7.2500 | 5.0000 | 6.7500 | 1.0000 |
+--------+--------+--------+--------+--------+--------+--------+
Así que podemos comprobar que la propiedad distributiva se cumple en la convolución
3.4.
Convolución discreta
La convolución discreta es una operación matemática utilizada para combinar dos señales
discretas, también conocidas como funciones discretas o secuencias, para producir una
tercera señal discreta que describe cómo una de las señales afecta a la otra a medida que una
se desplaza a lo largo del tiempo o del espacio.
∞
𝑓1 (𝑡) ∗ 𝑓2 (𝑡) = ∑ 𝑓1 (𝑘 ) + 𝑓2 (𝑛 − 𝑘)
𝑘=−∞
Aquí, para cada valor de n, multiplicamos cada elemento de 𝑓1 por el correspondiente
elemento 𝑓2 , pero desplazado en 𝑛, y luego sumamos los resultados. Esto se hace para todos
los valores posibles de 𝑘, lo que implica una combinación de todas las posibles formas en
que las dos secuencias pueden superponerse.
Una característica importante de la convolución discreta es que puede ser implementada
eficientemente utilizando técnicas como la convolución lineal o la convolución circular,
dependiendo del contexto y los requisitos específicos del problema.
3.5.
Matriz de convolución discreta
La matriz de convolución discreta, también conocida como matriz de Toeplitz, se utiliza en
el contexto de la convolución discreta entre dos funciones discretas. Si que tenemos una
función discreta 𝑥 de 𝑚 elementos y un sistema discreto ℎ de 𝑛 elementos. Si 𝑦 es la
convolución de ambos, que tiene 𝑚 + 𝑛 − 1 elementos, entonces podemos definir una matriz
𝐴, la matriz de convolución, tal que 𝑦 = 𝑥𝐴. Es
Esta matriz 𝐴 es una matriz de Toeplitz, lo que significa que sus elementos en cada diagonal
son iguales. La forma de la matriz de Toeplitz está determinada por los coeficientes del
sistema discreto ℎ. Los elementos de la primera fila de la matriz 𝐴 corresponden a los
coeficientes de ℎ , seguidos de ceros. Los elementos de las filas subsiguientes están
desplazados, replicando los elementos de la primera fila.
La matriz de Toeplitz 𝐴 es muy útil como nos podremos imaginar, debido a que en vez de
realizar todas las operaciones que conlleva la convolución la matriz nos Toeplitz permite
calcular la convolución 𝑦 únicamente multiplicando la matriz 𝐴 por el vector 𝑥 . Esto
simplifica el cálculo y proporciona una representación matricial compacta de la operación de
convolución.
3.5.1
Ejemplo: Matriz convolucional
Funciones discretas
𝑥 = [3, 4, 5, 6];
ℎ = [1, 2, 3];
Matriz Toeplitz
1
0
𝐴= [
0
0
2
1
0
0
3
2
1
0
0
3
2
1
0
0
3
2
0
0
]
0
3
Multipliación matricial (𝑥 ∙ 𝐴)
1∗3
0∗4
𝑥𝐴 = [
0∗5
0∗6
2∗3
1∗4
0∗5
0∗6
3
0
𝑥𝐴 = [
0
0
9
8
5
0
6
4
0
0
3∗3
2∗4
1∗5
0∗6
0
0
12 0
10 15
6 12
0∗3
3∗4
2∗5
1∗6
0∗3
0∗4
3∗5
2∗6
0∗3
0∗4
]
0∗5
3∗6
0
0
]
0
18
Vector resultante
(ℎ ∗ 𝑥) = 𝑥 ∙ 𝐴 = [3 10
22 28
27 18]
3.6.
Ejemplo discreto Arduino:
Filtro de media móvil para suavizar la señal del sensor
Este filtro es un ejemplo de convolución discreta donde la entrada es la señal del sensor y el
kernel es una serie de unos divididos por el número de puntos en el kernel (en este caso, la
ventana del filtro).
Este filtro suaviza las fluctuaciones rápidas en la señal de entrada al promediarlas con valores
anteriores, reduciendo así el ruido y las variaciones abruptas en la lectura del sensor.
const int numReadings = 10; // Número de lecturas para suavizar
int readings[numReadings];
// Array para almacenar las lecturas
int readIndex = 0;
// Índice de la lectura actual
int total = 0;
// Suma total de las lecturas
int average = 0;
// Promedio
void setup() {
Serial.begin(9600);
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
}
void loop() {
// Resta la última lectura:
total = total - readings[readIndex];
// Lee del sensor:
readings[readIndex] = analogRead(sensorPin);
// Añade la lectura al total:
total = total + readings[readIndex];
// Avanza al siguiente índice de posición:
readIndex = readIndex + 1;
// Si estamos al final del array, vuelve al principio:
if (readIndex >= numReadings) {
readIndex = 0;
}
// Calcula el promedio:
average = total / numReadings;
// Envía el promedio al ordenador
Serial.println(average);
delay(1); // Retardo entre lecturas para estabilidad
}
4. Conclusiones
La convolución discreta, un concepto esencial en el ámbito del procesamiento de señales y
la visión por computadora, se destaca por su capacidad para analizar y transformar datos de
manera eficiente. Al profundizar en un informe técnico que explora sus propiedades, es
crucial comprender no solo su definición y aplicación, sino también las bases matemáticas
que subyacen a su funcionamiento. A través de demostraciones matemáticas rigurosas, se
puede apreciar la lógica detrás de la convolución discreta y cómo interactúa con diferentes
tipos de señales y sistemas.
E el informe técnico también puede incluir ejemplos prácticos que ilustren la aplicación de
la convolución discreta en el mundo real. Un ejemplo común es la aplicación de la matriz de
convolución para realizar operaciones de filtrado en imágenes digitales. Este proceso implica
deslizar una matriz de pesos sobre la imagen original para resaltar características específicas
o suavizar la imagen.
En conclusión, el informe técnico sobre la convolución discreta no solo proporciona una
comprensión profunda de sus propiedades matemáticas, sino que también demuestra su
aplicación práctica en una variedad de contextos, desde el procesamiento de imágenes hasta
la ingeniería de señales. Esta herramienta versátil y poderosa es fundamental en numerosas
áreas técnicas y sigue siendo objeto de investigación y desarrollo continuo en la ciencia y la
tecnología contemporáneas.
5. Referencias
Libretexts. (2022b, noviembre 1). 4.3: Convolución de tiempo discreta. LibreTexts
Español.https://espanol.libretexts.org/Ingenieria/Se%C3%B1ales_y_Sistemas_(Bara
niuk_et_al.)/04%3A_An%C3%A1lisis_de_dominio_de_tiempo_de_sistemas_discre
tos_de_tiempo/4.03%3A_Convoluci%C3%B3n_de_Tiempo_Discreta
Santos, M. D. (2023b, noviembre 10). ¿Qué es la convolución de señales y cómo funciona?
- Polaridad.es. Polaridad.es. https://polaridad.es/que-es-convolucion-desenales/?expand_article=1
Colaboradores de Wikipedia. (2023c, marzo 12). Convolución. Wikipedia, la Enciclopedia
Libre. https://es.wikipedia.org/wiki/Convoluci%C3%B3n
Team, D. S. (2020b, abril 1). Convolución. DATA SCIENCE.
https://datascience.eu/es/matematica-y-estadistica/convolucion/
Descargar