返回模型
说明文档
房间图像相似度模型
用于测量客房图像相似度的 Siamese 网络模型。
模型概述
该模型用于测量住宿客房图像之间的相似度,以识别相同的物理客房。使用基于 EfficientNetV2 的 Siamese 网络来计算图像相似度。
模型信息
- 模型名称:
similarity_model_0.6 - 基础模型:
timm/tf_efficientnetv2_s - 图像大小: 224x224
- 通道: RGB (3通道)
- 归一化: ImageNet 标准 (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
使用方法
使用 Python 调用模型
import torch
import onnxruntime as ort
import numpy as np
from PIL import Image
from torchvision import transforms
# 加载 PyTorch 模型
model = torch.load('similarity_model_0.6.pth', map_location='cpu')
model.eval()
# 使用 ONNX 模型 (更快的推理)
onnx_session = ort.InferenceSession('similarity_model_0.6.onnx')
# 图像预处理
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
def calculate_similarity_pytorch(img1_path, img2_path):
\"\"\"使用 PyTorch 模型计算相似度\"\"\"
img1 = transform(Image.open(img1_path)).unsqueeze(0)
img2 = transform(Image.open(img2_path)).unsqueeze(0)
with torch.no_grad():
similarity = torch.sigmoid(model(img1, img2))
return similarity.item()
def calculate_similarity_onnx(img1_path, img2_path):
\"\"\"使用 ONNX 模型计算相似度 (推荐)\"\"\"
img1 = transform(Image.open(img1_path)).numpy()
img2 = transform(Image.open(img2_path)).numpy()
# ONNX 模型推理
input_feed = {
'input1': img1.astype(np.float32),
'input2': img2.astype(np.float32)
}
similarity = onnx_session.run(None, input_feed)[0]
return similarity[0][0]
# 示例使用
similarity_score = calculate_similarity_onnx(\"room1.jpg\", \"room2.jpg\")
print(f\"相似度: {similarity_score:.4f}\")
批量处理
def calculate_batch_similarity(image_pairs):
\"\"\"一次性计算多对图像的相似度\"\"\"
similarities = []
for img1_path, img2_path in image_pairs:
similarity = calculate_similarity_onnx(img1_path, img2_path)
similarities.append(similarity)
return similarities
# 示例
image_pairs = [
(\"room1.jpg\", \"room2.jpg\"),
(\"room3.jpg\", \"room4.jpg\"),
(\"room5.jpg\", \"room6.jpg\")
]
similarities = calculate_batch_similarity(image_pairs)
for i, sim in enumerate(similarities):
print(f\"第 {i+1} 对相似度: {sim:.4f}\")
模型文件
similarity_model_0.6.pth: PyTorch 模型文件similarity_model_0.6.onnx: ONNX 模型文件 (推理优化)similarity_model_0.6_model_info.json: 模型元数据similarity_model_0.6_inference_example.py: 推理示例代码
性能
- 准确率: 90% 以上
- F1 Score: 0.90 以上
- 处理速度: 500 图像对/秒以上 (基于 ONNX 模型)
- 内存使用: 2GB 以下 (GPU 推理时)
训练数据
该模型使用以下数据进行训练:
预训练 (Pretraining)
- 正样本对: 原始图像与增强后的图像 (同一客房)
- 负样本对: 不同客房的图像
微调 (Fine-tuning)
- 正样本对: 同一客房的不同图像
- 负样本对: 不同客房的图像
模型架构
- 骨干网络: EfficientNetV2-Small
- Siamese 结构: 使用相同的骨干网络处理两张图像
- 损失函数: Focal Loss (针对不平衡数据集优化)
- 输出: 0-1 之间的相似度分数
预处理要求
- 图像大小: 224x224 像素
- 颜色空间: RGB
- 归一化: 使用 ImageNet 标准值
- 裁剪: 中心裁剪 (center crop)
- 支持格式: JPG, PNG, JPEG
许可证
Apache 2.0 License
参考
该模型是 Room Clusterer 项目的一部分。更多信息请参考 项目仓库。
使用案例
直接使用
该模型可直接用于以下用途:
- 客房图像去重: 识别同一客房不同角度/光照的图像
- 住宿图像聚类: 按相似客房类型对图像进行分组
- 图像相似度搜索: 查找与给定图像最相似的图像
- 质量管理: 验证客房图像的一致性
下游使用
可以基于该模型构建以下应用:
- 住宿管理系统: 客房图像自动分类与管理
- 旅游平台: 基于客房图像的推荐系统
- 房地产平台: 搜索相似的客房风格
- 图像数据库: 大规模图像相似度搜索引擎
使用范围限制
该模型不适用于以下用途:
- 其他领域图像: 测量非客房类型图像的相似度
- 实时视频: 测量视频帧之间的相似度
- 3D 空间分析: 利用空间关系或深度信息
偏差、风险和限制
已知限制
- 图像质量依赖: 低质量或噪声较多的图像可能导致性能下降
- 光照条件: 比较不同光照条件的图像时准确率可能降低
- 角度变化: 即使是同一客房,拍摄角度差异较大时相似度可能被测得较低
- 领域专用: 该模型专门针对住宿客房图像,在其他领域性能有限
建议
- 图像预处理: 对图像进行一致的尺寸和质量预处理
- 阈值设置: 根据用途设置适当的相似度阈值 (通常为 0.7-0.8)
- 批量处理: 处理大量图像时建议使用 ONNX 模型
开始使用模型
请参考上方"使用方法"部分的代码示例开始使用该模型。
训练细节
训练数据
- 数据集大小: 约 50,000 张客房图像
- 图像对: 200,000 对正样本对, 200,000 对负样本对
- 数据增强: 通过旋转、裁剪、颜色调整等进行数据增强
- 标注: 基于客房 ID 的自动标注
训练流程
预处理
- 图像大小调整: 调整为 224x224 像素
- 中心裁剪: 按正方形比例进行中心裁剪
- 归一化: 使用 ImageNet 标准值进行归一化
- 数据增强: 训练过程中应用随机变换
训练超参数
- 批次大小: 64
- 学习率: 1e-4 (预训练), 5e-5 (微调)
- 轮数: 30 (预训练), 15 (微调)
- 优化器: AdamW
- 调度器: Cosine Annealing
- 正则化: Dropout (0.1), Weight Decay (1e-4)
速度、大小和时间
- 训练时间: 约 8 小时 (基于 RTX 3080)
- 模型大小: 25MB (PyTorch), 12MB (ONNX)
- 推理速度: 500 对/秒 (ONNX, CPU), 2000 对/秒 (ONNX, GPU)
评估
测试数据、因素和指标
测试数据
- 验证集: 10,000 对图像
- 测试集: 5,000 对图像
- 数据划分: 按客房 ID 划分以防止数据泄露
因素
- 客房类型: 各类客房类型的性能分析
- 图像质量: 高清/低清图像的性能对比
- 光照条件: 自然光/人工光条件下的性能
指标
- 准确率: 所有预测中正确预测的比例
- 精确率: 预测为相似的样本中实际相似的比例
- 召回率: 实际相似的样本中被正确预测的比例
- F1-Score (F1分数): 精确率和召回率的调和平均值
- AUC-ROC: ROC 曲线下面积
结果
摘要
- 整体准确率: 92.3%
- F1-Score: 0.91
- AUC-ROC: 0.95
- 推理速度: 500 对/秒 (ONNX, CPU)
模型检查
可解释性
- Grad-CAM: 可视化模型关注的图像区域
- 相似度分布: 分析正/负样本对的相似度分数分布
- 错误分类分析: 分析被错误分类案例的模式
技术规格
模型架构和目的
- 架构: Siamese Network with EfficientNetV2-Small backbone
- 目的: 测量图像对的相似度
- 输出: 0-1 之间的相似度分数
- 损失函数: Focal Loss (α=0.25, γ=2.0)
计算基础设施
硬件
- GPU: NVIDIA RTX 3080 (10GB VRAM)
- CPU: Intel i7-10700K
- RAM: 32GB DDR4
- 存储: 1TB NVMe SSD
软件
- Python: 3.9
- PyTorch: 1.12.0
- ONNX Runtime: 1.12.0
- CUDA: 11.6
- 其他: timm, torchvision, PIL
引用
如果您使用该模型,请按以下格式引用:
BibTeX:
@misc{room_image_similarity_model,
title={Room Image Similarity Model: Siamese Network for Hotel Room Image Comparison},
author={Your Name},
year={2024},
howpublished={Hugging Face Model Hub},
url={https://huggingface.co/ondame/room-image-similarity}
}
APA:
Your Name. (2024). Room Image Similarity Model: Siamese Network for Hotel Room Image Comparison. Hugging Face Model Hub. https://huggingface.co/your-username/room-image-similarity
术语表
- Siamese Network (孪生网络): 使用相同网络处理两个输入以计算相似度的神经网络结构
- EfficientNetV2: 用于高效图像分类的 CNN 架构
- Focal Loss: 针对不平衡数据集优化的损失函数
- ImageNet 归一化: 使用 ImageNet 数据集的均值和标准差进行图像归一化
更多信息
- 项目仓库: GitHub Repository
- 文档: 项目文档
- 问题反馈: GitHub Issues
ondame/room-image-similarity
作者 ondame
image-feature-extraction
transformers
↓ 0
♥ 0
创建时间: 2025-09-26 06:49:03+00:00
更新时间: 2025-11-18 03:48:58+00:00
在 Hugging Face 上查看文件 (8)
.gitattributes
README.md
encoder.onnx
ONNX
head.onnx
ONNX
inference_example.py
model.onnx
ONNX
model.pth
model_info.json