Building for 32-bit ARM architectures #418
Replies: 2 comments 4 replies
-
Hi, @acannistra ~~ I wanted to share a bit about this from my perspective since I've tinkered with this a great deal. I had an earlier iteration of BirdNET-Pi that used the 32-bit pre-compiled TFLite binaries --but they run about 4 times slower on the 32-bit architecture than they do for 64-bit. Read this for important information on how the model will perform on the different architectures. To save you a TON of time, here is a vast collection of pre-built TFLite binaries you should be able to swap out with the current wheel in BirdNET-Pi's repo, then just change the I don't want you to get your hopes up about this working out too well -- TFLite runs WAY faster using the 64-bit architecture and likely won't be able to keep up with realtime analysis otherwise. All that said, please accept the best of luck from me and let me know how things work out for you, Also, my best regards, |
Beta Was this translation helpful? Give feedback.
-
@acannistra did you ever get any further running this on ARM7? I have a Raspberry PI 3 on ARM and I would like to use it for this! |
Beta Was this translation helpful? Give feedback.
-
Hello! Love this project. I sat down to give it a try, and realized that the Pi Zero that I have is a v.1.1 (not 2), which means I can't use any pre-built 64-bit binaries.
I know it's possible to build
tflite
for 32 bit architectures (like the RPi Zero 1.1), but I'm wondering if there might be more limitations other than the tensorflow library that would limit building this project for 32 bit architectures.I've found a couple maybe-relevant discussions in the
BirdNET-Analyzer
repo and in a few discussions here but nothing precisely what I'm looking for.I'll admit that I have not even looked at the build process yet, so I apologize if this answer is lurking in there somewhere. I'm going to do that next, of course, but figured I'd ask here too.
Thanks!
update: after a little digging, I determined that at least one of the 64-bit dependencies in the
requirements.txt
file that's used to create the Python virtual environment that BirdNET-pi needs is the pre-built tensorflow wheel. I'm going to try to build this wheel from scratch for an ARMv6 (rpi0 < v2) target using these steps and will report back. That might be all it takes? Could also be that the.tflite
model is incompatible with a 32 bit version of tensorflow, in which case I'll have to re-convert the source model into a compatible format. I couldn't find anything online about whether a given.tflite
conversion is particularly limited to any specific architecture, but I have a feeling it might be. I guess this is more related to the dtypes within the model rather than the conversion process.Beta Was this translation helpful? Give feedback.
All reactions