本地 AI 选片工作台。它面向一次拍摄后的大量照片,先自动筛掉明确废片,再按场景和相似度分组,最后让人通过擂台界面完成最终选择。
所有照片默认在本机处理。本地流程使用 Ollama,不会把照片上传到第三方服务;Ark 相关代码仅作为兼容能力保留。
photo-selector 当前采用三层分析链路:
- 基础工具层:读取 EXIF、清晰度、曝光、信息量、美学评分、人脸质量、闭眼风险和 DINOv2 视觉相似度。
- 视觉观察层:
qwen3-vl:8b读取照片和工具结果,输出画面观察、瑕疵、亮点和创作意图判断。 - 推理决策层:
qwen3:14b结合视觉观察和工具结果,给出初筛、保留建议和组内排序。
模型负责建议和排序,人负责最终裁决。初筛只移动模型和工具都明确判定的问题照片;有争议的照片会留到擂台里人工比较。系统会把类似的照片分组,一组一组的处理,提升选片效率。在擂台页遇到难以抉择的照片时,Qwen3还可以智能给出要对比的两个照片的区别和更建议选哪个。
- Windows
- NVIDIA GPU + 可用 CUDA 驱动
- Python 3.10+
- Ollama 已安装并运行
安装本地模型:
ollama pull qwen3-vl:8b
ollama pull qwen3:14b
ollama list启动:
.\启动_Windows.bat启动器会创建或复用 .venv,安装依赖,检查 GPU 运行时,然后打开本地 Flask 页面。
- 在首页选择照片文件夹。
- 等待自动分析完成:基础工具、qwen3-vl 观察、qwen3 推理和相似组聚类会在后台运行。
- 在初筛复核页确认或召回 AI 建议放手的照片。
- 在擂台页逐组比较照片。
- 完成后查看
winners/和waste/。
擂台交互规则:
- 鼠标点击照片:放大 / 切换缩放。
- 键盘
←/→:选左 / 选右。 - 底部按钮:选左、选右、都留、都弃、稍后再决、撤销。
[/]:单独踢掉左图 / 右图。Z:缩放;Shift+Z:撤销。- “Qwen3 智能深度对比”会以悬浮面板显示两图差异,不再挤压照片区域。
| 类型 | 扩展名 |
|---|---|
| 常规图片 | .jpg .jpeg .png .webp .bmp .tif .tiff |
| Apple 图片 | .heic .heif |
| RAW | .cr2 .cr3 .nef .arw .dng .raf .orf .rw2 .pef |
同目录、同文件名 stem 的 JPG/HEIC 与 RAW 会自动配对。系统优先分析可直接显示的 JPG/HEIC,移动结果时会连同配对 RAW 一起进入 winners/ 或 waste/。
处理完成后,照片文件夹内会生成:
照片文件夹/
├── winners/ # 最终保留照片和配对 RAW
├── waste/ # 放手照片和配对 RAW
└── _pic_selecter/ # 缩略图、日志、状态和运行记录
photo-selector/
├── app.py # Flask 路由和页面入口
├── backend/ # 任务流水线、状态、路径和运行时单例
├── pic_selecter/ # 分组、质量分析、视觉模型、LLM 判断和水印
├── static/ # 前端 HTML/CSS/JS
├── scripts/ # Windows 启动器和诊断脚本
├── docs/ # 专题问题、架构、设计和验证文档
├── tests/ # 单元测试和 Flask 集成测试
├── ARCHITECTURE.md # 架构说明
└── DESIGN.md # UI 和交互规范
本次“擂台双图对比、左右选择按钮和 Qwen3 hidden thinking”问题已整理到
docs/photo-selection-arena/。
models/ 是本机模型缓存,.venv/ 是本地虚拟环境,.pic_selecter_install.json 是启动器安装记录,这些都不需要手动编辑。
python -m py_compile app.py backend\pipeline.py backend\runtime.py backend\state.py backend\utils.py pic_selecter\llm_judge.py pic_selecter\grouper.py pic_selecter\quality.py pic_selecter\vision.py scripts\launcher.py
node --check static\app.js
python -m pytest tests -q- Qwen 输出
<think>:应当由llm_judge._strip_thinking_text()清洗;对比接口会拒绝只返回 hidden thinking 的响应。 - AI 对比很慢:优先确认 Ollama 已启动、
qwen3-vl:8b和qwen3:14b已安装,并保持OLLAMA_KEEP_ALIVE=-1。 - 照片空白:检查
/api/image是否能返回图像,RAW/HEIC 会通过本地解码或缩略图兜底。 - Git 不可用:当前本地目录曾出现空
.git/目录;若需要版本控制,应重新git init或重新克隆。
MIT License