Open Source Robotics

Una colección curada de proyectos, herramientas y software de robótica de código abierto de alta calidad.

Binary Neural Network in Robotic Manipulation: Flexible Object Manipulation for Humanoid Robot Using Partially Binarized Auto-Encoder on FPGA

Autores: Satoshi Ohara, Tetsuya Ogata, Hiromitsu Awano · IROS 2021

Licencias

  • Acceso abierto
  • Artículo: CC BY 4.0

Todo lo que sigue se basa en el artículo completo bajo su licencia CC BY 4.0; su figura se muestra con crédito a los autores.

En resumen

Binarizar solo el codificador de un autocodificador convolucional permite que un modelo de extremo a extremo de plegado de ropa para un humanoide funcione en una FPGA Zynq a 41,1 FPS y 3,1 W, con poca pérdida de precisión.

Por qué importa

Las políticas visuomotoras aprendidas suelen necesitar una GPU en el robot o cerca de él; este trabajo muestra un modelo de cámara a ángulos articulares para plegar ropa que funciona por encima de la frecuencia de imagen de la cámara en una placa embebida de 3,1 W. La idea de la binarización parcial se aplica a cualquier controlador de autocodificador más RNN en el que el decodificador solo se necesite durante el entrenamiento.

Problema

La manipulación aprendida de extremo a extremo de objetos flexibles como toallas ha dependido de plataformas GPU que consumen cientos de vatios, que no caben en el espacio limitado del cuerpo de un robot. Las FPGA son eficientes energéticamente, pero tienen poca memoria en chip, y binarizar ingenuamente el autocodificador de imagen para reducirlo corrompe las características de imagen extraídas.

Solución propuesta

Los autores proponen un autocodificador convolucional profundo parcialmente binarizado (PB-DCAE) en el que solo se binarizan los pesos y las activaciones del codificador, mientras que el decodificador de precisión completa, usado solo en el entrenamiento y retirado después, permite que los gradientes se propaguen. El codificador binarizado se ejecuta en la lógica programable de la FPGA de una Xilinx ZCU102 con aritmética XNOR y popcount, con la normalización por lotes integrada en umbrales enteros y todos los parámetros en la BRAM del chip. Una LSTM que predice los siguientes ángulos articulares y la orden de la pinza a partir de las características de imagen se ejecuta en coma flotante en el procesador ARM de la placa, entrenada con pérdidas combinadas de varios pasos, de un paso y de estado interno.

Ideas clave

  • Binarizar por completo el autocodificador bloquea el flujo del gradiente y corrompe las características (PSNR de 7,164 dB), pero mantener en precisión completa solo el decodificador, que se usa durante el entrenamiento, restablece la calidad sin coste de memoria en la inferencia.
  • El codificador de imagen supone el 99,94 % de las multiplicaciones por paso de inferencia, por lo que acelerar solo esa parte en la lógica de la FPGA acelera todo el sistema aunque la LSTM se quede en el núcleo ARM.
  • La LSTM es solo el 1,2 % del tamaño del modelo, por lo que se deja sin cuantizar para conservar su precisión.
  • La binarización permite que todos los parámetros del codificador y los mapas de características quepan en la BRAM del chip, lo que evita el tráfico con memoria externa y reduce la latencia y el consumo.

Resultados principales

  • PSNR medio de las imágenes reconstruidas: 21,85 dB para el DCAE de precisión completa, 7,164 dB para el DCAE totalmente binarizado y 20,78 dB para el PB-DCAE.
  • Error de predicción de ángulos articulares a varios pasos: 2,98° con características de precisión completa, 6,32° totalmente binarizado y 3,43° con PB-DCAE (una degradación de 0,45°).
  • El tamaño del modelo bajó de 51,3 MB a 2,20 MB, una reducción del 95,7 %.
  • ZCU102: 24,3 ms por paso, 41,1 FPS a 3,1 W, 13,3 FPS/W; Core i7 6700K: 73,0 FPS a 55,4 W, 1,32 FPS/W; RTX 2080 Ti: 248 FPS a 69 W, 3,59 FPS/W.
  • La eficiencia energética mejoró 10× respecto a la CPU y 3,7× respecto a la GPU, manteniéndose por encima de la frecuencia de imagen de 30 FPS de una cámara RGB comercial.

Limitaciones

  • La evaluación informa del error de predicción a varios pasos en lazo abierto y de la calidad de reconstrucción de imagen en demostraciones reservadas; no se informa del éxito del plegado en el robot con la FPGA en el bucle.
  • El sistema FPGA es más lento en términos absolutos que la GPU (41,1 FPS frente a 248 FPS) y la CPU (73,0 FPS); la ganancia está en la energía por fotograma.
  • Solo se prueba una tarea (plegado de ropa con la pinza derecha) en un robot, con 75 secuencias de demostración.
  • La LSTM se reimplementa en NumPy en el procesador ARM y supone 4,48 ms de los 24,3 ms del tiempo por paso en la ZCU102.

Impacto en el campo

El artículo fue finalista del IROS 2021 Best RoboCup Paper Award y tiene 2 citas. No indica que se hayan publicado código ni datos.

Resumen

Se propone un sistema de manipulación de objetos flexibles basado en redes neuronales para un robot humanoide sobre FPGA. Aunque la manipulación de objetos flexibles mediante robots atrae una atención cada vez mayor, ya que estas tareas son actividades básicas y esenciales de nuestra vida diaria, solo recientemente se ha llevado a la práctica con la ayuda de redes neuronales profundas. Sin embargo, estos sistemas han dependido de aceleradores GPU, que no pueden implementarse en el espacio limitado del cuerpo robótico. Aunque se sabe que las matrices de puertas programables en campo (FPGA) son eficientes energéticamente y adecuadas para sistemas embebidos, el tamaño del modelo debe reducirse drásticamente, ya que las FPGA tienen una memoria en chip limitada. Con este fin, proponemos una técnica de autocodificador convolucional profundo binarizado «parcialmente», en la que solo se binariza la parte del codificador para comprimir el tamaño del modelo sin degradar la precisión de la inferencia. El modelo implementado en una Xilinx ZCU102 alcanza 41,1 fotogramas por segundo con un consumo de potencia de 3,1 W, lo que corresponde a mejoras de 10× y 3,7× respecto a los sistemas implementados en un Core i7 6700K y una RTX 2080 Ti, respectivamente.

Enlaces

  • arXiv 2107.00209: https://arxiv.org/abs/2107.00209
  • DOI 10.1109/IROS51168.2021.9636825: https://doi.org/10.1109/IROS51168.2021.9636825
  • PDF: https://arxiv.org/pdf/2107.00209v1

Este sitio web requiere JavaScript. Por favor, habilite JavaScript para explorar nuestros proyectos de robótica.