File size: 776 Bytes
4388025
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from geoguessr_bot.guessr import AbstractGuessr
from geoguessr_bot.retriever import AbstractImageEmbedder
from geoguessr_bot.retriever import Retriever


@dataclass
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