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

news2024/11/29 12:53:34

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.简单使用

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

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

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

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

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

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

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

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

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

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

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

在这里插入图片描述

  • 表格形式查看相似图片,方便自定义可视化
#表格形式查看
fd.similarity()

在这里插入图片描述

3.详细的python API 文档

  • 官方全英github文档

  • input_dir

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

    • 字符串
    • 用来保存中间结果和最终输出的目录
      • 特征向量文件:默认文件名 features.dat,n行576列的二进制numpy数组
        由于二进制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

    • int
    • 默认2,对每张照片寻找多少张相似图片
  • 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.coloradmin.cn/o/606953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Kafka - 流式处理

文章目录 概述什么是流式处理流式处理的一些概念时间状态流和表的二元性时间窗口 流式处理的设计模式单个事件处理使用本地状态多阶段处理和重分区使用外部查找——流和表的连接流与流的连接乱序的事件重新处理 概述 Kafka被广泛认为是一种强大的消息总线,可以可靠…

Zabbix(一)

介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 功能组件 Server : Zabbix server是zabbix软件的核心组件 Zabbix agent向其报告可用性、系统完整性和统计信息 Zabbix server存储所有的配置信息、统计信息和操作信…

chatgpt赋能python:Python取出列表中的若干元素

Python取出列表中的若干元素 Python是一个功能强大且易于学习的编程语言,具有广泛的应用领域。在数据科学和机器学习中,Python是一个非常流行的语言,因为它具有许多用于处理数据和矩阵运算的库,例如NumPy和pandas。在Python的列表…

chatgpt赋能python:使用Python向微信发送信息的方法详解

使用Python向微信发送信息的方法详解 Python作为一种广泛应用于科学计算、数据处理等多个领域的编程语言,也可以用于自动化工作流程和自动发送微信消息等操作,大大提高了工作效率。如果你想在日常工作中用Python向微信群或个人发送自定义信息&#xff0…

linux网络设置

文章目录 一、查看网络配置1.查看网络接口信息——ifconfig1.1查看所有本机的网络的网络设备1.2设置网络接口参数1.3对指定的设备开启或关闭 2.查看主机名称——hostname2.1查看或临时设置当前主机名2.2永久设置主机名 3.查看路由表条目——route3.1查看当前主机路由表3.2添加路…

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

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

阿里云 Windows Server 2022 安装 Docker

阿里云Windows Server 2022 安装 Docker 文章目录 情景尝试正解 安装Docker管理工具安装Docker重启系统配置Docker系统路径配置Docker引擎(也许不用)启动Docker服务 情景 情景:最近一直在搞微服务,团队的服务器是阿里云的 Windows Server 2022&…

chatgpt赋能python:Python发展史:从诞生到井喷的开源之路

Python发展史:从诞生到井喷的开源之路 1. Python诞生的背景和历史 Python作为一种高级动态编程语言,在世界上得到了广泛应用,其诞生与发展也是有着自己的背景和历史的。20世纪90年代初期,著名的荷兰数学家Guido van Rossum开发了…

操作系统之文件管理

目录 认识文件管理 文件的逻辑结构 文件目录 文件的物理结构 文件存储空间管理 文件的基本操作 文件共享 文件保护 文件系统的全局结构 虚拟文件系统 内容摘自:4.1_1_初识文件管理_哔哩哔哩_bilibili 认识文件管理 文件——就是一组有意义的信息/数据集合…

chatgpt赋能python:Python可以用C语言吗?——一份详细解读

Python可以用C语言吗?——一份详细解读 Python和C语言是两种常见而重要的编程语言。Python被广泛应用于各种领域,从人工智能到数据科学,而C语言则是系统编程,操作系统和编译器方面最受欢迎的语言之一。许多人认为Python和C语言没…

pikachu靶场总结

目录 一.暴力破解 1.基于表单的暴力破解 2.验证码绕过(on server) 3.验证码绕过(client) 4.token防爆破 二.Cross-Site Scripting 1.先了解XSS 2.反射型xss(get) 3.反射型xss(post&…

[SPSS] SPSS统计分析软件简介

SPSS的英文缩写来源于以下两个 ① Statistical Package for Social Science(社会科学统计软件包) ② Statistical Product and Service Solutions(统计产品与服务解决方案) SPSS是一种专业的统计分析软件。为用户提供了直观的图形化菜单界面,用户的数据管理和统计…

C++——多态与虚表

目录 1.多态的实现 2.虚表 2.1虚函数重写是怎么实现的 2.2多态的原理 2.3静态绑定与动态绑定 3.单继承体系中的虚函数表 ​编辑4.多继承体系中的虚函数表 5.菱形继承的虚函数表 6.菱形虚拟继承的虚函数表 1.多态的实现 在C中,要想实现多态,必…

认识elasticSearch并安装

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

solr快速上手:配置从mysql同步数据(五)

0. 引言 上一节我们已经配置了新的索引,但是数据还是手动添加的,并没有实现自动从数据库同步,所以这一节,继续来实现从mysql同步数据到solr solr快速上手:solr简介及安装(一) solr快速上手&a…

chatgpt赋能python:Python中取某个元素的技巧

Python 中取某个元素的技巧 作为一种强大而灵活的编程语言,Python 常常被用来处理各种数据集合,如列表、元组、字典等。在处理这些数据集合的过程中,取某个元素的需求很常见,同时也有多种实现方法。在本文中,我们将介…

python学习-进阶基本知识点总结

(一)正则表达式 1、正则表达式 字符类 [abc]:匹配 “a”、“b” 或 “c” 中的任意一个字符。abc:除了 “a”、“b” 和 “c” 以外的任何字符。[a-z]:匹配任何小写字母。[A-Z]:匹配任何大写字母。[0-9]&…

第6节:obj/fbx/shp等转3dtiles(免费转换工具+视频)

推介使用cesiumlab 进行转换(可免费转换,含转换结果预览),网上也看了很多转换工具,要么操作安装不方便,要么转换出来效果不理想。 1、下载cesiumlab工具 下载地址 2、启动cesiumlab,进行登录访问(网页版) 没有账号的可以用手机号注册一个 3、 选择通用模型切片 …

恒容容器放气的瞬时流量的计算与合金氢化物放氢流量曲线的计算

有时候,你会遇到一个问题,该问题的描述如下: 你有一个已知体积的容器,设容器体积为V,里面装有一定压力(初始压力)的气体,如空气或氢气等,设初始压力为1MPa,容器出口连接着一个阀门开…

数据库关系操作集合

文章目录 传统集合运算1:联合(UNION)2:差集(EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL)3:交集(INTERSECT或INNER JOIN)4:笛卡尔积(JOIN) 专门集合运算1:选择(SELEC…