Python筛选重复图片
大家好,我素洪小帅~
在训练一些模型时,往往训练集数据存在一些错误数据.比如出现重复的图片,并且这两张图片的标签还不一样,这样会降低模型的准确率.那么该如何找出重复的图片呢?我总结了以下三种方法.
- 利用图像的哈希值
- 特征提取
- 直接比较像素值的方式来进行
方法1:使用图像哈希(Perceptual Hashing)
图像哈希(如感知哈希、差异哈希等)能够将图片转换成一个固定长度的哈希值,从而可以通过比较哈希值来快速找到相同或相似的图片。
1. 安装所需库
首先,安装 ImageHash
和 Pillow
库,这些库可以帮助你计算图像的哈希值。
pip install ImageHash Pillow
2. 使用图像哈希进行相似图片比较
import os
import imagehash
from PIL import Image
# 获取数据集中所有图片文件路径
image_folder = "path/to/your/images" # 替换为实际的图片文件夹路径
image_files = [f for f in os.listdir(image_folder) if f.endswith(('.png', '.jpg', '.jpeg'))]
# 用于存储哈希值及其对应的图片路径
hashes = {
}
# 查找重复的图片
duplicates = []
for img_file in image_files:
img_path = os.path.join(image_folder, img_file)
img = Image.open(img_path)
# 计算哈希值(使用感知哈希算法)
img_hash = imagehash.phash(img)
if img_hash in hashes:
# 如果该哈希值已存在,则表示找到了重复的图片