【Code with SOLO】用 SOLO 快速打造照片精选工具:从 500 张连拍中智能筛选最佳照片

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 能力应用

  1. 代码生成:从零生成完整的 Flask 应用框架和核心算法
  2. 算法实现:指导实现拉普拉斯清晰度检测、三分法则构图评分等专业算法
  3. 问题排查:调试 PIL 图片格式兼容、哈希计算异常等问题
  4. 架构设计:规划前后端分离、异步任务处理的架构

关键代码亮点

美学评分引擎 (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])

踩坑记录

  1. 图片格式兼容问题:HEIC 格式需要额外依赖,改用 Pillow 内置方法处理
  2. 大图片内存溢出:添加图片缩放预处理,统一缩放到 800px 后再分析
  3. 同步处理超时:改用后台线程异步处理,前端轮询任务状态
  4. 哈希冲突:调大 hash_size 到 16,优化相似度阈值

4. 成果展示

项目结构

photo_picker/
├── app.py              # Flask主应用
├── scorer.py           # 美学评分引擎(核心)
├── deduplicator.py     # 相似照片去重
├── templates/index.html # Web界面
└── static/css/js/      # 前端资源

功能特性

特性 描述
:bullseye: 8维度评分 清晰度、构图、色彩、亮度、对比度、和谐度、噪点、动态范围
:magnifying_glass_tilted_left: 智能去重 自动识别连拍/相似照片
:locked: 隐私保护 完全本地运行,不上传服务器
:globe_with_meridians: Web界面 拖拽上传、进度显示、一键下载
:inbox_tray: 批量处理 支持最多 500 张照片

使用效果

  1. 拖拽上传照片 → 2. 设置精选数量 → 3. 自动分析评分 → 4. 下载精选结果

5. 效果与总结

提效对比

  • 手动筛选:500 张照片约 30-40 分钟
  • SOLO 工具:500 张照片约 2-3 分钟
  • 效率提升:约 15 倍

SOLO 的价值

  • 快速实现复杂算法:拉普拉斯边缘检测、感知哈希等专业算法秒级生成
  • 代码质量高:自动处理边界情况、错误处理完善
  • 调试效率高:遇到问题时能快速定位并提供解决方案

可复用方法

  • 美学评分引擎可用于任何图片筛选场景
  • 感知哈希去重可用于相册整理、商品图片去重等场景
  • Web 框架模板可快速复用为其他工具