本项目开源且上传至Github:CrystalChanB31/clip_vit-l_recognize_mimi_wangwang: P5111181-clip-vit-large-patch14识别大学猫狗练习项目
0.数据采集
因为是练习项目,所以数据采集比较少,一共18张相片
素材来源:
- 学10咪咪
- 浙江农林大学公众号推文沉浸式体验“动物学长”的幸福生活!原来,浙江农林大学校园还是一个生态和谐的“动物家园”!


















*本相片的采集遵守动物伦理法案。没有任何一只动物在数据采集过程中受到伤害。
1.模型的使用和选择
训练集采用已经训练好的模型:
https://huggingface.co/openai/clip-vit-large-patch14
2.文件结构
-images
--用于测试的(18张)图片
-test.py
-requirements.txt
3.模型的代码
微调示例代码:
from PIL import Image
import requests
import torch
from transformers import CLIPProcessor, CLIPModel
import os
#加载模型和处理器
model_name = "openai/clip-vit-large-patch14"
model = CLIPModel.from_pretrained(model_name)
processor = CLIPProcessor.from_pretrained(model_name,use_fast=True)
text_labels=["a photo of a cat", "a photo of a dog"]
#准备图片
image_directory = "./images/"
try:
all_files = os.listdir(image_directory)
except:
print(f"无法访问目录: {image_directory}")
exit(1)
image_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.gif')
image_files = [f for f in all_files if f.lower().endswith(image_extensions)]
if not image_files:
print(f"目录中没有找到图片文件: {image_directory}")
exit(1)
print(f"在目录中找到 {len(image_files)} 张图片。")
print("="*40)
#遍历每张图片进行处理
for image_file in image_files:
image_path = os.path.join(image_directory, image_file)
try:
# 加载图片
image = Image.open(image_path).convert("RGB")
except Exception as e:
print(f"无法打开图片文件 {image_file}: {e}")
print("---")
continue
print(f"正在处理图片: {image_file}")
# 准备文本标签并进行推理
inputs = processor(text=text_labels, images=image, return_tensors="pt", padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image # 这是图片与文本的相似度分数
probs = logits_per_image.softmax(dim=1) # 我们可以使用 Softmax 来获取标签的概率分布
best_match_index = probs.argmax(dim=1).item()
best_match_label = text_labels[best_match_index]
best_match_prob = probs[0, best_match_index].item() # 获取该标签的概率值
#打印结果
print(f"图片文件: {image_file}")
print(f"分析的标签: {text_labels}")
print(f"结果: 这张图片最匹配的标签是 -> '{best_match_label}'")
print(f"匹配概率: {best_match_prob * 100:.2f}%")
print("---")
print("="*40)
print("---所有图片处理完成。---")
4.运行结果
在目录中找到 18 张图片。
========================================
正在处理图片: 13.jpg
图片文件: 13.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.86%
---
正在处理图片: 10.jpg
图片文件: 10.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.81%
---
正在处理图片: 9.jpg
图片文件: 9.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.90%
---
正在处理图片: 4.jpg
图片文件: 4.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.70%
---
正在处理图片: 8.jpg
图片文件: 8.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.79%
---
正在处理图片: 23.png
图片文件: 23.png
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a dog'
匹配概率: 99.70%
---
正在处理图片: 7.jpg
图片文件: 7.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.75%
---
正在处理图片: 11.jpg
图片文件: 11.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.78%
---
正在处理图片: 21.jpg
图片文件: 21.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a dog'
匹配概率: 99.51%
---
正在处理图片: 14.jpg
图片文件: 14.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.82%
---
正在处理图片: 12.jpg
图片文件: 12.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.87%
---
正在处理图片: 3.jpg
图片文件: 3.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.64%
---
正在处理图片: 6.jpg
图片文件: 6.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.73%
---
正在处理图片: 24.jpg
图片文件: 24.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a dog'
匹配概率: 97.43%
---
正在处理图片: 22.jpg
图片文件: 22.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a dog'
匹配概率: 98.92%
---
正在处理图片: 1.jpg
图片文件: 1.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.87%
---
正在处理图片: 5.jpg
图片文件: 5.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.79%
---
正在处理图片: 2.jpg
图片文件: 2.jpg
分析的标签: ['a photo of a cat', 'a photo of a dog']
结果: 这张图片最匹配的标签是 -> 'a photo of a cat'
匹配概率: 99.77%
---
========================================
---所有图片处理完成。---
模型在大学动物识别上取得了100%*的准确率
*仅针对参与训练的18张图片。在实际应用中,测试的图片应当远远大于这个数据,因此该准确率具有数量局限性。
5.练习意义
为后续模型的使用打下了环境基础。
微信扫描下方的二维码阅读本文

