Red de conocimiento informático - Material del sitio web - Cómo encontrar imágenes similares usando Python y redes neuronales profundas

Cómo encontrar imágenes similares usando Python y redes neuronales profundas

Código

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()