Inspiration

We were inspired by the challenge Huawei presented us. As a team, we were interested in solving this challenge of different disciplines together and learn something along the way. We were highly motivated to work on the interesting and challenging problems that app development and machine learning present.

What it does

The project consists of two main components, the user application and the server. A user installs the app on their smartphone and uses it to locate open OSM issues. Once near an issue, they can take a photo using the built-in camera mode. This picture is then sent to the server, where it is analyzed using a self-trained image classification model to assign the correct class to the issue. The user is awarded points for their picture, which contribute to their level. Users can compare themselves using a built-in leaderboard. Further functionality can be unlocked by gathering enough points for level-ups. At level 5, the user unlocks the speedrun mode, where the goal is to reach an issue within a given timeframe. Solving this task awards the user double the amount of experience points (XP). At level 10, the user unlocks the labeling permission. This means, that they will be able to provide the server with their human-classified labels. Having reached a high level leads to higher trust in the user. These labels might then be averaged with other user-generated labels and then used in future retrainings of the model. The server hosts an API, which allows the user application to access issue locations and store XP and other needed data. It also hosts the aforementioned ML model. It is a binary image classification model that can distinguish footways from primary roads, which is the main purpose of the project.

How we built it

We've used different frameworks along our journey:

  • Flutter for the user application
  • Flask for the server (REST API). Issue and user data is stored in an SQLite-database
  • PyTorch for the image classification task For communication and code exchange, we've used GitHub. Also, as our main communication channel, we've exchanged a lot of ideas and files/code snippets via Discord. We've worked together as a team, in programming, testing, and idea finding.

Challenges we ran into

  • Connecting the application to our server, i.e. designing a good API
  • Working with a small dataset of only 500 testing and 125 validation images
  • Selection and training of the machine learning model

Accomplishments that we're proud of

  • Our user interface. It's easy to use and simple, yet provides a lot of functionality
  • The ML model we've trained
  • The server, we've set up and programmed

What we learned

  • Training a binary classification model
  • Using Flutter to create an intuitive and good-looking user interface
  • Working together as a team on a huge task with a pressing deadline

What's next for Pokemon Geo GOIFA

  • Implement some security mechanisms, such as e-mail login and more server-side calculation of point-rewarding features
  • Further gamemodes, such as search the issue, and additional level rewards
  • Multiplayer / Teams
Share this project:

Updates