
hashsearch - Recherche d'images inverse à l'aide de hachages perceptuels. ?HashSearch est un moteur de recherche d'images inversé léger et facile à utiliser qui utilise des hachages perceptifs.
Le moyen le plus simple est de télécharger à partir des versions.
Vous pouvez également créer hashsearch à partir du code source:
git clone https://github.com/burntcarrot/hashsearch
cd hashsearch
go build -o ./bin/hashsearch api/v1/main.go hashsearch -config <CONFIG_FILE_PATH>
Si -config n'est pas fourni, hashsearch par défaut est <HOME_DIR>/.hashsearch/config.yml .
hashsearch exécute le serveur sur l'adresse configurée et expose une API avec laquelle interagir.
L'API est très simple. Deux itinéraires, un pour la recherche et un pour obtenir la liste des images.
/v1/searchPublier une image à l'aide de données de formulaire, obtenez la liste des images (triée par le moins dans la plupart de la distance):
curl --location --request POST ' localhost:8081/v1/search '
--form ' file=@"star.png" 'Réponse:
[
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
},
{
"path" : " files/star-new.png " ,
"distance" : 4 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/random.png " ,
"distance" : 28 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
}
]/v1/listObtenez une liste de toutes les images:
curl --silent 'localhost:8081/v1/list'
Réponse:
[
{
"path" : " files/random.png " ,
"distance" : 0 ,
"hash" : " 0000000110000000110000100010001111110010010001100000011110000110 "
},
{
"path" : " files/star-new.png " ,
"distance" : 0 ,
"hash" : " 0001000000110000111100001111110011111100111100000011000000010000 "
},
{
"path" : " files/star.png " ,
"distance" : 0 ,
"hash" : " 0000000000010000111100001111110011111100111100000001000000000000 "
}
] Le fichier de configuration est un fichier .yaml simple:
db :
url : " data.db " # Database URL.
server :
addr : " localhost:8081 " # Server address.
files :
dir : " /files " # Directory where the images would be saved.
cors :
allow_origin : " * " # CORS Allow-Origin value.
logging :
file : " /hashsearch.log " # Log file path. Vous téléchargez une image à l'aide /v1/search :
hashsearch fait une copie de votre imagehashsearch stocke l'image copiée dans FILES_DIR , qui est configurablehashsearch génère le hachage lorsque vous publiez l'image et l'enregistre dans la base de donnéeshashsearch calcule les distances entre l'image publiée et d'autres images et renvoie le résultat en tant que réponse JSONSi vous avez une application à petite échelle et que vous ne souhaitez pas utiliser de grandes dépendances / systèmes, cela devrait bien fonctionner.
Est-ce la meilleure solution? Pas vraiment, mais si vous voulez une solution rapide et facile, cela devrait être assez bon.
Est-ce que ça flamboyant rapidement? Encore une fois, pas sûr de cela; Je ne l'ai pas testé sur de grands ensembles d'images.
hashsearch est autorisé sous la licence du MIT.
On dirait que c'est l'une des inspirations derrière ce projet.
Ce n'est pas ainsi que la recherche d'images inverse est implémentée dans la plupart des domaines; Je voulais juste m'amuser avec des hachages perceptifs.
Le hachage moyen est bien pour la plupart des cas, mais il a du mal dans certaines régions, donc la meilleure option serait d'utiliser Dhash / Phash.
Je travaille activement sur la recherche vidéo inversée ; Attendez-vous à ce qu'il fasse partie des versions futures.
Une belle, petite interface utilisateur Web serait également ajoutée bientôt.