It's been a little longer than usual since our last update. We've been busy!
Thermal Video Collection
A major focus for us at the moment is the collection of a wide variety of thermal video footage featuring invasive predators (and non-target species too). These videos will be used to train our machine learning model to correctly identify the various invasive predators that we're interested in. There's been plenty of progress on several fronts.
Go Lepton 3 Package
We've now settled on using the Go programming language for software running on our Raspberry Pi prototypes. Go provides an ideal balance between low level control, excellent runtime performance and modern programming features. It's a great fit for resource constrained embedded computers like the Raspberry Pi.
We needed some Go code to talk to the Lepton 3 cameras from but nothing usable existed. Building on some excellent work from the periph.io project we now have our own "lepton3" package at https://github.com/TheCacophonyProject/lepton3. The package is generic enough that anyone interested in talking to these cameras using Go should be able to pick it up and use it as is.
Our Go-based recorder software which takes advantage of the lepton3 library can be found at https://github.com/TheCacophonyProject/thermal_recorder.
The thermal video data we capture using the cameras quickly becomes large so it's important that we compress it for efficient transmission, especially over mobile networks with limited bandwidth. After researching some options and not finding a good fit for our needs, we decided to develop our own format for representing thermal video recordings. Having our own data format allows us to take advantage of the unique characteristics of the thermal data to optimise compression, and also allows us to attach relevant metadata to each video, and even each video frame.
This new data format is called "Cacophony Project Thermal Video" (CPTV). Using various techniques we're seeing (lossless) compression rates of over 75%.
We have a specification of the format as well as Python and Go code for reading and generating CPTV files. Expect separate announcements about these once we have them in a releasable state.
The server which handles audio and video uploads has needed updates to support CPTV files. We've generalised the way recordings are handled so that there's now one API for all recording types, instead of a separate APIs for each kind of recording. Additionally the code that handles various processing tasks for uploaded recordings has been separated out giving us more flexibility in the way recordings are handled.
Note that existing APIs will be preserved to support already deployed devices.
It's important that our video recording software only records when there's actually something interesting to see. The last thing we want is hours of videos of leaves blowing in the wind! On the flip side, it's also important that the software is sensitive enough to activate as soon as an animal walks into the scene.
Last week we made some improvements to the recorder's movement detection functionality, using some well-established algorithms for movement detection with conventional video and then tweaking them take advantage of the unique features of thermal data. Initial testing looks promising and we're looking forward to getting the new system out there in the field this week.
There's always a chance that audio recordings made by our Cacophonometer devices will unintentionally pick up human conversation. We know that this presents a privacy issue so have been working to integrate "voice scrubbing" into the server side processing of audio recordings. It still needs some tweaking but when done will silence any parts of recordings which contain human speech.
Several interesting projects have recently started around analysis of the audio recordings we're collecting. They range from tagging of recordings through to automated identification of bird species. Exciting stuff!