In their paper "A Maze Solver for Android", Rohan Paranjpe and Armon Saied devised a method to automate solving mazes with nothing but a picture of said maze. My partner and I decided that this would be cool to implement ourselves, and did so accordingly. Many of the things we found in the paper were absolutely crucial to the success of the project, such as using a median and Otsu's filter to preprocess the image, and using the Zhang-Suen algorithm to generate a 1-pixel wide path. However, we innovated on some of their methods, like generating a graph out of the thinned path so that future iterations of the project can handle a more robust problem space (like multiple entrances or exits). Our entire algorithm runs in a little less than a minute on average for a 720x1080 image. The run time of this algorithm is comparable to the time it would take the intended audience of these mazes, elementary school children, to solve. Improvements to the run time of this algorithm can be made by improving our implementation of the Zhang-Suen algorithm, as this is currently the most computationally expensive step.
## Inspiration

No matter where our families go, whether it be the supermarket or the next state over, they always insist on taking the most beautiful route. Driving by breathtaking scenery is one of life's finest pleasures, yet it is near impossible to find the prettiest route to take. Google Maps can get you from point A to point B the fastest, but it falls short when asked to give you a scenic route. This inspired us to build Sceniq—an app that will point you towards the most beautiful route for your journey.

## What it does

Sceniq will take in a starting location and a destination, and will return back to you the most scenic route between those two points.

## How we built it

Our algorithm identifies all of the key routes between two points and retrieves image data of those routes through Google Maps. This information is fed into a neural network that was trained on over 6,000 images to distinguish between scenic and non-scenic imagery. Using the network's output, a score is assigned to each route indicating how scenic it is. This data is returned to the user.

## Challenges we ran into

We ran into several challenges. While working on the neural network, Adith struggled with optimizing the prediction speed. After he got around this, he realized that there was a fundamental flaw in how he was labeling the data, which took a while to fix.

Adam had his own set of problems. He had to reverse engineer the Unsplash API because it wasn't well formed. Additionally, he was getting timeout errors because he was making simultaneous requests, which he got around by implementing a randomized incremental back-off algorithm. Finally, he was very proud of the fact that he created a recursive generator algorithm that was able to divide a geographic polyline into n equal parts.

## Accomplishments that we're proud of

We're proud of the project as a whole. Not only did we train, test, and fine-tune a neural network, but we also were able to implement an algorithm that interfaces with Google Maps to get image data for routes.

## What we learned

1) How to break down a problem into smaller chunks that are later combined into a cohesive solution.
2) How to use CNNs to differentiate between various types of images.
3) How to interface with Google's various map/direction APIs.

## What's next for Sceniq

We need a better front-end interface. Additionally, we could also improve our route visualization. These changes would make our program more user-friendly.
## Inspiration

We got lost so many times inside MIT... And no one could help us :( No Google Maps, no Apple Maps, NO ONE. Since now, we always dreamed about the idea of a more precise navigation platform working inside buildings. And here it is. But that's not all: as traffic GPS usually do, we also want to avoid the big crowds that sometimes stand in corridors.

## What it does

Using just the pdf of the floor plans, it builds a digital map and creates the data structures needed to find the shortest path between two points, considering walls, stairs and even elevators. Moreover, using fictional crowd data, it avoids big crowds so that it is safer and faster to walk inside buildings.

## How we built it

Using k-means, we created nodes and clustered them using the elbow diminishing returns optimization. We obtained the hallways centers combining scikit-learn and filtering them applying k-means. Finally, we created the edges between nodes, simulated crowd hotspots and calculated the shortest path accordingly. Each wifi hotspot takes into account the number of devices connected to the internet to estimate the number of nearby people. This information allows us to weight some paths and penalize those with large nearby crowds.
A path can be searched on a website powered by Flask, where the corresponding result is shown.

## Challenges we ran into

At first, we didn't know which was the best approach to convert a pdf map to useful data.
The maps we worked with are taken from the MIT intranet and we are not allowed to share them, so our web app cannot be published as it uses those maps...
Furthermore, we had limited experience with Machine Learning and Computer Vision algorithms.

## Accomplishments that we're proud of

We're proud of having developed a useful application that can be employed by many people and can be extended automatically to any building thanks to our map recognition algorithms. Also, using real data from sensors (wifi hotspots or any other similar devices) to detect crowds and penalize nearby paths.

## What we learned

We learned more about Python, Flask, Computer Vision algorithms and Machine Learning. Also about frienship :)

## What's next for SmartPaths

The next steps would be honing the Machine Learning part and using real data from sensors.