SuperPicky
用YOLO+SuperEyes+TOPIQ多模型AI流水线,自动为鸟类摄影师筛选照片,3小时工作量压
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用YOLO+SuperEyes+TOPIQ多模型AI流水线,自动为鸟类摄影师筛选照片,3小时工作量压
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:你是一位观鸟爱好者,清晨 5 点背着长焦镜头出发,花了 3 小时蹲守,终于拍到了一组黄嘴蓝鹊(White-throated Magpie-Jay)的飞版(bird-in-flight)。收工回家,导入 Lightroom一看——好家伙,523 张 RAW 文件。
接下来是最痛苦的部分:一张张翻看、对比、删除、标记。眼睛看花了,手也点酸了,选出来的"精修图"可能还漏掉了几张更好的。
这就是 bird photography culling(照片筛选)——让无数鸟类摄影师头疼的"甜蜜负担"。传统做法靠肉眼逐张浏览,一次拍摄产生数百张 RAW 的情况下,这个过程往往比拍摄本身还要耗时。
SuperPicky 正是为解决这个问题而生:它用多模型 AI 流水线,自动完成鸟照检测、锐度评估、美学评分和飞版识别,把 3 小时的筛选工作压缩到 20 分钟。
SuperPicky 由 GitHub 用户 jamesphotography 开发维护(自称"摄影爱好者",从账号信息推测为国内摄影师),项目始于 2023 年 12 月,是一个典型"从自身痛点出发"的开源项目。
核心技术架构是一个典型的多模型协作流水线:
这套流水线的工作逻辑非常清晰:首先 YOLO 把鸟"框出来",SuperEyes 评估眼部锐度,SuperFlier 判断飞行姿态,TOPIQ 给整体美学打分,RatingEngine 将这些分数综合计算为 0-3 星评级。RatingEngine 的评分规则设计得相当精细:
| 星级 | 条件 | 含义 |
|---|---|---|
| ⭐⭐⭐ | 锐度达标 + 美学达标 | 优选,值得精修 |
| ⭐⭐ | 锐度达标 或 美学达标 | 良好,可考虑保留 |
| ⭐ | 检测到鸟但未达阈值 | 一般,通常可删除 |
| 0★ | 无鸟或质量极差 | 删除 |
精选旗标(Pick Flag)则在所有 3 星照片中,取锐度和美学交叉得分的 Top 25% 标记。
版本演进:从 2023 年底的 v0.02 到当前最新的 v4.5.0-rc10(2026年7月),项目经历了数十次迭代,核心变化包括 v3.2 的 SQLite 数据库迁移(提速约 1.9 倍)、v4.0 的评分引擎重构、v4.2 的地理分布过滤等。值得注意的是,v4.5.0 已进入候选发布阶段,说明项目仍处于活跃维护中。
从源码结构来看,SuperPicky 采用分层解耦 + 插件生态的设计:
main.py # 进程初始化、自举分流、PyInstaller 入口
├── core/ # 核心业务逻辑(评分引擎、批处理、关键点检测)
├── birdid/ # 鸟类识别模块(OSEA 分类器 + 地理过滤)
├── ui/ # PySide6 GUI 层(主窗口、缩略图、设置中心)
├── tools/ # 工具集(数据库、文件、EXIF、i18n)
├── workflows/ # 设计文档与开发流程
└── docs/ # 架构图、API文档、计划文档
最值得关注的几个设计决策:
1. PhotoProcessor 统一调度层
core/photo_processor.py 是真正的"中央处理器",负责文件扫描、RAW 转换、AI 检测调用、RatingEngine 评分、EXIF 元数据写入和文件移动。它的核心设计理念是"CLI 和 GUI 共享同一套业务逻辑"——birdid_cli.py 和 UI 层都调用同一个 PhotoProcessor,避免了两套代码的重复维护。
2. 双评分体系:RatingEngine + RatingQuota RatingEngine 负责单张照片的评分(sharpness + aesthetics),RatingQuota 则在全局层面管理各星级的"配额比例",确保最终结果符合用户的期望分布。这种"局部评分 + 全局配额"的二级机制,在数据标注平台中很常见,但用在照片筛选中是一个很有意思的设计。
3. 模型推理锁(Classifier Inference Lock)
birdid/bird_identifier.py 中定义了一个 _CLASSIFIER_INFER_LOCK,将所有鸟类分类推理串行化。原因是 MPS/CUDA 下并发调用 forward 的安全性有限,干脆全局锁住。对于一个以筛选为主、分类为辅的工具来说,这个设计牺牲了一点并发性能,但换来了推理稳定性和可预测性,是务实的权衡。
4. ExifTool 委托管理
项目将 EXIF 元数据的读写委托给独立的 exiftool_manager.py,并打包了 macOS/Windows 两个平台的 ExifTool 二进制文件。这样做的好处是避免了 Python 第三方库对复杂 RAW 格式(ARW、NEF、CR3 等)支持不完整的问题,坏处是打包体积较大。
5. Lightroom 插件 SuperBirdIDPlugin.lrplugin 提供了 Lightroom 插件,将 SuperPicky 的评分和精选结果通过 XMP 元数据同步到 Lightroom 中,实现"SuperPicky 筛选 → Lightroom 直接看到星级"的闭环体验。
6. 多平台打包策略 项目为 macOS(Apple Silicon / Intel)、Windows(CUDA-GPU / CPU)、Linux 分别维护了不同的 requirements 文件和 PyInstaller spec 文件,这是典型的 AI 桌面应用困境——不同硬件平台对 PyTorch、CUDA 支持差异巨大,不得不拆包处理。
SuperPicky 的筛选流程并非简单的"AI 评分排序",而是一个多维度评估体系:
锐度评估(SuperEyes):传统锐度评估往往只看整图清晰度,但鸟照的痛点是"鸟头区域"的清晰度——眼睛有没有糊掉?鸟喙边缘是否锐利?SuperEyes 通过关键点检测(眼部 + 喙部)来判断头部区域的锐度,比全局模糊度更有实际意义。
美学评分(TOPIQ):评估构图、曝光和整体画面质量。这个分数帮助区分"拍清楚了但构图平庸"和"拍清楚了且构图优秀"的照片。
飞版检测(SuperFlier):自动给飞行中的鸟类照片打上绿色标签,并给予额外加分。这是鸟类摄影的独特需求——捕捉飞版比静止版难度高得多,值得特殊加分。
地理分布过滤(GBIF):基于 GPS 坐标和 GBIF 物种分布数据,判断照片中的鸟种是否符合该地理位置的已知分布范围。理论上,如果你在北京拍到了一只巴布亚企鹅(生活在南极),可能是误识别。这个功能在 v4.0+ 版本引入,目前支持基于稀有度等级(GBIF Rarity Index)过滤。
连拍优选(BurstRanking):当一组连拍中有多张相似照片时,RatingEngine 会综合锐度、美学、飞行姿态等维度,选出其中最好的一张作为"代表",避免用户被大量重复照片淹没。
用户只需 5 步即可完成一次筛选:①选择照片文件夹 → ②调整锐度/美学阈值(可选)→ ③开启/关闭飞版检测、曝光检测 → ④启动 AI 处理 → ⑤结果自动按星级分类到不同子文件夹。
Skill Level Presets 是另一个贴心的功能:为不同经验水平的摄影师预设了阈值组合。初级用户可以选择"保留更多"(Sharpness > 300, Aesthetics > 4.5),高手可以选择"严格筛选"(Sharpness > 520, Aesthetics > 5.5),避免了参数调优的学习成本。
值得关注的是 core/video_analyzer.py 和 video_batch_engine.py 的存在——项目已经初步支持视频中的鸟类分析,虽然目前可能还不够成熟,但视频正在成为鸟拍爱好者的新工具(4K/8K 高帧率连拍),这一方向很有前瞻性。
图1:SuperPicky v4.0.6 GUI界面截图,支持简体中文
图2:YOLO检测+SuperEyes关键点+TOPIQ美学评分的可视化叠加效果
图3:SuperPicky 应用图标
图4:v4.0.0 版本 UI 界面
图5:中文界面截图(来自 docs/img)
SuperPicky 并非没有争议。翻阅项目 Issues 和社区反馈,以下几点值得客观看待:
1. 模型依赖的局限性 TOPIQ 美学评分虽然听起来高大上,但在实际使用中,美学判断本身就有极强的主观性。有用户反馈某些"构图一般但鸟很清晰"的照片被打了低分,而"背景杂乱但色彩鲜艳"的照片反而高分。AI 的美学判断与人类摄影师的审美存在偏差,这是所有图像美学评分模型的通病。SuperPicky 在 v4.2 引入了美学阈值可调来解决这个问题,但无法根除。
2. RAW 格式支持的碎片化 项目依赖 ExifTool 处理各种 RAW 格式,但不同厂商的 RAW 格式(DNG/ARW/NEF/CR3/Raf)各有各的特殊编码方式。Issue 中多次出现某型号相机 RAW 文件 EXIF 写入失败、GPS 坐标读取错误的报告。虽然作者积极响应(v4.0.5 中就有 Sony ARW 的修复),但这是一个持续投入的无底洞。
3. 无 Docker 化的代价 作为一款桌面应用,SuperPicky 通过 PyInstaller 打包所有依赖(包括 ExifTool 二进制文件、AI 模型等),打包出来的体积动辄数 GB。虽然提供了 macOS DMG 和 Windows exe 的直接下载,但无法通过 Docker 容器化部署。对于想要在服务器端批量处理的开发者来说,这是一个明显的门槛。
4. AI 模型的许可问题 SuperPicky 整合了多个开源 AI 模型(YOLO11、TOPIQ、OSEA、SuperEyes、SuperFlier),这些模型的训练数据和使用许可各不相同。尤其是 OSEA 和 TOPIQ 的许可条款是否允许商业使用、是否会引发版权风险,需要用户自行评估。
5. 硬件门槛的尴尬 CUDA-GPU 版本需要 NVIDIA 显卡(4GB+ VRAM),Apple Silicon 版本只支持 M1/M2/M3/M4(MPS 加速),而没有好 GPU 的用户只能用 CPU 版本——处理速度可能慢 5-10 倍。这造成了一个现实困境:最需要"提速"的普通硬件用户,偏偏只能用最慢的版本。
SuperPicky 的出现折射出一个更大的趋势:AI 正在从"辅助创作"向"辅助决策"延伸。过去 AI 在摄影领域的应用多集中在图像生成(Stable Diffusion、Midjourney)和图像编辑(降噪、超分),而 SuperPicky 切入的是一个更垂直、更具体的场景——照片筛选。
这个场景的特点是:人工处理效率极低、AI 判断标准相对明确(有明确的"清晰度"和"构图"标准)、且用户付费意愿强(专业鸟拍爱好者愿意为效率工具付费)。类比到其他领域,视频素材筛选、医学影像初筛、安防录像回放……SuperPicky 的模式有很强的可复制性。
从 GitHub 数据看(148 stars、30 forks、2026年7月仍有 rc 版本发布),项目目前规模不大,但核心用户群体稳定、反馈活跃。作者维护态度认真(Issue 响应快、更新日志详细),如果能持续迭代,有望成为鸟拍垂直领域的"Lightroom 插件级"工具。
值得注意的是,v4.5.0 版本正在探索浏览器端评分功能(browser_p0_paul.py 等计划文档),如果成功实现,将把 SuperPicky 从纯桌面应用扩展为 Web 服务,这将是质的飞跃。