| Literature DB >> 35009890 |
Francisco de Melo1,2, Horácio C Neto2,3, Hugo Plácido da Silva1,2.
Abstract
Biometric identification systems are a fundamental building block of modern security. However, conventional biometric methods cannot easily cope with their intrinsic security liabilities, as they can be affected by environmental factors, can be easily "fooled" by artificial replicas, among other caveats. This has lead researchers to explore other modalities, in particular based on physiological signals. Electrocardiography (ECG) has seen a growing interest, and many ECG-enabled security identification devices have been proposed in recent years, as electrocardiography signals are, in particular, a very appealing solution for today's demanding security systems-mainly due to the intrinsic aliveness detection advantages. These Electrocardiography (ECG)-enabled devices often need to meet small size, low throughput, and power constraints (e.g., battery-powered), thus needing to be both resource and energy-efficient. However, to date little attention has been given to the computational performance, in particular targeting the deployment with edge processing in limited resource devices. As such, this work proposes an implementation of an Artificial Intelligence (AI)-enabled ECG-based identification embedded system, composed of a RISC-V based System-on-a-Chip (SoC). A Binary Convolutional Neural Network (BCNN) was implemented in our SoC's hardware accelerator that, when compared to a software implementation of a conventional, non-binarized, Convolutional Neural Network (CNN) version of our network, achieves a 176,270× speedup, arguably outperforming all the current state-of-the-art CNN-based ECG identification methods.Entities:
Keywords: binary neural networks; electrocardiography identification; system-on-a-chip
Mesh:
Year: 2022 PMID: 35009890 PMCID: PMC8749558 DOI: 10.3390/s22010348
Source DB: PubMed Journal: Sensors (Basel) ISSN: 1424-8220 Impact factor: 3.576
Properties of selected 32-bit RISC-V cores. Adapted from [10] and from own research.
| Name | Pipe Line Stages | Bus Arch | HDL | SIMD | Debug Support | License | Last Update | Cache |
|---|---|---|---|---|---|---|---|---|
| Freedom | 5 | TL/AXI | Chisel | N | Y | BSD | No more Support | Y |
| ORCA | 5 | WB AXI | VHDL | N | N | BSD | 2019 | Y |
| RI5CY | 4 | AXI | Verilog | Y | Y | Solder pad | 2021 | N |
| Zero-Riscy | 2 | AXI | Verilog | N | Y | Solder pad | 2018 | N |
| OPenV | 3 | AXI | Verilog | N | N | MIT | 2018 | N |
| VexRiscv | 5 | AXI | Spinal HDL | Y | Y | MIT | 2021 | Y |
| Roa Logic RV12 | 6 | AHB WB | Verilog | N | Y | Non | 2018 | Y |
| SCR1 | 4 | AXI | Verilog | N | Y | Solder pad | 2021 | N |
| Humming Birdv2 E200 | 2 | AXI | Verilog | N | Y | Apache | 2021 | Y |
| Shakti | 3 | AXI | Bluespec | N | N | BSD | 2019 | Y |
| ReonV | 7 | AHB | VHDL | N | Y | GPL v3 | 2018 | Y |
| Pico RV32 | 0 | AXI | Verilog | N | N | ISC | 2020 | N |
| SweRV EH1 | 9 | AXI | Verilog | N | Y | Apache | 2021 | Y |
| Taiga | 3 | AXI | Verilog | N | N | Apache | 2020 | Y |
| Potato | 5 | WB | VHDL | N | N | BSD | 2018 | Y |
| Flutte | 5 | AXI | Verilog | N | Y | Apache | 2021 | Y |
| Piccolo | 3 | AXI | Verilog | N | Y | Apache | 2021 | Y |
ECG-ID-BNet architecture. Extracted from [6].
| # Filters/Neurons | Input Fmaps | Output Fmaps | Max Pooling | |
|---|---|---|---|---|
|
| 128 |
|
| N |
|
| 64 |
|
| N |
|
| 128 |
|
| N |
|
| 64 |
|
| Y |
|
| 50 |
|
| N |
XC7A35T FPGA main specifications.
| LUTs | FFs | 36 kb BRAMs | DSP Slices |
|---|---|---|---|
| 33,280 | 41,600 | 50 | 90 |
ECG-ID-BNet memory usage summary.
| Input Fmaps (Bytes) | Output Fmaps (Bytes) | Parameters (Bytes) | |
|---|---|---|---|
|
| 180 | 2784 | 2048 (3.6%) |
|
| 2784 | 1344 | 7680 (13.4%) |
|
| 1344 | 2592 | 8192 (14.3%) |
|
| 2592 | 624 | 7680 (13.4%) |
|
| 624 | 200 | 31,600 (55.2%) |
Figure 1Weights reordering on a filter that expects 3 input channels and whose kernels have size 3.
Figure 2High-level workflow of the software.
IOb-SoC ECG-ID-BNet SRAM section memory size.
| Section | Memory Size (Bytes) |
|---|---|
| Firmware | 28,024 |
| Stack | Unknown |
| Model Parameters | 57,200 |
IOb-SoC ECG-ID-BNet SRAM address mapping.
| Section | Address Range |
|---|---|
| Firmware | 0x00000–0x06D78 |
| Stack | 0x06D79–0x0FFFF |
| Model Parameters | 0x10000–0x1FFFF |
Figure 3ECG-ID-BNet accelerator high-level architecture. The blue arrows represent the control signals, while the black arrows depict the datapath. denoted the number of operations each PE processes at a time and denote the number of processing elements.
Figure 4ECG-ID-BNet IP core execution flow.
ECG-ID-BNet memory usage per filter/neuron in each unit summary.
| # Filters/Neurons | Parameters (Bytes) | Filter/Neuron Memory Size (Bytes) | |
|---|---|---|---|
|
| 128 | 2048 (3.6%) | 16 |
|
| 64 | 7680 (13.4%) | 120 |
|
| 128 | 8192 (14.3%) | 64 |
|
| 64 | 7680 (13.4%) | 120 |
|
| 50 | 31,600 (55.2%) | 632 |
RAM configurations summary.
| # BRAMs | RAM Configuration ( | |
|---|---|---|
|
| 13 |
|
|
| 1 |
|
|
| 1 |
|
|
| 1/PE |
|
Number of executing sessions required to compute each ECG-ID-BNet layer, in function of .
| # Filters/Neurons | # Sessions Required | |
|---|---|---|
|
| 128 |
|
|
| 64 |
|
|
| 128 |
|
|
| 64 |
|
|
| 50 |
|
IOb-SoC with ECG-ID-BNet parameters and firmware pre-loaded FPGA resource utilization (relative to FPGA’s resources).
| LUTs | FFs | 36 kb BRAMs | DSP Slices |
|---|---|---|---|
|
|
|
|
|
Execution time of the ECG-ID-BNet IOb-SoC @ 100 MHz, software only implementation.
| Unit | No Optimization Execution Time (s) | O3 Optimization Execution Time (s) |
|---|---|---|
| Convolutional Unit 1 |
|
|
| Convolutional Unit 2 |
|
|
| Convolutional Unit 3 |
|
|
| Convolutional Unit 4 |
|
|
| Fully Connected Unit |
|
|
ECG-ID-BNet IP core FPGA resource utilization.
| LUTs | FFs | 36 kb BRAMs | |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Performance profiling of the ECG-ID-BNet inference in the proposed IP core @ 100 MHz compared with PicoRV32 @ 100 MHz (software only implementation, optimized with O3 level).
| Unit | PicoRV32 @ 100 MHz(s) | IP Core @ 100 MHz(μs) | Speedup |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Figure 5Simulation snapshot of the IP core @ 100 MHz showing the end of the computation of the last unit.