FastBup: una herramienta para analizar grandes conjuntos de datos de imágenes para visión por computadora

0. Introducción

  • URL oficial de github
  • Propósito del proyecto : el conjunto actual de datos de imágenes a gran escala es un desastre. El volumen de datos es enorme, pero la calidad es preocupante. A veces, el conjunto de entrenamiento, el conjunto de verificación y el conjunto de prueba tienen datos duplicados, lo que provoca una fuga de datos. FastBup puede identificar duplicados, casi duplicados, imágenes anormales, etiquetas incorrectas, valores atípicos y puede procesar millones de imágenes en la CPU.

1. Instalar

  • Entorno compatible : Python 3.7 y 3.8 (Ubuntu 20.04 o Ubuntu 18.04 o Mac M1)
  • instalar :python3.8 -m pip install fastdup
  • Instalar en kaggle :!pip install fastdup matplotlib -Uq

2. Fácil de usar

  • básico
import fastdup

work_dir = "./fastdup_report"#分析结果输出文件夹
images_dir = "/train"#待分析图像所在文件夹

fd = fastdup.create(work_dir, images_dir)
fd.run(ccthreshold=0.9, threshold=0.8, overwrite=True)
  • Guardar el resultado
#结果保存
fastdup.create_duplicates_gallery('similarity.csv', save_path='.')       #create a visual gallery of found duplicates
fastdup.create_duplicates_gallery('outliers.csv',   save_path='.')       #create a visual gallery of anomalies
  • La visualización muestra imágenes repetidas, con una distancia de 1 que es completamente igual, 0 es completamente diferente y un valor superior a 0,98 se considera casi idéntico.
#可视化显示重复图像,距离1代表完成相同,0代表完全不同
fd.vis.duplicates_gallery(num_images=50)

inserte la descripción de la imagen aquí- Gráfico de excepción de visualización visual

#可视化显示异常图
fd.vis.outliers_gallery()

inserte la descripción de la imagen aquí- Ver imágenes más oscuras

fd.vis.stats_gallery(metric='dark')

inserte la descripción de la imagen aquí- Ver las imágenes más brillantes

fd.vis.stats_gallery(metric='bright')

inserte la descripción de la imagen aquí- Ver las imágenes más borrosas

fd.vis.stats_gallery(metric='blur')

inserte la descripción de la imagen aquí- Visualice familias de similitud, agrupe imágenes similares en grupos

#可视化相似族,将相似图片划分为一簇
fd.vis.component_gallery()

inserte la descripción de la imagen aquí

  • Vea imágenes similares en forma tabular para una fácil visualización personalizada
#表格形式查看
fd.similarity()

inserte la descripción de la imagen aquí

3. Documentación detallada de la API de Python

  • Documentación oficial completa de github en inglés

  • entrada_dir

    • cadena
    • Carpeta de imágenes o videos, todas las imágenes en esta carpeta se procesarán recursivamente
    • o la ruta completa a una imagen en papel, una imagen por línea
  • trabajo_dir

    • cadena
    • El directorio utilizado para guardar los resultados intermedios y la salida final.
      • Archivo de vector de características : el nombre de archivo predeterminado Features.dat, una matriz numérica binaria con n filas y columnas 576.
        Dado que Python binario es inconveniente para operar, se proporciona una función:

        file_list, mat_features = fastdup.load_binary('features.dat')
        

        Lo que se devuelve es una lista completa de imágenes de longitud x y una matriz np de x filas y 576 columnas.

      • El archivo csv de la ruta completa de la imagen y la asignación de vectores de funciones : el nombre de archivo predeterminado functions.dat.csv (el orden de procesamiento de la imagen puede cambiar debido a diferentes sistemas, y algunas imágenes están dañadas y no pueden calcular las funciones, por lo que este registro de archivo de mapeo es obligatorio)

      • Features.bad.csv registrará la imagen dañada que no puede generar el vector de características

      • Lista de similitud : similarity.csv, tres columnas (desde, hasta, distancia), ordenadas por distancia en orden descendente, el máximo es 1, lo que significa que las dos imágenes son exactamente iguales (similar a la distancia del coseno)

      • faiss.index : el archivo de índice generado al usar faiss

      • components_info.csv : cada nodo conectado (imagen) al crear un gráfico conectado

      • connected_components.csv : la primera columna es el índice (lista de imágenes) en el archivo functions.dat.csv, el archivo se ordena de acuerdo con la lista, incluidos los parámetros de salida de rango de página, distribución de ángulo y gráfico de conectividad

  • calcular :

    • cadena
    • Use cpu o gpu para calcular, el valor predeterminado es cpu
  • detallado :

    • bool
    • ¿Está detallado? predeterminadoFalso
  • num_hilos

    • En t
    • La cantidad de subprocesos, el valor predeterminado -1, se establecerá automáticamente en la cantidad de núcleos de CPU
  • núm_imágenes :

    • En t
    • El número de imágenes a calcular, el valor predeterminado es -1, y se calculan todas las imágenes en la ruta de entrada
  • turi_param :

    • calle
    • Parámetros adicionales opcionales para turi
      • modelo
        • 0/1/2
        • El modelo de vecino más cercano utilizado por las entidades de agrupación
        • Solo valido para turi, no faiss
        • 0: fuerza_bruta, exacta
        • 1:árbol de bolas
        • 2: lsh: hash sensible a la localidad, hash sensible a la localidad
      • ccumbral
        • entre [0,1]
        • El umbral para construir un gráfico de similitud, cuando la similitud es mayor que este valor, se construye un gráfico de similitud
      • ejecutar_cc
        • 0/1
        • Si realizar el cálculo de componentes conectados en el gráfico de similitud
      • ejecutar_pagerank
        • 0/1
        • Si se debe realizar el cálculo de clasificación de la página del mapa de similitud
      • correr_grado
        • 0/1
        • Ya sea para calcular la distribución de ángulos del gráfico de similitud
  • Parámetros relacionados con Faiss :

    • modo_faiss
      • calle
      • Faiss cadenas como HNSW32 (predeterminado)
    • faiss_param :
      • calle
      • Tales como: 'efSearch=175,nprobes=200' (especifique el parámetro faiss)
    • cuadro delimitador :
      • calle
      • recortar imagen antes de aplicar faiss
      • Por ejemplo:bounding_box='rows=100,cols=100,width=250,height=310' (las coordenadas de la esquina superior izquierda se dan en las filas y columnas), y el rango de la imagen de recorte [rows:rows+height , columnas:columnas+ancho]
  • distancia :

    • calle
    • Métricas de distancia para algoritmos de vecino más cercano
    • Distancia coseno (coseno, predeterminado), distancia euclidiana (euclidiana), distancia euclidiana al cuadrado (squared_euclidean), distancia Manhattan (manhattan)
  • umbral :

    • flotar
    • Umbral para medida de similitud
    • El valor predeterminado es 0,85, si es mayor que este valor, las imágenes se consideran muy similares, si es menor que este valor, no se registrarán como imágenes similares.
  • umbral_inferior :

    • flotar
    • Umbral para medir imágenes anormales (valores atípicos que están lejos de la distribución general)
    • Predeterminado 0.3
  • modelo_ruta :

    • calle
    • Ubicación opcional para archivos de modelo ONNX
    • No debería ser usado
  • versión :

    • bool, no es necesario pasar ningún parámetro
    • Ya sea para imprimir la información de la versión
  • vecinos_más_cercanos_k

    • En t
    • Predeterminado 2, cuántas imágenes similares encontrar para cada foto
  • modo_ejecutar

    • En t
    • 0/1/2, 3, 4, seleccione el software para ejecutar la función
    • 0: calcula el vector de características, la incrustación de NN y la similitud al mismo tiempo (predeterminado, pero para grandes conjuntos de datos, es más sensato dividir en varios pasos, de modo que algunos datos intermedios puedan conservarse incluso si se cometen errores)
    • 1.: Solo calcule el vector propio (se puede calcular en paralelo)
    • 2: solo calcule la similitud (es necesario leer el archivo de funciones existente): el parámetro input_dir se ignorará y work_dir debe apuntar a la ruta completa y el nombre del archivo de funciones
    • 3: Calcule el vector de características y la similitud (necesita leer el modelo NN de faiss.index): input_dir especifica la carpeta de imágenes para calcular la similitud, y work_dir apunta al modelo NN, que se usa para usar directamente el modelo NN obtenido en el conjunto de entrenamiento al nuevo para medir la similitud en el conjunto de prueba
    • 4: solo calcule la similitud (requiere el vector de características en 1 y el modelo NN en 2): work_dir apunta al archivo requerido
  • nn_proveedor :

    • tener/faiss
    • Elección del algoritmo del vecino más cercano
  • Parámetros relacionados con la división de subconjuntos de imágenes de computación paralela :

    • min_offset :
      • En t
      • Predeterminado -1, desplazamiento mínimo opcional para comenzar a iterar sobre la lista completa de archivos (subconjunto mínimo de imágenes).
    • compensación_máxima :
      • En t
      • Predeterminado -1, desplazamiento máximo opcional para comenzar a iterar sobre la lista completa de archivos (subconjunto máximo de imágenes).
  • valor de retorno :

    • 0/1
    • 0: éxito
    • 1: fracaso
  • Ejemplo :fastdup.run('/path/to/folder', nn_provider='turi', nnmodel='brute_force')

  • Salida visual :

    • Jupyter notebook puede obtener tablas y otros entornos obtienen informes html
    • 函数fastdup.create_duplicates_gallery(archivo_similaridad, ruta_guardar, num_images=20, descendente=Verdadero)
    • O fastdup.generate_duplicates_gallery(similarity_file, save_path, num_images=20, descending=True), el documento oficial se escribe dos veces y los nombres de función antes y después son inconsistentes
    • Dado que no hay input_dir en el parámetro, debe estar en la misma computadora que el cálculo anterior para garantizar que la ruta de la imagen de entrada sea exactamente la misma
    • archivo_de_similitud :
      • calle
      • El archivo csv de la similitud previamente calculada
    • guardar_ruta :
      • calle
      • Ubicación de almacenamiento de salida relacionada con la visualización
    • núm_imágenes :
      • En t
      • El número máximo de fotos similares, el valor predeterminado es 50
    • descendente :
      • bool
      • Predeterminado Verdadero, imprime de más similar a menos similar

Supongo que te gusta

Origin blog.csdn.net/weixin_53610475/article/details/130987179
Recomendado
Clasificación