All Projects → jonnor → ESC-CNN-microcontroller

jonnor / ESC-CNN-microcontroller

Licence: other
Environmental Sound Classification on Microcontrollers using Convolutional Neural Networks

Programming Languages

Jupyter Notebook
11667 projects
c
50402 projects - #5 most used programming language
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to ESC-CNN-microcontroller

libavrutil
Easy to use, lightweight and unified library for performing common microcontroller tasks
Stars: ✭ 21 (-75.29%)
Mutual labels:  microcontroller, embedded-devices
stm32f103xx
DEPRECATED
Stars: ✭ 31 (-63.53%)
Mutual labels:  microcontroller
Cwebsocket
cWebsocket is lightweight websocket server library
Stars: ✭ 241 (+183.53%)
Mutual labels:  microcontroller
arduivis
a bi-directional communication paradigm for programming languages & microcontrollers
Stars: ✭ 48 (-43.53%)
Mutual labels:  microcontroller
Real Time Cpp
Real-Time C++ Companion Code
Stars: ✭ 242 (+184.71%)
Mutual labels:  microcontroller
reed-thesis
My undergradate thesis on coinductive types in univalent type theory
Stars: ✭ 14 (-83.53%)
Mutual labels:  thesis
Berry
A ultra-lightweight embedded scripting language optimized for microcontrollers.
Stars: ✭ 206 (+142.35%)
Mutual labels:  microcontroller
Light-Propagation-Volumes
Implementation of Crytek's Light Propagation Volumes algorithm in WebGL
Stars: ✭ 47 (-44.71%)
Mutual labels:  thesis
MTF
Modular Tracking Framework
Stars: ✭ 99 (+16.47%)
Mutual labels:  thesis
projects
A website that showcases interesting projects, using Angular JS.
Stars: ✭ 106 (+24.71%)
Mutual labels:  thesis
SJTU-thesis-template
上海交通大学研究生学位论文模板
Stars: ✭ 32 (-62.35%)
Mutual labels:  master-thesis
Talks
schedule and materials about my presentations
Stars: ✭ 245 (+188.24%)
Mutual labels:  microcontroller
spoken-command-recognition
A large, free audio sample database (10M words pronounced), a test bed for voice activity detection algorithms and for single-syllable word recognition
Stars: ✭ 59 (-30.59%)
Mutual labels:  audio-classification
Open Electronics
📚 💻 Great Resources for Electronics Enthusiasts
Stars: ✭ 242 (+184.71%)
Mutual labels:  microcontroller
BluetoothHelper
Bluetooth helper Java class
Stars: ✭ 13 (-84.71%)
Mutual labels:  microcontroller
Microflo
Live dataflow programming for microcontrollers and embedded
Stars: ✭ 207 (+143.53%)
Mutual labels:  microcontroller
tongji-undergrad-thesis
📄 同济大学本科生毕业设计论文模板 | Tongji University Undergraduate Thesis Template | Overleaf / Mac / Linux / Windows / Workshop / Docker
Stars: ✭ 58 (-31.76%)
Mutual labels:  thesis
micropy-stubs
Automatically Generated Stub Packages for Micropy-Cli and whomever else
Stars: ✭ 25 (-70.59%)
Mutual labels:  microcontroller
angr-antievasion
Final project for the M.Sc. in Engineering in Computer Science at Università degli Studi di Roma "La Sapienza" (A.Y. 2016/2017).
Stars: ✭ 35 (-58.82%)
Mutual labels:  thesis
rustBoot
rustBoot is a standalone bootloader written entirely in `Rust`, designed to run on anything from a microcontroller to a system on chip. It can be used to boot into bare-metal firmware or Linux.
Stars: ✭ 99 (+16.47%)
Mutual labels:  microcontroller

Environmental Sound Classification on Microcontrollers using Convolutional Neural Networks

Thesis report

Download thesis report (PDF)

Download thesis report (PDF)

Errata

In print1 version of report

  • Fig 5.1. DS-Strided-24 result is missing
  • Fig 5.1. No-information-rate should be 11.5% instead of 10%. Did not take class-imbalance into account
  • Fig 2.10. Labels EffNet and ShuffleNet swapped
  • Fig 5.3. Missing description of model used. Uses Stride-DS-24
  • Table 4.1. Nesterov momentum shows NaN. Should be 0.9

Citing

You can use the following BibTeX entry

@mastersthesis{esc_micro_cnn_nordby2019,
    title={Environmental Sound Classification on Microcontrollers using Convolutional Neural Networks},
    author={Jon Nordby},
    year=2019,
    month=5,
    school={Norwegian University of Life Sciences},
    url={http://hdl.handle.net/11250/2611624}
}

Keywords

Wireless Sensor Networks, Embedded Systems
Edge Computing, Edge Machine Learning
Noise classification, Environmental Sound Classification (ESC), Urbansounds
Tensorflow, Keras, librosa

Abstract

Noise is a growing problem in urban areas, and according to the WHO is the second environmental cause of health problems in Europe. Noise monitoring using Wireless Sensor Networks are being applied in order to understand and help mitigate these noise problems. It is desirable that these sensor systems, in addition to logging the sound level, can indicate what the likely sound source is. However, transmitting audio to a cloud system for classification is energy-intensive and may cause privacy issues. It is also critical for widespread adoption and dense sensor coverage that individual sensor nodes are low-cost. Therefore we propose to perform the noise classification on the sensor node, using a low-cost microcontroller.

Several Convolutional Neural Networks were designed for the STM32L476 low-power microcontroller using the Keras deep-learning framework, and deployed using the vendor-provided X-CUBE-AI inference engine. The resource budget for the model was set at maximum 50% utilization of CPU, RAM, and FLASH. 10 model variations were evaluated on the Environmental Sound Classification task using the standard Urbansound8k dataset.

The best models used Depthwise-Separable convolutions with striding for downsampling, and were able to reach 70.9% mean 10-fold accuracy while consuming only 20% CPU. To our knowledge, this is the highest reported performance on Urbansound8k using a microcontroller. One of the models was also tested on a microcontroller development device, demonstrating the classification of environmental sounds in real-time.

These results indicate that it is computationally feasible to classify environmental sound on low-power microcontrollers. Further development should make it possible to create wireless sensor-networks for noise monitoring with on-edge noise source classification.

Run experiments

Setting up

Recommend using miniconda for

conda env create -f environment.yml
conda activate microesc

As an altenative, one can use pip

#pip install -r requirements.txt

Preprocess audio files into features

python3 preprocess.py

Check that the environment is working. This will run training process, but only for a few minutes.

python3 jobs.py --check

Running

Train the models

python3 jobs.py

Evaluate the resulting models

python3 test.py

Plot the results

python3 report.py
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].