BetaZero is a free web application which allows users to generate, edit, and share board climbs. It currently supports the Kilter, TB2 and Decoy boards, with Moonboard 2016, 2019 and 2024 to be added next week. However, the underlying generative model works on any 2D system board, so long as that board is angled between 0* and 90* and the holds are properly formatted (For reference, this model was not trained on the Decoy board, so it's performance there is indicative of its general performance across home walls of a similar nature).
When I built my first homewall last year, I was psyched. 200 holds I could set however I wanted, and countless potential climbs to project. However, I quickly noticed that something was missing from this experience: Variety. I wanted the joy of opening an app, scrolling to some random climb I'd never have come up with myself, and projecting it.
At first I messaged my friends and asked them to couch-set some climbs for me. But my friends all live in Colorado while I'm stuck in upstate NY. They did send me some climbs, but having never actually climbed on my wall, most of their sets were impossible or too easy. I also tried setting climbs on international boards via Stokt, but with similarly lackluster results.
So... I built a generative model to set climbs on my homewall. It went through a couple of iterations.
V1. ClimbLSTM: LSTM Model trained on my homewall
V2. ClimbDDPM: Diffusion Model trained on the BoardLib dataset
V3. BetaZero, a free web app powered by ClimbDDPM.
Next steps include integration of an account/security system, and allowing users to upload, edit, and set climbs for, their own custom walls. (I already have a functional API for uploading and editing walls; its how I added the current set of boards to the database. However, there is not yet a security/permissions system to control who can edit/see which walls. I also want to improve the scalability of the app, and train an improved diffusion model, based on what I've learned from the prior training run.
EvanMcCormick•2h ago
When I built my first homewall last year, I was psyched. 200 holds I could set however I wanted, and countless potential climbs to project. However, I quickly noticed that something was missing from this experience: Variety. I wanted the joy of opening an app, scrolling to some random climb I'd never have come up with myself, and projecting it.
At first I messaged my friends and asked them to couch-set some climbs for me. But my friends all live in Colorado while I'm stuck in upstate NY. They did send me some climbs, but having never actually climbed on my wall, most of their sets were impossible or too easy. I also tried setting climbs on international boards via Stokt, but with similarly lackluster results.
So... I built a generative model to set climbs on my homewall. It went through a couple of iterations.
V1. ClimbLSTM: LSTM Model trained on my homewall V2. ClimbDDPM: Diffusion Model trained on the BoardLib dataset V3. BetaZero, a free web app powered by ClimbDDPM.
Next steps include integration of an account/security system, and allowing users to upload, edit, and set climbs for, their own custom walls. (I already have a functional API for uploading and editing walls; its how I added the current set of boards to the database. However, there is not yet a security/permissions system to control who can edit/see which walls. I also want to improve the scalability of the app, and train an improved diffusion model, based on what I've learned from the prior training run.