1. 摘要
用 TRAE SOLO 从零开始构建了一个PhotoPicker 照片精选工具,实现了基于 8 维度美学评分 的智能照片筛选系统,配合感知哈希去重算法,能自动从数百张照片中选出最适合发朋友圈的精品,全程本地运行保护隐私。原本需要手动翻选半小时的工作,现在只需上传、等待、下载三步即可完成。
2. 背景
我是一名摄影爱好者,每次出游或聚会都会拍上几百张照片,但发朋友圈时总要花很长时间筛选。遇到连拍时更是头疼——几十张几乎一样的照片,难以抉择哪张最好。
痛点:
- 手动筛选效率低,500 张照片约需 30-40 分钟
- 连拍照片相似度高,选择困难
- 审美疲劳导致判断失误
目标:用 AI 自动评分 + 智能去重,快速精选出最优质的照片。
3. 实践过程
任务拆解
┌─────────────────────────────────────────────────────┐
│ PhotoPicker 照片精选工具 │
├─────────────────────────────────────────────────────┤
│ 1. 美学评分引擎 (scorer.py) │
│ ├── 清晰度检测(拉普拉斯方差) │
│ ├── 构图分析(三分法则) │
│ ├── 色彩丰富度(HSV熵分析) │
│ ├── 亮度/对比度/动态范围 │
│ └── 噪点检测/色彩和谐度 │
├─────────────────────────────────────────────────────┤
│ 2. 智能去重模块 (deduplicator.py) │
│ └── 感知哈希(pHash)相似性检测 │
├─────────────────────────────────────────────────────┤
│ 3. Web 应用框架 (app.py) │
│ ├── Flask 后端服务 │
│ ├── 文件上传/任务管理 │
│ └── 结果展示/打包下载 │
└─────────────────────────────────────────────────────┘
SOLO 能力应用
- 代码生成:从零生成完整的 Flask 应用框架和核心算法
- 算法实现:指导实现拉普拉斯清晰度检测、三分法则构图评分等专业算法
- 问题排查:调试 PIL 图片格式兼容、哈希计算异常等问题
- 架构设计:规划前后端分离、异步任务处理的架构
关键代码亮点
美学评分引擎 (scorer.py):
# 8维度加权评分系统
self.weights = {
'sharpness': 0.20, # 清晰度(最重要)
'composition': 0.15, # 构图(三分法则)
'color_richness': 0.15, # 色彩丰富度
'brightness': 0.10, # 亮度适宜度
'contrast': 0.10, # 对比度
'color_harmony': 0.10, # 色彩和谐度
'noise': 0.10, # 噪点(反向)
'dynamic_range': 0.10, # 动态范围
}
智能去重算法 (deduplicator.py):
# 基于感知哈希的相似性检测
h = imagehash.phash(img, hash_size=16)
distance = hashes[i] - hashes[j] # 汉明距离
# 从相似组中保留评分最高的
best_idx = max(group, key=lambda idx: scores[idx])
踩坑记录
- 图片格式兼容问题:HEIC 格式需要额外依赖,改用 Pillow 内置方法处理
- 大图片内存溢出:添加图片缩放预处理,统一缩放到 800px 后再分析
- 同步处理超时:改用后台线程异步处理,前端轮询任务状态
- 哈希冲突:调大 hash_size 到 16,优化相似度阈值
4. 成果展示
项目结构:
photo_picker/
├── app.py # Flask主应用
├── scorer.py # 美学评分引擎(核心)
├── deduplicator.py # 相似照片去重
├── templates/index.html # Web界面
└── static/css/js/ # 前端资源
功能特性:
| 特性 | 描述 |
|---|---|
| 清晰度、构图、色彩、亮度、对比度、和谐度、噪点、动态范围 | |
| 自动识别连拍/相似照片 | |
| 完全本地运行,不上传服务器 | |
| 拖拽上传、进度显示、一键下载 | |
| 支持最多 500 张照片 |
使用效果:
- 拖拽上传照片 → 2. 设置精选数量 → 3. 自动分析评分 → 4. 下载精选结果
5. 效果与总结
提效对比:
- 手动筛选:500 张照片约 30-40 分钟
- SOLO 工具:500 张照片约 2-3 分钟
- 效率提升:约 15 倍
SOLO 的价值:
- 快速实现复杂算法:拉普拉斯边缘检测、感知哈希等专业算法秒级生成
- 代码质量高:自动处理边界情况、错误处理完善
- 调试效率高:遇到问题时能快速定位并提供解决方案
可复用方法:
- 美学评分引擎可用于任何图片筛选场景
- 感知哈希去重可用于相册整理、商品图片去重等场景
- Web 框架模板可快速复用为其他工具
