Spaces:
Running
Running
from dataclasses import dataclass | |
from geoguessr_bot.guessr import AbstractGuessr | |
from geoguessr_bot.interfaces import Coordinate | |
from geoguessr_bot.retriever import AbstractImageEmbedder | |
from geoguessr_bot.retriever import Retriever | |
class GlobalEmbedderGuessr(AbstractGuessr): | |
"""Guesses a coordinate using an Embedder and a retriever | |
""" | |
embedder: AbstractImageEmbedder | |
retriever: Retriever | |
def guess(self, image: Image) -> Coordinate: | |
"""Guess a coordinate from an image | |
""" | |
# Embed image | |
image_embedding = self.embedder.embed(image) | |
# Retrieve nearest neighbors | |
nearest_neighbors = self.retriever.retrieve(image_embedding) | |
# Guess coordinate | |
guess_coordinate = self.retriever.image_to_coordinate[nearest_neighbors[0][0]] | |
return guess_coordinate | |