Binary Neural Network in Robotic Manipulation: Flexible Object Manipulation for Humanoid Robot Using Partially Binarized Auto-Encoder on FPGA
Autoren: Satoshi Ohara, Tetsuya Ogata, Hiromitsu Awano · IROS 2021
Lizenzen
- Open Access
- Paper: CC BY 4.0
Alles Folgende stützt sich auf das vollständige Paper unter seiner Lizenz CC BY 4.0; die Abbildung wird mit Nennung der Autoren gezeigt.
Kurz gesagt
Wird nur der Encoder eines Convolutional Autoencoders binarisiert, läuft ein End-to-End-Modell zum Stofffalten für einen Humanoiden auf einem Zynq-FPGA mit 41,1 FPS und 3,1 W bei geringem Genauigkeitsverlust.
Warum es wichtig ist
Gelernte visuomotorische Policies brauchen meist eine GPU am oder nahe beim Roboter; diese Arbeit zeigt ein Modell von Kamerabild zu Gelenkwinkeln für das Stofffalten, das auf einer eingebetteten 3,1-W-Platine schneller als die Bildrate der Kamera läuft. Die Idee der teilweisen Binarisierung lässt sich auf jeden Autoencoder-plus-RNN-Regler anwenden, bei dem der Decoder nur im Training gebraucht wird.
Problem
Die End-to-End gelernte Manipulation flexibler Objekte wie Handtücher stützte sich auf GPU-Plattformen mit Hunderten Watt Leistungsaufnahme, die sich nicht in einen räumlich begrenzten Roboterkörper einbauen lassen. FPGAs sind energieeffizient, haben aber wenig On-Chip-Speicher, und eine naive Binarisierung des Bild-Autoencoders zur Verkleinerung verfälscht die extrahierten Bildmerkmale.
Lösungsansatz
Die Autoren schlagen einen teilweise binarisierten tiefen Convolutional Autoencoder (PB-DCAE) vor, bei dem nur die Gewichte und Aktivierungen des Encoders binarisiert werden, während der Decoder in voller Genauigkeit, der nur im Training genutzt und danach entfernt wird, die Gradienten weiterleitet. Der binarisierte Encoder läuft in der programmierbaren FPGA-Logik eines Xilinx ZCU102 mit XNOR- und Popcount-Arithmetik, wobei die Batch-Normalisierung in ganzzahlige Schwellwerte eingefaltet ist und alle Parameter im On-Chip-BRAM liegen. Ein LSTM, das aus den Bildmerkmalen die nächsten Gelenkwinkel und den Greiferbefehl vorhersagt, läuft in Gleitkomma auf dem ARM-Prozessor der Platine und wird mit kombinierten Mehrschritt-, Einzelschritt- und Innenzustandsverlusten trainiert.
Wichtigste Erkenntnisse
- Die vollständige Binarisierung des Autoencoders blockiert den Gradientenfluss und verfälscht die Merkmale (PSNR 7,164 dB), doch wenn nur der im Training genutzte Decoder in voller Genauigkeit bleibt, wird die Qualität ohne zusätzlichen Speicherbedarf bei der Inferenz wiederhergestellt.
- Der Bild-Encoder macht 99,94 % der Multiplikationen pro Inferenzschritt aus, sodass die Beschleunigung allein des Encoders in der FPGA-Logik das ganze System schneller macht, selbst wenn das LSTM auf dem ARM-Kern bleibt.
- Das LSTM macht nur 1,2 % der Modellgröße aus und wird daher nicht quantisiert, um seine Genauigkeit zu erhalten.
- Durch die Binarisierung passen alle Encoder-Parameter und Feature-Maps in den On-Chip-BRAM, was externen Speicherverkehr vermeidet und Latenz und Leistungsaufnahme senkt.
Hauptergebnisse
- Mittlere PSNR der rekonstruierten Bilder: 21,85 dB für den DCAE in voller Genauigkeit, 7,164 dB für den vollständig binarisierten DCAE und 20,78 dB für PB-DCAE.
- Fehler der Mehrschritt-Vorhersage der Gelenkwinkel: 2,98° mit Merkmalen in voller Genauigkeit, 6,32° vollständig binarisiert und 3,43° mit PB-DCAE (eine Verschlechterung um 0,45°).
- Die Modellgröße sank von 51,3 MB auf 2,20 MB, eine Reduktion um 95,7 %.
- ZCU102: 24,3 ms pro Schritt, 41,1 FPS bei 3,1 W, 13,3 FPS/W; Core i7 6700K: 73,0 FPS bei 55,4 W, 1,32 FPS/W; RTX 2080 Ti: 248 FPS bei 69 W, 3,59 FPS/W.
- Die Energieeffizienz verbesserte sich um das 10-Fache gegenüber der CPU und das 3,7-Fache gegenüber der GPU, bei weiterhin mehr als der Bildrate von 30 FPS einer handelsüblichen RGB-Kamera.
Einschränkungen
- Die Evaluation berichtet den Mehrschritt-Vorhersagefehler im offenen Regelkreis und die Qualität der Bildrekonstruktion auf zurückgehaltenen Demonstrationen; der Falterfolg auf dem Roboter mit dem FPGA im Regelkreis wird nicht berichtet.
- Das FPGA-System ist absolut gesehen langsamer als die GPU (41,1 FPS gegenüber 248 FPS) und die CPU (73,0 FPS); der Gewinn liegt in der Energie pro Bild.
- Getestet wird nur eine Aufgabe (Stofffalten mit dem rechten Greifer) auf einem Roboter, mit 75 Demonstrationssequenzen.
- Das LSTM ist in NumPy auf dem ARM-Prozessor neu implementiert und beansprucht 4,48 ms der 24,3 ms Schrittzeit auf dem ZCU102.
Wirkung auf das Fachgebiet
Die Arbeit war Finalistin für den IROS 2021 Best RoboCup Paper Award und hat 2 Zitierungen. Eine Veröffentlichung von Code oder Daten wird nicht angegeben.
Zusammenfassung
Vorgeschlagen wird ein auf neuronalen Netzen basierendes System zur Manipulation flexibler Objekte für einen humanoiden Roboter auf einem FPGA. Obwohl die Manipulation flexibler Objekte mit Robotern immer mehr Aufmerksamkeit erhält, da diese Aufgaben grundlegende und wesentliche Tätigkeiten unseres Alltags sind, wurde sie erst in jüngster Zeit mithilfe tiefer neuronaler Netze in die Praxis umgesetzt. Solche Systeme waren jedoch auf GPU-Beschleuniger angewiesen, die sich nicht in den räumlich begrenzten Roboterkörper einbauen lassen. Obwohl Field Programmable Gate Arrays (FPGAs) als energieeffizient und für eingebettete Systeme geeignet gelten, muss die Modellgröße drastisch reduziert werden, da FPGAs nur begrenzten On-Chip-Speicher haben. Zu diesem Zweck schlagen wir eine Technik eines „teilweise“ binarisierten tiefen Convolutional Autoencoders vor, bei der nur der Encoder-Teil binarisiert wird, um die Modellgröße zu komprimieren, ohne die Inferenzgenauigkeit zu verschlechtern. Das auf einem Xilinx ZCU102 implementierte Modell erreicht 41,1 Bilder pro Sekunde bei einer Leistungsaufnahme von 3,1 W, was Verbesserungen um das 10-Fache bzw. 3,7-Fache gegenüber den auf Core i7 6700K und RTX 2080 Ti implementierten Systemen entspricht.
Links
- 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