AI办公自动化:相似照片批量智能删除

电脑中有大量手机照片,要批量删除其中相似度高的,首先得有一个分析照片相似度的算法和模型。CLIP(Contrastive Language-Image Pre-Training)模型是由OpenAI在2021年发布的一种多模态预训练神经网络,旨在通过对比学习方法将图像和文本进行联合训练,从而实现对图像和文本之间关联性的理解和匹配。CLIP模型的核心思想是通过对比学习(Contrastive Learning)来学习大量的图像和对应的文本描述,形成一个能够理解两者之间关联的通用模型。具体来说,CLIP采用了两个独立的编码器:一个用于处理文本,另一个用于处理图像。这两个编码器分别提取文本和图像特征,并基于比对学习让模型学习到文本-图像的匹配关系。

在deepseek中输入提示词:

一步步思考,写一个Python脚本,完成批量删除相似照片的功能,具体步骤如下:

打开文件夹:F:\dpic;

读取文件夹里面所有的图像文件;

用CLIP提取文件夹所有图像的特征,然后计算它们的余弦相似度;

相似高的2张以上图片,只保留其中一个最佳图片,删除其余图片;

设置相似度阈值> 0.87

注意:每一步都要输出信息到屏幕上

源代码:

import os

from PIL import Image

import numpy as np

import torch

from transformers import CLIPProcessor, CLIPModel

from sklearn.metrics.pairwise import cosine_similarity

# 定义文件夹路径

folder_path = "F:\\dpic"

# 读取文件夹中的所有图像文件

image_files = [f for f in os.listdir(folder_path) if f.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.JPG'))]

print(f"Found {len(image_files)} image files.")

# 加载CLIP模型和处理器

model_name = "openai/clip-vit-base-patch32"

model = CLIPModel.from_pretrained(model_name)

processor = CLIPProcessor.from_pretrained(model_name)

# 加载图像并提取特征

images = []

for file in image_files:

img_path = os.path.join(folder_path, file)

try:

img = Image.open(img_path)

inputs = processor(images=img, return_tensors="pt")

with torch.no_grad():

image_features = model.get_image_features(**inputs)

images.append((file, image_features.cpu().numpy().squeeze()))

except Exception as e:

print(f"Error loading image {file}: {e}")

print(f"Loaded {len(images)} images.")

# 提取图像特征

features = [img[1] for img in images]

# 计算余弦相似度

similarity_matrix = cosine_similarity(features)

# 删除相似度高的多余图像

to_delete = set()

for i in range(len(similarity_matrix)):

for j in range(i + 1, len(similarity_matrix)):

if similarity_matrix[i][j] > 0.87: # 设置相似度阈值

to_delete.add(images[j][0])

for file in to_delete:

file_path = os.path.join(folder_path, file)

try:

os.remove(file_path)

print(f"Deleted {file}")

except Exception as e:

print(f"Error deleting {file}: {e}")

print("Done.")

程序运行结果:

if similarity_matrix[i][j] > 0.87: # 这里设置相似度阈值,如果觉得不满意,可以调高或者调低。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值