
hashsearch : búsqueda de imágenes inversa utilizando hashes perceptuales. ?HashSearch es un motor de búsqueda de imágenes inverso ligero y fácil de usar que utiliza hashes perceptuales.
La forma más fácil es descargar de los lanzamientos.
También puede crear hashsearch del código fuente:
git clone https://github.com/burntcarrot/hashsearch
cd hashsearch
go build -o ./bin/hashsearch api/v1/main.go hashsearch -config <CONFIG_FILE_PATH>
Si no se proporciona -config , hashsearch predeterminada a <HOME_DIR>/.hashsearch/config.yml .
hashsearch ejecuta el servidor en la dirección configurada y expone una API para interactuar.
La API es muy simple. Dos rutas, una para buscar y otra para obtener la lista de imágenes.
/v1/searchPublique una imagen utilizando datos de formulario, obtenga una lista de imágenes (ordenadas por menos a la mayoría de la distancia):
curl --location --request POST ' localhost:8081/v1/search '
--form ' file=@"star.png" 'Respuesta:
[
{
"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/listObtenga la lista de todas las imágenes:
curl --silent 'localhost:8081/v1/list'
Respuesta:
[
{
"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 "
}
] El archivo de configuración es un archivo .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. Sube una imagen usando /v1/search :
hashsearch hace una copia de su imagenhashsearch almacena la imagen copiada en FILES_DIR , que es configurablehashsearch genera el hash cuando publica la imagen y la guarda en la base de datoshashsearch calcula las distancias entre la imagen publicada y otras imágenes y devuelve el resultado como una respuesta JSONSi tiene una aplicación a pequeña escala y no desea utilizar grandes dependencias/sistemas, esto debería funcionar bien.
¿Es la mejor solución? En realidad no, pero si quieres una solución rápida y fácil, esto debería ser lo suficientemente bueno.
¿Es abrumando rápido? De nuevo, no estoy seguro de esto; No lo he probado en grandes conjuntos de imágenes.
hashsearch tiene licencia bajo la licencia MIT.
Parece que es una de las inspiraciones detrás de este proyecto.
No es así como se implementa la búsqueda de imágenes inversas en la mayoría de las áreas; Solo quería divertirme con hashes perceptivos.
El hash promedio está bien para la mayoría de los casos, pero lucha en algunas áreas, por lo que la mejor opción sería usar Dhash/Phash.
Estoy trabajando activamente en la búsqueda inversa de video ; Espere que sea parte de los lanzamientos futuros.
Una pequeña y pequeña interfaz de usuario web también se agregaría pronto.