sawhill-dataset
收藏Sawhill Numismatic Collection Dataset 数据集总结
数据集概述
- 来源: MacKenzie Art Gallery 的 Sawhill Numismatic Collection
- 内容: 硬币的手持视频录制、提取的帧序列以及参考嵌入向量
- 目的: 利用深度学习实现自动化硬币识别
- 许可证: CC-BY-4.0
支持的任务
- 图像分类: 从视频帧或图像中识别硬币
- 特征提取: 预计算的512维ArcFace嵌入向量,用于硬币匹配
- 目标检测: 从视频帧中进行硬币分割和裁剪
数据集结构
sawhill-numismatic-collection/ ├── videos/ # 原始视频录制 (.MP4) │ └── MVI_XXXX.MP4 # 单枚硬币的手持视频 ├── data/ │ ├── reference_embeddings.npy # (N, 512) float32 - ArcFace嵌入向量 │ ├── reference_labels.npy # (N,) str - 登记号或文件名 │ ├── reference_paths.npy # (N,) str - 源图像路径 │ └── draft_labels/ # 自动生成的标签 (CSV + JSON) │ ├── MVI_XXXX.csv # 逐帧预测结果 │ └── MVI_XXXX_summary.json # 视频级别摘要 └── output/ # 从视频中提取的帧 └── MVI_XXXX/ ├── frame_0000.jpg # 单个提取的帧 └── ...
数据字段
参考嵌入向量
- reference_embeddings.npy: 预计算的512维ArcFace嵌入向量
- 形状:
(N, 512),其中 N = 参考图像数量 - 类型:
float32 - 归一化: L2归一化
- 形状:
- reference_labels.npy: 每个嵌入向量的标签
- 格式: 登记号(例如 "2024.1.11")或文件名(例如 "MAC 03 Coins-15")
- 类型: Unicode字符串
- reference_paths.npy: 参考图像的源路径
- 格式: 原始图像的绝对路径
- 类型: Unicode字符串
自动生成的标签
每个视频有两个输出文件:
CSV格式 (MVI_XXXX.csv):
csv
frame_idx,timestamp_sec,predicted_label,confidence,candidate_2,score_2,candidate_3,score_3,flagged
0,0.00,2024.1.11,0.2571,MAC 03 Coins-20,0.2355,2024.2.137,0.2252,True
JSON摘要 (MVI_XXXX_summary.json):
json
{
"video": "MVI_0158.MP4",
"total_frames_sampled": 31,
"auto_accepted": 0,
"flagged_for_review": 31,
"predicted_label": "2024.1.11",
"prediction_confidence": "low"
}
数据收集
视频录制
- 设备: 手持相机 (iPhone/数码相机)
- 环境: 自然光,纯色背景
- 方法: 约30秒视频,旋转硬币展示正面和背面
- 帧率: 29.97 fps
- 分辨率: 1920x1080
参考图像
参考图像来源于:
- 命名硬币: MacKenzie Art Gallery目录,带有登记号(YYYY.M.N格式)
- 松散图像: 按文件名标记的额外目录图像
处理流程
- 帧提取: 以1 fps间隔采样帧(每30帧取一帧)
- 硬币分割:
- LAB颜色空间中的边框颜色统计
- Otsu阈值处理
- 形态学操作
- 连通分量分析
- 基于质心的裁剪至224×224
- 嵌入向量: 在硬币图像上训练的ArcFace模型(512维)
- 匹配: 通过点积计算L2归一化余弦相似度
使用方式
数据集下载
bash
安装依赖
pip install huggingface_hub
从计算机下载
git clone https://github.com/COIN-Research-Group/extract-sawhill-dataset cd extract-sawhill-dataset python hf_pull.py --repo-id COIN-Research-Group/sawhill-dataset
或仅下载特定组件
python hf_pull.py --repo-id COIN-Research-Group/sawhill-dataset --data-only python hf_pull.py --repo-id COIN-Research-Group/sawhill-dataset --videos-only
上传新数据
bash
添加新视频或处理新数据后
python hf_push.py --repo-id COIN-Research-Group/sawhill-dataset
仅上传视频
python hf_push.py --repo-id COIN-Research-Group/sawhill-dataset --videos-only
仅上传处理后的数据
python hf_push.py --repo-id COIN-Research-Group/sawhill-dataset --data-only
加载参考嵌入向量
python import numpy as np from huggingface_hub import hf_hub_download
下载文件
embeddings_path = hf_hub_download( repo_id="COIN-Research-Group/sawhill-dataset", filename="data/reference_embeddings.npy", repo_type="dataset" ) labels_path = hf_hub_download( repo_id="COIN-Research-Group/sawhill-dataset", filename="data/reference_labels.npy", repo_type="dataset" )
加载数据
embeddings = np.load(embeddings_path) # 形状: (N, 512) labels = np.load(labels_path) # 形状: (N,)
print(f"Loaded {len(embeddings)} reference embeddings") print(f"Unique coins: {len(np.unique(labels))}")
模型信息
ArcFace嵌入向量模型
- 架构: ResNet50骨干网络 + ArcFace头部
- 嵌入维度: 512
- 训练: 在硬币图像对上进行训练
- 归一化: L2归一化嵌入向量
- 权重:
arcface_main.pth(不包含在数据集中,请参见主仓库)
性能
- 测试准确率: 在MVI_0158.MP4上正确识别(目标: 2024.1.11)
- 置信度分数: 0.18-0.27范围(反映了手持视频与工作室摄影之间的领域差距)
- 数据库大小: 787个参考嵌入向量(311枚命名硬币 × 2个面 + 165张松散图像)
局限性
- 领域差距: 参考图像为高质量工作室照片;视频为手持拍摄,光照条件多变
- 置信度阈值: 当前阈值(0.82)可能对跨域匹配过高
- 分割质量: 分割性能随背景复杂度和光照条件变化
- 覆盖范围: 参考数据库可能不包含全部馆藏中的所有硬币




