Package: geotrouvetout
geotrouvetoutThis program is a geoguessr assistant, giving it a google street view image, it will return best guesses for the country in which the picture has been taken.
There is a command line tool, which can be used to gather best guesses, a REST API containerized and a browser extension to get an assistant from the browser.This project uses various image analysis techniques, from color analysis, to object detection with yolo, ocr with pytesseract, various statistical analysis and geoguessr specific "quick" strategies.
It was developed as part of a supervised project course by Armand Sylvain and the Université Paris Cité. Four students worked on this project for a period of 3 months : David Bret, Paul Chambaz, Fériel Cheggour and Marion Mazaud.
This program is free software, and all data associated with this project has been posted online with a free software license : GPLv3.The source code is available onthis Github page.The docker container is available ondocker-hubfor easy deployment.The dataset used for statistics and training is available onkaggle.The python package is available onpip.The extension is available on thefirefoxandgoogleextension stores.InstallationBrowser extensionIf you want to install this project on your web browser, just navigate on thestoreorgoogle storeand you can simply download it from there.Docker container on serverIf you want to get the docker container and use it on your server, please follow this guide.You most likely want to run these commands with sudo or as root.dockerpullpaulchambaz/geotrouvetout:latest# to get a executable for starting the program from the command linecurl-o/usr/bin/geotrouvetouthttps://raw.githubusercontent.com/paulchambaz/geotrouvetout/master/target/geotrouvetout
chmod+x/usr/bin/geotrouvetout# to get a systemctl service to manage the program as a daemoncurl-o/etc/systemd/system/geotrouvetout.servicehttps://raw.githubusercontent.com/paulchambaz/geotrouvetout/master/target/geotrouvetout.service
systemctldaemon-reload# to get a nginx reverse proxy - YOU WILL NEED TO CONFIGURE YOUR DOMAIN NAMEcurl-o/etc/nginx/conf.d/geotrouvetout.confhttps://raw.githubusercontent.com/paulchambaz/geotrouvetout/master/target/geotrouvetout.conf
nginx-t# to get https for the reverse proxycertbot--nginxCommand line toolFinally you can get the program to work with it from pip or github :pipinstallgeotrouvetout
gitclonehttps://github.com/paulchambaz/geotrouvetout.gitUsageDocker container on serverOnce you have the program installed on your server, you will want to start it, first run this command to check that there are no errors:geotrouvetout-dTo automate this command as a service, you can simply run :systemctlstartgeotrouvetout.service
systemctlenablegeotrouvetout.serviceCommand line toolIf you have gotten the project from pip or from github, you can use this project as a simple command line tool :# direct path to imagegeotrouvetout-ipath/to/image.jpg# start a daemon for the rest apigeotrouvetout-dTestsThis project has been unit tested, if you want to run all tests, you can simply run :maketestThis project has also been linted for style, if you want to lint the program, you can run :makelintIf you want to do both, you can just do :makefull-testToolsA number of tools have been created for this project :get_country_labels: which creates metadata for each each country.get_gsv_img: which allows for bulk download of google street view images with an api key.stat_colors: which does histogram color analysis for a bulk of images.stat_colors_country: which uses the result of stat colors to produce histogram color analysis for countriestrain: which automates the process of gathering Open Image Dataset data, labelizing it for YOLO training and training a YOLO modelTodoThere were things we did not have the time to do for this program, if one wants to expand it, they can start here:Implement more quick strategies specific to geoguessr (google car analysis, picture quality analysis, etc)A overpass, with auto caching has been implemented, but currently it is not used, one could try to use the connection with overpass to pin point the exact coordinates.Level of helps could be added if the program gives better result (1 could give the country, 2 could give the city and 3 could give the exact coordinates)Similar projectsuse complex convolution network to estimate the exact data, they have seen good result, but the dataset is only for us country. If one was able to construct a bigger and more diverse dataset, they could make use this technique to gather a new very powerful method to guess the country.A lot of other strategies can be used, such as using color analysis methods or object recognition methods to give a rural-urban index and use overpass to better guess the exact geolocation.