Team beztCoderspresentBird Spotter
Bird Spotter Demo Video
Capture, spot and discover: Your pocket birding adventure
Bird Spotter was conceived with the idea that birding be accessible to anyone, utilising deep learning to reduce the barrier to entry and make spotting birds fun, interactive and a community driven learning experience.
Bird Spotter accompanies those on their birding adventures, users can take pictures of birds and, using a deep learning model, identify them. Guess species of the bird, learn about how they behave and what they sound like. Receive points for spotting birds and/or correctly guessing. Soar through the ranks, keep your streak going and, as you spot more birds, these will be added to your collection. Filter and search through the index of birds and learn about specific birds in more detail. Find birds that have been spotted by other users near you and all over the world. For iOS and Android.
The Team
Berkal Behchetov
Eunwoo Kim
Stefany Peta
Zaid Bassam
Technologies
We used: Typescript, React Native, Expo, Firebase, TensorFlow, Keras
Typescript, with our foundation in JavaScript and with the addition of pre-runtime error handling, allows faster debugging and, in the case that the app is successful in finding a mark, by default have stricter quality assurance measures.
React Native allowed us to render to native platforms on iOS and Android while writing one single code base and ensures consistency across both. Expo allows us to get setup quickly given our time constraints and, with Expo Go, we could test our app on a physical device instantly.
Firebase's database and storage offered real-time synchronisation of data and built-in secure authentication, which were both essential to our app.
TensorFlow was used to deploy the Keras model as that was mostly compatible with the pre-trained model specifically trained on bird species, it is well optimised for performance and can be integrated into our tech stack.
Challenges Faced
With the Keras model, we found that a certain layer in the model's architecture was not native to TensorFlow.js. This took a while to find to investigate and find a solution for as it was essential that the layer be instantiated before loading the model.
We found Git Version Control difficult to manage but we worked together and made ourselves always available to overcome this. Merges had little to no conflicts towards the end of the project as we learned to handle it gracefully.