# Picify

**Picify** is a [Flask](http://flask.pocoo.org) application that converts your photos into Spotify playlists that can be saved for later listening, providing a uniquely personal way to explore new music. The experience is facilitated by interacting and integrating a wide range of services. Try it [here](http://picify.net/).

## Workflow

The main workflow for the app is as follows:

1. The user uploads a photo to the Picify Flask server.
2. The image is passed onto the [Google Cloud Vision](https://cloud.google.com/vision/) API, where labels and entities are predicted/extracted. This information then gets passed back to the Flask server.
3. The labels and entities are filtered by a dynamic confidence threshold which is iteratively lowered until a large enough set of descriptors for the image can be formed.
4. Each of the descriptors in the above set are then expanded into associated "moods" using the [Datamuse API](https://www.datamuse.com/api/).
5. All of the descriptors and associated moods are filtered against a whitelist of "musically-relevant" terms compiled from sources such as [AllMusic](https://www.allmusic.com/moods) and [Every Noise at Once](http://everynoise.com/genrewords.html), excepting descriptors with extremely high confidence (for example, for a picture of Skrillex this might be "Skrillex").
6. Finally, the processed words are matched against existing Spotify playlists, which are sampled to form the final playlist.

## Contributors

* [Macguire Rintoul](https://github.com/mrintoul)
* [Matt Wiens](https://github.com/mwiens91)
* [Sophia Chan](https://github.com/schan27)
## Inspiration

Phreesia's challenge about storing medical data with a third-party software

## What it does

Allows users to analyze an image and see a prediction for skin cancer(benign or malignant), and allows upload of the image and the prediction into cloud storage

## How we built it

Tensorflow Lite and Andriod studio, with Firebase for user authentication and cloud storage
(+GitHub, proto io)

## Challenges we ran into

Implementing Tensorflow Lite into Android studio

## Accomplishments that we're proud of

Building an app with the functionality we intended and a model UI for what the app could be

## What we learned

How to implement an ML model in Android Studio, how to use Firebase for cloud storage

## What's next for Skin Cancer Detection App

Using blockchain we can enable safe data transfer of patient's data to doctors.

Adding access to more ML analysis tools to create an ecosystem of physician tools available.
Worked on doctor's note summarization with a python API with co:here NLP generation. (Did not finish in time)
## Inspiration

The point of the sustain app is to bring a competitive spirit and a rewarding feeling for doing good actions that help the environment. The app is basically a social media app where you can add friends, and see your leaderboards and community progress toward a green goal you set for yourself. The intended way to use the app is that every time you find a can or a piece of garbage on the ground, you can scan the item using the machine learning algorithm that over time will be able to detect more and more garbage of all different types and then you throw it away to get points(based on garbage type) that stack up over the weeks. The app also keeps track of the barcode so that it isn't used over and over again to hack points. We also planned in the future to add a variety of other methods to gain points such as ride sharing or using reusable containers or bottles.

## How we built it

We built the front end using HTML and CSS along with frameworks like Tailwind or Bootstrap.
For the back end, we created it using Django.
Finally, the machine learning part was implemented using PyTorch and the YOLOv5 Algorithm.

## Challenges we ran into

We encountered several challenges in deploying an object detection algorithm that was both accurate and lightweight, ensuring it did not significantly impact inference time which would hurt user experience. This required us to curate a dataset that's diverse while also having a small model. Additionally, we faced significant difficulties in implementing a conversational virtual assistant using AWS for our system. Despite investing more than three hours in setup, it ultimately crashed, leading us to unfortunately drop the idea.

## What we learned

For the 2 front-end developers, we learned a lot about how HTML works and the different available frameworks. Our back-end and machine-learning developers learned how complicated it could be to implement chatbots and deploy them onto web apps. They have also been able to learn new technologies such as YOLOv5 and frameworks like PyTorch and Ultralytics.

## What's next for the Sustain app