Everyone knows the pain of an iPhone that's low on storage. Even worse, the culprit is usually the camera roll filled with hundreds, if not thousands, of photos that no one has the time to look through. The only time-effective solution is backing the photos up, but that comes at the cost of additional storage. We sought to fix this issue with an app for PennApps XXI.
What it does
Broomstick is a mobile app that uses a combination metadata analysis and image recognition techniques to categorize useless images from useful ones. Users simply allow Broomstick access to their camera roll, and the app does the rest. It displays the detected useless pictures to the user, and all they have to do is swipe to either keep or delete the images.
How we built it
Because of the time limitations of the hackathon, we decided to focus on three main categories of useless images: screenshots, incoherence, and duplications. We used Apple's CoreML and Vision framework to detect incoherent and duplicated images. Incoherent images are detected by a lack of a dominantly recognizable object in the picture, while duplicated images are grouped by a similarity score generated by the Vision framework. Screenshots, however, are detected by metadata analysis, by a combination of factors such as the existence of EXIF metadata, and image dimensions.
Challenges we ran into
iOS frameworks and the Swift ecosystem is very powerful, at the cost of being complex. Throughout the hackathon, we found that a lot of interfaces(functions, classes, etc.) were deprecated, or didn't function strictly according to the API. Additionally, we ran into issues with iOS 14 beta vs iOS 13, and this led to some time wasted during the testing phase.
Accomplishments that we're proud of
Though we ran into issues during development, the core innovations that ultimately tie Broomstick together turned out to be perfectly functional. The innovations implemented in this hackathon legitimately help people solve the original problem of cleaning out their camera roll, and the app as a whole turned out to be useful and practical.
What we learned
We learned a lot about how to structure the backend functionality and the frontend UI of an app in order to provide the best experience for the user. Factors such as timely code and properly ordered data updates play an especially large role in user-facing applications, and we gained a lot of insight into that process as a result of this hackathon.
What's next for Broomstick
Because our hack was a practically useful one, we hope to flesh out the app and release it on the app store. We believe that with a little more development time and maturation of features, Broomstick has the potential to bring value to a lot of smartphone users.