Binary Neural Network in Robotic Manipulation: Flexible Object Manipulation for Humanoid Robot Using Partially Binarized Auto-Encoder on FPGA
Autori: Satoshi Ohara, Tetsuya Ogata, Hiromitsu Awano · IROS 2021
Licenze
- Open access
- Articolo: CC BY 4.0
Tutto ciò che segue si basa sull'articolo completo secondo la sua licenza CC BY 4.0; la figura è riportata citando gli autori.
In breve
Binarizzare solo l'encoder di un autoencoder convoluzionale permette a un modello end-to-end per piegare tessuti destinato a un umanoide di girare su una FPGA Zynq a 41,1 FPS e 3,1 W, con poca perdita di accuratezza.
Perché è importante
Le policy visuomotorie apprese di solito richiedono una GPU sul robot o vicino a esso; questo lavoro mostra un modello dalla telecamera agli angoli dei giunti per piegare tessuti che gira oltre la frequenza di fotogrammi della telecamera su una scheda embedded da 3,1 W. L'idea della binarizzazione parziale si applica a qualsiasi controllore autoencoder più RNN in cui il decoder serve solo in addestramento.
Problema
La manipolazione appresa end-to-end di oggetti flessibili come gli asciugamani si è basata su piattaforme GPU che assorbono centinaia di watt, che non possono essere alloggiate nel corpo di un robot dallo spazio limitato. Le FPGA sono efficienti dal punto di vista energetico ma hanno poca memoria on-chip, e binarizzare ingenuamente l'autoencoder delle immagini per ridurlo corrompe le caratteristiche estratte dalle immagini.
Soluzione proposta
Gli autori propongono un autoencoder convoluzionale profondo parzialmente binarizzato (PB-DCAE) in cui solo i pesi e le attivazioni dell'encoder sono binarizzati, mentre il decoder a piena precisione, usato solo in addestramento e poi rimosso, permette ai gradienti di propagarsi. L'encoder binarizzato gira sulla logica programmabile della FPGA di una Xilinx ZCU102 con aritmetica XNOR e popcount, con la batch normalization incorporata in soglie intere e tutti i parametri nella BRAM on-chip. Una LSTM che predice i successivi angoli dei giunti e il comando della pinza dalle caratteristiche delle immagini gira in virgola mobile sul processore ARM della scheda, addestrata con perdite combinate a più passi, a passo singolo e sullo stato interno.
Idee chiave
- Binarizzare completamente l'autoencoder blocca il flusso del gradiente e corrompe le caratteristiche (PSNR di 7,164 dB), ma mantenere a piena precisione solo il decoder, usato in addestramento, ripristina la qualità senza costi di memoria in inferenza.
- L'encoder delle immagini rappresenta il 99,94% delle moltiplicazioni per passo di inferenza, quindi accelerare solo esso sulla logica della FPGA velocizza l'intero sistema anche lasciando la LSTM sul core ARM.
- La LSTM è solo l'1,2% della dimensione del modello, per cui viene lasciata non quantizzata per preservarne l'accuratezza.
- La binarizzazione permette a tutti i parametri dell'encoder e alle mappe di caratteristiche di risiedere nella BRAM on-chip, evitando traffico verso la memoria esterna e riducendo latenza e consumo.
Risultati principali
- PSNR medio delle immagini ricostruite: 21,85 dB per il DCAE a piena precisione, 7,164 dB per il DCAE completamente binarizzato e 20,78 dB per il PB-DCAE.
- Errore di predizione degli angoli dei giunti a più passi: 2,98° con caratteristiche a piena precisione, 6,32° completamente binarizzato e 3,43° con PB-DCAE (un peggioramento di 0,45°).
- La dimensione del modello è scesa da 51,3 MB a 2,20 MB, una riduzione del 95,7%.
- ZCU102: 24,3 ms per passo, 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.
- L'efficienza energetica è migliorata di 10× rispetto alla CPU e di 3,7× rispetto alla GPU, restando al di sopra della frequenza di 30 FPS di una telecamera RGB commerciale.
Limiti
- La valutazione riporta l'errore di predizione a più passi ad anello aperto e la qualità di ricostruzione delle immagini su dimostrazioni tenute da parte; il successo della piegatura sul robot con la FPGA nel ciclo non è riportato.
- Il sistema FPGA è più lento in termini assoluti della GPU (41,1 FPS contro 248 FPS) e della CPU (73,0 FPS); il guadagno è nell'energia per fotogramma.
- Viene testato un solo compito (piegatura di tessuti con la pinza destra) su un solo robot, con 75 sequenze di dimostrazione.
- La LSTM è reimplementata in NumPy sul processore ARM e incide per 4,48 ms sui 24,3 ms del tempo per passo sulla ZCU102.
Impatto sul settore
L'articolo è stato finalista dell'IROS 2021 Best RoboCup Paper Award e ha 2 citazioni. Non indica un rilascio di codice o dati.
Abstract
Si propone un sistema di manipolazione di oggetti flessibili basato su reti neurali per un robot umanoide su FPGA. Sebbene la manipolazione di oggetti flessibili mediante robot attiri un'attenzione sempre maggiore, poiché questi compiti sono attività di base ed essenziali della nostra vita quotidiana, è stata messa in pratica solo di recente con l'aiuto delle reti neurali profonde. Tuttavia tali sistemi si sono basati su acceleratori GPU, che non possono essere implementati nel corpo robotico dallo spazio limitato. Sebbene i field programmable gate array (FPGA) siano noti per essere efficienti dal punto di vista energetico e adatti ai sistemi embedded, la dimensione del modello deve essere ridotta drasticamente, poiché le FPGA hanno una memoria on-chip limitata. A tal fine proponiamo una tecnica di autoencoder convoluzionale profondo binarizzato "parzialmente", in cui solo la parte di encoder è binarizzata per comprimere la dimensione del modello senza degradare l'accuratezza dell'inferenza. Il modello implementato su Xilinx ZCU102 raggiunge 41,1 fotogrammi al secondo con un consumo di potenza di 3,1 W, il che corrisponde a miglioramenti di 10× e 3,7× rispetto ai sistemi implementati rispettivamente su Core i7 6700K e RTX 2080 Ti.
Link
- 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