训练CNN时如何去除重复项?

2024-02-12

我正在使用 CNN 解决图像分类问题。我有一个包含重复图像的图像数据集。当我用这些数据训练 CNN 时,它出现了过拟合。因此,我需要删除那些重复项。


我们粗略地称为重复的东西对于算法来说可能很难辨别。 您的重复项可以是:

  1. 精确重复
  2. 近乎精确的重复。 (对图像等进行少量编辑)
  3. 感知重复(相同的内容,但不同的视图、相机等)

No1和2更容易解决。第三,非常主观,仍然是一个研究课题。 我可以为No1和2提供解决方案。 两种解决方案都使用了优秀的图像哈希库:https://github.com/JohannesBuchner/imagehash https://github.com/JohannesBuchner/imagehash

  1. 精确重复 可以使用感知散列测量来找到精确的重复项。 phash 库在这方面非常擅长。我经常用它来清洁 训练数据。 用法(来自 github 站点)非常简单:
from PIL import Image
import imagehash

# image_fns : List of training image files
img_hashes = {}

for img_fn in sorted(image_fns):
    hash = imagehash.average_hash(Image.open(image_fn))
    if hash in img_hashes:
        print( '{} duplicate of {}'.format(image_fn, img_hashes[hash]) )
    else:
        img_hashes[hash] = image_fn
  1. 近乎精确的重复 在这种情况下,您必须设置一个阈值并比较哈希值与每个哈希值的距离。 其他。这必须通过对图像内容进行反复试验来完成。
from PIL import Image
import imagehash

# image_fns : List of training image files
img_hashes = {}
epsilon = 50

for img_fn1, img_fn2 in zip(image_fns, image_fns[::-1]):
    if image_fn1 == image_fn2:
        continue

    hash1 = imagehash.average_hash(Image.open(image_fn1))
    hash2 = imagehash.average_hash(Image.open(image_fn2))
    if hash1 - hash2 < epsilon:
        print( '{} is near duplicate of {}'.format(image_fn1, image_fn2) )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

训练CNN时如何去除重复项? 的相关文章

随机推荐

  • Android 通知上的表情符号

    我正在尝试在通知栏上显示表情符号 这是我的字符串 ue057 getString R string notification sent hey 我已经尝试过使用 Softbank 以及每种可能的格式 U 1F601 xF0 x9F x98
  • 在 Windows 上的 VSCode 中调试 Python C/C++ 扩展

    问题总结 我正在为 Python 开发一个自 C 扩展 以提高特定代码段的性能 我想调试这个扩展 但到目前为止还没有成功 我关注了几个链接 例如这是纳迪亚的 https nadiah org 2020 03 01 example debug
  • sklearn 维度问题“发现数组具有暗淡 3。预计估计器 <= 2”

    我正在尝试使用 KNN 将 wav 文件正确分类为两组 组 0 和组 1 我提取了数据 创建了模型 拟合了模型 但是当我尝试使用 predict 方法时 出现以下错误 Traceback most recent call last File
  • MAMP 与 Laravel Unix Socket

    我正在我的 laravel 应用程序的本地开发服务器上使用 MAMP 我试图弄清楚如何安全地设置我的服务器 这样我就不必在数据库连接 mysql 数组中使用以下内容 因为那应该只当我在我的开发服务器上时使用 当我将行添加到 mysql 数组
  • git merge 在cherry-pick之后如何工作?

    让我们想象一下我们有一个master branch 然后我们创建一个newbranch git checkout b newbranch 并做出两个新的承诺newbranch commit1 and commit2 然后我们切换到maste
  • GCC 中 -O0 和 -O1 的区别

    在编译一些代码时 我注意到 O0 和 O1 之间创建的汇编器存在很大差异 我想运行启用 禁用优化 直到找出导致汇编器发生某种变化的原因 如果我使用 fverbose asm 准确找出 O1 与 O0 相比启用了哪些标志 然后手动禁用它们 为
  • 如何删除输入日期的 x 和向上/向下箭头元素?

    我唯一需要在框中显示的是橙色三角形 并且我不确定是否需要 CSS 或其他内容来删除三角形左侧的两个元素 有办法这样做吗 我只是使用输入类型date Fiddle http jsfiddle net 5M2PD 1 http jsfiddle
  • 队列性能明智哪个是更好的实现 - 数组或链表

    当我必须插入很少的元素时 哪种方式可以更快地入队和出队 数组比链表更好吗 我需要插入一些元素 并且必须从队列中删除并读取该删除的元素 如果它是数组 每次删除元素时我可能都必须修改索引 插入和删除也可能同时发生 从下面的案例来看 哪一个更好呢
  • 有什么理由避免 return 语句

    有时我会看到大段的 Scala 代码 其中包含多个嵌套级别的条件和匹配 使用显式 return 退出函数会更加清晰 避免那些显式的 return 语句有什么好处吗 A return may be通过抛出异常来实现 所以它may have与声
  • 我需要帮助设置 .NET HttpWebRequest 超时

    我的目标是在最短的时间内从多达 6000 个 URL 中获得答案 它运行得非常好 5200 个 LAN 地址需要 12 秒 直到开始出现一些延迟 我的代码最多同时使用 20 个 HttpWebRequest BeginGetResponse
  • 如何使用 R 找到最适合的圆/椭圆?

    我一直在阅读一些将圆适合数据的方法 例如this http www cs bsu edu homepages kerryj kjones circles pdf 我想看看这些方法如何在真实数据上发挥作用 并考虑使用 R 来实现这一点 我尝试
  • 为什么我的文本文件不断覆盖其中的数据?

    我试图从产品的 Facebook 页面中提取一些数据并将其全部转储到文本文件中 但我发现该文件不断用数据覆盖自身 我不确定这是分页问题还是我必须制作多个文件 这是我的代码 Modules import requests import fac
  • 不同图像方向和纵横比的 CollectionView 布局?

    我想知道我们如何使用 CollectionView 来显示不同尺寸 长宽比和方向的图像 有没有办法在这些图像中找到 匹配 看一下 DeviantArt iOS 应用程序的屏幕截图 您可能已经注意到 具有相同高度并且可以安装在屏幕中的图像位于
  • 如何获取给定月份的每个星期一?

    如何获取给定月份的每个 星期一 一个例子 输入 2017 年 7 月 11 日 11 07 2017 输出 3 10 17 24 31 2017年7月3日 星期一2017年7月10日 星期一2017年7月17日 星期一2017年7月24日
  • 读取无符号整数时如何将负数检测为解析错误?

    我想从 C iostream 中读取以 10 为基数 十进制 表示的无符号整数 并至少进行基本的错误检测 在我看来 在这种情况下 减号显然是一个错误 因为无符号整数没有符号 然而 gcc却有不同的看法 include
  • 避免节流 dynamoDB

    我是云计算的新手 但有一个问题 我将要描述的机制是否存在或可以创建 Dynamodb 已配置吞吐量 例如 100 次写入 秒 当然 在现实世界的应用程序中 实际吞吐量是非常动态的 几乎永远不会是您配置的 100 次写入 秒 我在想 dyna
  • 将 MS-Access 数据库转换为 SQL 脚本的工具

    我们的软件包使用MS Access数据库 这个数据库已经修改了很多次 所以 光看文件有点复杂 表之间的关系很小 无论如何 有没有一种方法或程序可以将此 mdb 文件转换为 SQL 脚本 目前任何类型的 SQL 脚本都可以执行此操作 Than
  • 找不到适用于 GeoJsonPoint 类型的构造函数

    很难弄清楚我做错了什么 遗憾的是我曾经让它工作过 但无法确定我改变了什么破坏了它 据我了解 现在应该完全支持 有问题的对象 Document public class Place public final static String URI
  • C代码模块化有哪些方法?

    随着项目规模的扩大 您知道哪些方法 实践和约定可以模块化 C 代码 创建仅包含使用模块所需内容的头文件 在相应的 c 文件中 将任何不应该在外部可见的内容 例如辅助函数 设为静态 对外部可见的所有内容的名称使用前缀有助于避免命名空间冲突 如
  • 训练CNN时如何去除重复项?

    我正在使用 CNN 解决图像分类问题 我有一个包含重复图像的图像数据集 当我用这些数据训练 CNN 时 它出现了过拟合 因此 我需要删除那些重复项 我们粗略地称为重复的东西对于算法来说可能很难辨别 您的重复项可以是 精确重复 近乎精确的重复