FastBup:计算机视觉大型图像数据集分析工具

0.简介

  • 官方github网址
  • 项目目的:当前大规模图像数据集一团糟,数据量巨大但质量堪忧,有时候训练集、验证集、测试集会有重复数据造成数据泄露。FastBup可以识别重复项、近似重复项、异常图像、错误标注、异常值,在cpu上就可以处理数百万的图片。

1.安装

  • 支持环境:Python 3.7 and 3.8 (Ubuntu 20.04 or Ubuntu 18.04 or Mac M1)
  • 安装python3.8 -m pip install fastdup
  • kaggle上安装!pip install fastdup matplotlib -Uq

2.简单使用

  • 基本
python">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)
  • 结果保存
python">#结果保存
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
  • 可视化显示重复图像,距离1代表完成相同,0代表完全不同,0.98以上认为是几乎相同
python">#可视化显示重复图像,距离1代表完成相同,0代表完全不同
fd.vis.duplicates_gallery(num_images=50)

在这里插入图片描述- 可视化显示异常图

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

在这里插入图片描述- 查看最暗的图片

python">fd.vis.stats_gallery(metric='dark')

在这里插入图片描述- 查看最亮的图片

python">fd.vis.stats_gallery(metric='bright')

在这里插入图片描述- 查看最模糊的图片

python">fd.vis.stats_gallery(metric='blur')

在这里插入图片描述- 可视化相似族,将相似图片划分为一簇

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

在这里插入图片描述

python">#表格形式查看
fd.similarity()

在这里插入图片描述

python_API__67">3.详细的python API 文档

  • 官方全英github文档

  • input_dir

    • 字符串
    • 图片或视频的文件夹,会递归地处理该文件夹下的所有图片
    • 或者是一张纸图片的完整路径,每个图片占一行
  • work_dir

    • 字符串
    • 用来保存中间结果和最终输出的目录
      • 特征向量文件:默认文件名 features.dat,n行576列的二进制numpy数组
        由于二进制python不方便操作,所以提供了函数:

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

        返回的是长度为x的图片全程的列表和x行576列的np数组

      • 图片完整路径与特征向量映射的csv文件:默认文件名features.dat.csv(图片的处理顺序可能因为系统不同而发生改变,并且有些图片损坏无法计算特征,所以需要这个映射文件记录)

      • features.bad.csv里面会记录无法生成特征向量的损坏图像

      • 相似对列表:similarity.csv,三列(from,to,distance),并按distance降序排序,最大为1,表示两张图片完全一致(类似余弦距离)

      • faiss.index:使用faiss时生成的索引文件

      • components_info.csv:创建连通图时的每个联通节点(图片)

      • connected_components.csv:第一列是features.dat.csv文件中的索引(图像列表),文件根据列表排序,包括pagerank输出、角度分布和连通图的参数

  • compute

    • 字符串
    • 使用cpu还是gpu计算,默认是cpu
  • verbose

    • bool
    • 是否详细。默认False
  • num_threads

    • int
    • 线程数,默认-1,会自动设为cpu核数
  • num_images

    • int
    • 要计算的图片数,默认-1,计算输入路径下的所有图片
  • turi_param

    • str
    • turi的可选附加参数
      • nnmodel
        • 0/1/2
        • 聚类特征使用的最近邻模型
        • 仅对turi有效,对faiss无效
        • 0:brute_force,准确的
        • 1:ball_tree
        • 2:lsh:locality sensitive hashing,局部敏感散列
      • ccthreshold
        • [0,1]之间
        • 构建相似性图的阈值,相似度大于该值时构建相似度图
      • run_cc
        • 0/1
        • 是否进行相似度图上的连通分量计算
      • run_pagerank
        • 0/1
        • 是否进行相似图页面排名计算
      • run_degree
        • 0/1
        • 是否进行相似图角度分布计算
  • faiss相关参数

    • faiss_mode
      • str
      • HNSW32(默认)等faiss字符串
    • faiss_param
      • str
      • 如: ‘efSearch=175,nprobes=200’(指定faiss参数)
    • bounding_box
      • str
      • 在应用faiss前裁剪图像
      • 如:bounding_box=‘rows=100,cols=100,width=250,height=310’(行和列给出左上角坐标),裁剪图像范围 [rows:rows+height, cols:cols+width]
  • distance

    • str
    • 最近邻算法的距离度量
    • 余弦距离(cosine,默认)、欧几里得距离(euclidean)、平方欧几里得距离(squared_euclidean)、曼哈顿距离(manhattan)
  • threshold

    • float
    • 相似程度衡量的阈值
    • 默认0.85,大于该值认为图片非常相似,小于该值不会记为相似图片
  • lower_threshold

    • float
    • 衡量异常图片的阈值(和总体分布相比较远的离群点)
    • 默认0.3
  • model_path

    • str
    • ONNX模型文件的可选位置
    • 不应该被使用
  • version

    • bool,不需要传入任何参数
    • 是否打印版本信息
  • nearest_neighbors_k

  • run_mode

    • int
    • 0/1/2、3、4,选择软件执行功能
    • 0:同时计算特征向量、NN embedding和相似度(默认,但对于大型数据集,更明智的办法是分成几步,这样即使出错也能保留下来部分中间数据)
    • 1.:只计算特征向量(可并行计算)
    • 2:只计算相似度(需要读取已有的特征文件):input_dir参数会被忽略,work_dir需要指向特征文件的完整路径和文件名
    • 3:计算特征向量和相似度(需读取faiss.index的NN模型):input_dir指定要计算相似度的图片文件夹,work_dir指向NN模型,用来将训练集上得到的NN模型直接用到新的测试集上来衡量相似度
    • 4:只计算相似度(需1里面的特征向量和2里面的NN模型):work_dir指向所需文件
  • nn_provider

    • turi/faiss
    • 最近邻算法的选择
  • 与并行计算图像子集划分有关参数

    • min_offset
      • int
      • 默认-1,在完整文件列表上开始迭代的可选最小偏移量(最小图像子集)。
    • max_offset
      • int
      • 默认-1,在完整文件列表上开始迭代的可选最大偏移量(最大图像子集)。
  • 返回值

    • 0/1
    • 0:成功
    • 1:失败
  • 举例fastdup.run('/path/to/folder', nn_provider='turi', nnmodel='brute_force')

  • 可视化输出

    • jupyter notebook能得到表格,其他环境得到的是html报告
    • 函数fastdup.create_duplicates_gallery(similarity_file, save_path, num_images=20, descending=True)
    • 或者fastdup.generate_duplicates_gallery(similarity_file, save_path, num_images=20, descending=True),官方文档写了两次,前后函数名字不一致
    • 由于参数里没有input_dir,所以要与前面的计算在同一台电脑上,保证输入图片路径完全一致
    • similarity_file
      • str
      • 之前计算出的相似度的csv文件
    • save_path
      • str
      • 可视化相关输出保存位置
    • num_images
      • int
      • 最多相似的照片数量,默认50
    • descending
      • bool
      • 默认True,从最相似到最不相似打印

http://www.niftyadmin.cn/n/393625.html

相关文章

深度学习总结——用自己的数据集微调CLIP

CLIP概述 CLIP(Contrastive Language-Image Pretraining)是由OpenAI开发的一种深度学习模型,用于将图像和自然语言文本进行联合编码。它采用了多模态学习的方法,使得模型能够理解图像和文本之间的语义关系。 它的核心思想是将图…

认识elasticSearch并安装

一、介绍 定义:简称es,本质是一个开源的nosql数据库。主要用于全文检索,所以我们又称它为搜索引擎框架; 用途:实时数据搜索、日志采集分析 特点: 检索快。面对PB级的海量数据,用传统sql方式…

NginxFoundation

NginxFoundation 一. Nginx模块 模块划分1.1 Nginx的模块从结构上分为核心模块、基础模块和第三方模块1.2 Nginx的模块从功能上分为如下四类1.3 Nginx的核心模块主要负责建立nginx服务模型、管理网络层和应用层协议、以及启动针对特定应用的一系列候选模块。其他模块负责分配给…

chatgpt赋能python:Python取消赋值:让你的代码更清晰简洁

Python取消赋值:让你的代码更清晰简洁 在Python编程中,我们经常需要使用赋值语句对变量进行赋值。但在某些情况下,我们也会发现需要取消赋值,即将已经赋过值的变量重新设为未赋值状态。这时,Python提供了一种特殊的语…

chatgpt赋能python:Python变量赋值

Python 变量赋值 在 Python 中,我们可以使用多种符号来给变量赋值。本文将介绍这些符号以及它们在编程中的应用。 等号() 在 Python 中,我们最常用的符号是等号(),它可以将一个值赋给一个变量…

计组 第二章错题 2.3 浮点数的表示与运算

4.变形补码就是采用双符号位 ,不能避免溢出,只是更方便判断是否溢出 5. 9.B 2047:阶码全1表示正无穷 -(11-2*(-52)) 10.没有想到用移位 10100是20 12.移码看做无符号数 B、无论有无规格化 都要对阶,并没有方便浮…

皮卡丘File Inclusion

1.File Inclusion(文件包含漏洞)概述 文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了: incl…

声音的变奏:深入理解ffmpeg音频格式转换的奥秘与应用

声音的变奏:深入理解音频格式转换的奥秘与应用 1. 音频数据的本质:声音与数字 (The Nature of Audio Data: Sound and Numbers)1.1 音频的物理与数学基础(Physics and Mathematics of Sound)1.2 数字音频格式的初探(Ex…