Technology
Components
The Cacophony Project is built with a wide variety of technologies including embedded systems, web applications, backend services and machine learning pipelines. Let's take a look at the various components of the project in a little more detail.
Remember, the project is completely open source. This means that anyone can customise the functionality of their devices, and has permission to reuse or modify any of our source code for their own needs.
Thermal Camera + Bird Monitor
Equipped with a thermal sensor, microphone, and (optionally) external speakers, it is deployed into New Zealand's native bush to automatically lure and identify invasive predators. The Thermal Camera software is a combination of Rust, Go and Python code. A version of this device without the thermal sensor is available as a stand-alone bird monitor.
Base hardware |
Raspberry Pi 3 RP2040 microcontroller |
Thermal camera | FLIR Lepton 3 |
Additional hardware |
Custom interface hat ATtiny microcontroller 4G modem Real time clock MEMS microphone 256MB embedded NAND flash |
Operating System | Raspberry Pi OS |
Key Software |
tc2-firmware tc2-agent thermal-recorder thermal-uploader |
Sidekick mobile app
The Sidekick companion app is available on both iOS and Android.
It’s the missing link between our Thermal Camera and Bird Monitor hardware, and those last-mile, hard-to-reach locations – far beyond the reaches of cellphone towers.
Sidekick allows staff in the field to visit deployed devices and collect monitoring data via from our Thermal Cameras and Bird Monitors via WIFI. No messing about with SDCards, no opening up devices and potentially compromising their weather sealing. When you’re back in coverage, Sidekick can upload the data to the Cacophony Monitoring platform for processing and analysis.
Sidekick is also the interface through which you configure any of our devices. Set the times you’d like it to wake up and record. Synchronise the internal clock, and set the GPS location attached to the monitoring data.
Sidekick is built using Kotlin and various web technologies.
API Server
In many ways, the API server is the heart of the project. It's where all video and audio recordings for the project are stored, processed and then made available for later querying and download. All the components of the project interact with the API server in one way or another.
Platform | Node.js |
Database | PostgreSQL |
Object Store | Minio (or other S3 compatible service) |
Test infrastructure |
Implemented with Cypress Continuous integration via Travis |
Source code | cacophony-web |
Web Application
The Cacophony Project has a full-featured JavaScript web application built using VueJS 3 for querying, tagging and managing uploaded recordings. It interacts exclusively with the Cacophony API server.
Machine Learning
Automatic classification of predators in a thermal video feed is a crucial part of the project. This magic is implemented using a TensorFlow based machine learning model which is trained by our classifier pipeline. We make heavy use of a number of data science tools including NumPy, SciPy, OpenCV and HDF5.
If you're into data science or machine learning, maybe you could help us improve our classifier's accuracy and efficiency.