--- tags: - image-classification - pytorch - huggingpics metrics: - accuracy model-index: - name: nintendo-controllers-model-opt3 results: - task: name: Image Classification type: image-classification metrics: - name: Accuracy type: accuracy value: 0.5333333611488342 --- # nintendo-controllers-model-opt3 Modelo de clasificacion de imagenes con Python. Las predicciones que se obtienen se realizan a traves de un modelo de aprendizaje profundo llamado transformador de visión (ViT) el cual es capaz de discernir entre un control de Xbox y un control de Playstation. En un ViT, la imagen de entrada se "corta" en subimágenes de igual tamaño y cada una de esas subimágenes pasa por una insercion lineal lo que hace que cada subimagen sea sólo un vector unidimensional. Despues se le agrega una insercion posicional a cada uno de estos vectores lo cual permite a la red saber dónde se encuentra cada subimagen originalmente en la imagen. Estos vectores se transmiten, junto con un vector de clasificación especial, a los bloques codificadores transformadores, cada uno de los cuales se compone de : Una Normalización de Capas (LN), una Autoatención Multicabezal (MSA),una conexión residual, una segunda LN, un Perceptrón Multicapa (MLP) y otra conexión residual, los cuales se conectan uno detrás de otro. Por último, se utiliza un bloque MLP de clasificación para la clasificación final sólo en el vector de clasificación especial, que al final de todo el proceso, es el que tiene toda la informacion global de la imagen. La data que se usa de entrada al modelo es obtenida atraves de una API de buscador de imagenes que las descarga y almacena desde la web, de la cual se recolectan ~150 imagenes por clase. Una vez obtenida las imagenes, se dividen entre un 75% y 15% para usar como entrenamiento y validacion respectivamente. Para validar la data recolectada, se hace un pequeño muestreo al azar de las imagenes para confirma que las imagenes que consiguio la API, en su mayoria sean igual a lo que se introdujo como busqueda (microsoft xbox controller y sony playstation controller). Una vez etiquetada y mapeada la data, se preparan ejemplos en batches, los cuales seran alimentados de forma aleatorea a un modelo ViT ya preentrenado por usando el conjunto de datos ImageNet-21k. El modelo consta de metodos de entrenamiento, validacion y optimizacion usando PyTorch, en este caso se uso atom como optimizador. Una vez validadas las predicciones con las etiquetas de las imagenes, se obtuvo un modelo capaz de discernir entre una control de playstation y un control de xbox con una precision de >53%. ## Imagenes de ejemplo #### microsoft xbox controller ![microsoft xbox controller](images/microsoft_xbox_controller.jpg) #### sony playstation controller ![sony playstation controller](images/sony_playstation_controller.jpg)