Skip to content

a ml model for categorizering osu beatmaps

Notifications You must be signed in to change notification settings

Ohdmire/osu_oracle

 
 

Repository files navigation

osu!oracle

osu!oracle is beatmap classifier that takes in an osu! beatmap and categorizes it into an existing genre such as aim, streams, alt, tech, etc.

Overview

Model is currently trained on collections or tourney pools from osu!collector.

Beatmaps range from ~ 5.1☆ to ~ 8.8☆ range

Current categories are aim, alt, tech, and streams with hopefully more to come

Requirements

- Python 3.10
- .NET 5.0 (for concurrent client testing)
- gdown
- Keras
- numpy
- tensorflow
- h5py
- requests
- scikit-learn
- matplotlib
- joblib

Getting Started

Running on Colab (highly recommended!!)

  1. Simply open the Google Colab link, follow the instructions and you're good to go

Running alongside osu! client (good for testing!!)

  1. Download the osu!oracle.zip file in the most recent release
  2. Make sure to install the requirements through pip install -r requirements.txt
  3. Run the executable file and launch osu before or after
  4. A terminal should pop up and you should see something like this: Image of output
  5. When you change songs in the song select screen, the terminal should update with the new prediction: Image of output

Running Locally (outdated, probably won't work unless you tinker)

  1. Download the model from the Google Drive link above
  2. Open the directory in a terminal
    • Make sure you have all the requirements installed. If you don't, run the following command: pip install <w/e>
  3. Run the following script to test the current iteration of the model:
python test_model.py <beatmap_id>

ex. to test Blue Zenith's top diff, take the last sequence of digits (the beatmap_id) https://osu.ppy.sh/beatmapsets/292301#osu/658127 and run the following command:

python test_model.py 658127
  1. Output should look something like this: Image of output

Training

first time working with machine learning so i won't go into detail since everything is very scuffed.

the osu_parser.py and model.py files should give you all you need to know. also take a look at the model section within the colab.

if you're still interested in training, message me on discord (token#8233) and i'll be happy to help you out :^)

Known Issues

  • Model performance drops significantly when working outside its trained data range of 5☆ to 9☆ maps
  • Improperly classified maps during training will continue to be misclassified
  • Gamemodes other than standard are currently not supported and will (probably) break

please contact me if you notice any other issues or have any suggestions :^)

Credit

This project uses the following projects:

About

a ml model for categorizering osu beatmaps

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.0%
  • Dockerfile 1.0%