Cómo encontrar imágenes similares usando Python y redes neuronales profundas
Primero, lee el paquete de software TuriCreate
importa turicreate como tc
Especificamos la carpeta image donde se encuentra la imagen y luego dejamos que TuriCreate lea todo archivos de imagen y almacenarlos en el marco de datos de datos
data = tc./image/')
Echemos un vistazo al contenido del marco de datos de datos:
datos
los datos contienen dos columnas de información. La primera columna es la dirección de la imagen y la segunda columna es la descripción del largo y ancho de la imagen.
A continuación, le pedimos a TuriCreate que agregue un número de fila a cada fila en el marco de datos. Esto servirá como marcador para la imagen para su uso posterior al buscar la imagen y generar datos de visualización.
data = data.add_row_number()
data
Luego viene el trabajo duro. Dejamos que TuriCreate construya un modelo discriminante de similitud de imágenes basado en el conjunto de imágenes de entrada.
model = tc.image_similarity.create(data)
La ejecución de esta declaración puede llevar algún tiempo. Si es la primera vez que utiliza TuriCreate, es posible que también requiera descargar algunos datos de Internet. Espere por favor.
Después de una larga o corta espera, el modelo ha sido creado exitosamente.
Ahora, intentemos hacer coincidir una imagen con el modelo y dejemos que TuriCreate nos ayude a seleccionar las 10 imágenes más similares del conjunto de imágenes actual.
Para mayor comodidad, seleccionaremos la primera imagen como entrada de consulta.
Utilizaremos la función show() para mostrar la imagen.
tc.Image(data[0]['path']).show()
La siguiente es la consulta. Le pedimos al modelo que encuentre las 10 imágenes más similares a. esta imagen.
imágenes_similares = model.query(data[0:1], k=10)
Almacenamos los resultados en la variable imágenes_similares, veamos qué imágenes hay en ella.
imágenes_similares
El resultado devuelto a **** tiene 10 filas. Esto es consistente con nuestros requisitos.
Cada fila de datos contiene 4 columnas. Son:
La marca de la imagen de consulta
La marca del resultado obtenido
La distancia entre la imagen de resultado y la imagen de consulta
La distancia entre la imagen de resultado y la imagen de consulta Valores de clasificación de proximidad de la imagen de consulta
Con esta información, podemos ver exactamente qué imágenes son más similares a la imagen de consulta de entrada.
Tenga en cuenta que la primera de estas imágenes de resultados es en realidad nuestra imagen de entrada. No tiene sentido pensar en ello.
Extraemos los valores de etiqueta (índice) de todas las imágenes resultantes, ignorando la primera imagen (en sí misma).
similar_image_index = similar_images['reference_label'][1:]
Filtre las etiquetas de las 9 imágenes anteriores en la lista de índice de todas las imágenes:
filtered_index = data['id'].apply(lambda x : x in similar_image_index)
filtered_index
Después de la verificación, ejecute la siguiente declaración. Llamamos nuevamente a la función explore() de TuriCreate para mostrar la imagen del resultado de la consulta de similitud.
datos[filtered_index].explore()