Implementación de una Red Siamesa en Keras y TensorFlow

Implementación de Red Siamesa en Keras y TensorFlow

Foto de Markus Spiske en Unsplash

Aprende las técnicas detrás de la detección de objetos (y mucho más) con código de ejemplo.

Las Redes Neuronales son excelentes y muy populares en los espacios de IA/ML, pero requieren demasiados datos para entrenar. Para tareas como la detección de objetos, la verificación de firmas, la verificación de voz y el reconocimiento de pastillas recetadas, las técnicas regulares de redes neuronales serían mucho más lentas y costosas debido a este exceso de requisitos de datos. En este tipo de trabajos, una red Siamesa puede ser muy poderosa porque requiere muchos menos datos que una red neuronal regular. Además, un conjunto de datos desequilibrado también puede funcionar bien.

Este tutorial te dará una visión general de alto nivel de una Red Siamesa y un ejemplo completo de cómo trabajar con ella. Trabajé con el conjunto de datos de fashion-mnist aquí, pero esta estructura similar es adecuada para muchos otros casos de uso.

¿Qué es una Red Siamesa?

Las redes Siamesas contienen una o más redes idénticas, y esas redes idénticas tienen los mismos parámetros y pesos. Si los pesos de una red se actualizan, los pesos de la otra red también se actualizan. Deben ser idénticos. La capa final suele ser una capa de incrustación que calcula la distancia entre las salidas.

Les proporcionas un par de entradas. Cada red calculará las características de las entradas y encontrará la similitud entre las dos entradas utilizando la distancia entre las dos imágenes. Por lo tanto, solo hay dos clases. Las imágenes son similares o diferentes.

El concepto será mucho más claro cuando trabajes en un ejemplo. Aprender haciendo siempre es la mejor idea.

Importaciones necesarias y definición de funciones

Empecemos con las importaciones necesarias. Importaremos más si es necesario.

import osimport tensorflow.keras.backend as Kimport matplotlib.pyplot as pltimport numpy as npimport tensorflow as tffrom tensorflow.keras.models import Modelfrom tensorflow.keras.layers import Inputfrom tensorflow.keras.layers import Conv2Dfrom tensorflow.keras.layers import Densefrom tensorflow.keras.layers import…