前言、隐私和安全性
众所周知很多人对 Synology Photos 等纯本地照片库有刚需。除 Synology 以外,威联通等厂商和 PhotoPrism、Immich 也提供了自托管方案。之前 CHH 讨论了很多次要用什么替代 Synology Photos,今天也是有了答案。
在安装前邮件询问了开发者(杭州 oneman)是否支持脱离互联网安装和运行,答复可以。
软件提供了和电话激活 Windows 类似的离线激活方式,99元购买永久授权后,在官网输入硬件码和购买的激活码,就可以生成离线授权码,激活后可以永久断网运行。
都断网运行了,自然不存在隐私问题和对国产的不信任。
使用的 AI 模型均开源。软件和所有识别模型均支持在本地自行部署并断网运行。
安装
安装教程在官网上已经非常全面,此处不浪费篇幅。我安装在 Hyper-V 虚拟机上,分配了 8 核心和 16GB 内存,使用 Server 2022 系统,选择了默认的 AI 识图模型和 Insightface。
安装分为四部分,安装 ImageMagick 和 ffmpeg,一键安装本体、AI识图模型和人脸识别模型(可选 deepface 或 insightface ),使用 nssm 或其它任何方式设置俩模型开机启动,设置 nginx 反代。
可选为 /static 和 /lib 设置 nginx cache。
对比 Synology Photos
在使用 MT Photos 之前,我使用的是 Synology Photos。也使用过 PhotoPrism。DSM 7.2.2 的抽象程度让我直接跳水。我会从使用 Synology Photos 的痛点来着重讲述 MT Photos 改善的地方。利益相关:黑白群晖双持,WinServer all in boom 用户、已购买 MT Photos 永久授权。
编解码
MT Photos 支持目前我所使用到的所有格式,包括JPG等一般图片、HEIC、AVIF、WebP、佳能尼康索尼的 RAW 等群晖要搁手机上解码的格式。在视频方面,包括从上古编码到H.264、H.265、VP8、VP9、AV1等现代编码在内的我的视频库,均可以正常预览。群晖从很久以前到7.2.1,电脑上传的视频(包括H.264)不会生成预览图,到7.2.2直接彻底不管预览了。
数据库
MT Photos 和 Synology Photos 都使用 postgres,且都自动安装和配置,不需要用户进行任何数据库操作。MT Photos 自带数据库备份和导入功能。
在安装软件时,会要求选择预览图文件夹,这里就可以设置预览图文件夹在 SSD,照片存储在 HDD。在群晖上,预览图存储在 home 目录下的隐藏文件夹里,和照片一起存储。带来了两个问题:一是没法分离做缓存,需要加内存和 SSD 缓存,且众所周知地效率低;二是家目录自带 CRC 校验且无法关闭,影响性能。叠加上 Synology Photos 手机客户端的一些问题,会造成 1. 上下滑动浏览照片时加载缩略图缓慢,即使在局域网也如此;2. 在上下滑动浏览大量照片后 APP 很容易崩溃。对于我这样照片数10万+的用户,第二点问题非常突出。MT Photos 可以清爽地把预览图放在 SSD 上。我的上传带宽仅为40Mbps,但在外浏览照片缩略图时,缩略图加载速度堪比甚至快于用手机自带相册查看本地照片(公网IP、nginx 启用了 HTTP/3)。
MT Photos 提供了很多贴心的功能,部分在官网 demo 中没有体现。
一键删除已备份照片
和群晖一样支持一键删除已备份的手机照片。
群晖是一次 删除3000 张,MT Photos是一次 500 张,但 MT Photos 还支持设置一些照片为重要文件,在删除已备份照片时不删除。群晖的这个按键在一级页面下,MT Photos 的这个按键在二级页面下。和群晖一样支持闲时备份(黑屏但唤醒手机备份)。支持静默后台备份。支持应用锁。支持关联删除服务器和本地照片。支持 Live Photo。
自动合并 RAW 和 JPG 文件
群晖会显示成连着的两张一模一样的图,不点开详细信息则无法辨认 RAW 和 JPG。
分图库和影集整理照片
图库和 jellyfin 的媒体库类似,可以理解为磁盘上存储图片的文件夹,可以合并多个文件夹为一个图库。一个图库可以共享给多个用户。
影集是和群晖或其它相册软件类似的,用户选择任意照片组成影集(群晖的相册),影集也和群晖一样支持共享。
影集还支持硬链接,可以用于批量导出影集的照片到目的地,或是根据影集重新整理照片,不影响所属图库。
一键删除重复图片
根据 MD5 判断
可以根据图库筛选重复图片,和部分手机文件管理自带的删除重复文件功能类似。每页最多可展示1000张,提供了一键选中、正则表达式选中和一键删除功能。在删除前可以查看各个文件的原图和缩略图,也会展示拍摄日期和所属图库。
支持高德 API 和mapbox API
群晖的国内版使用百度地图,但国内版 (cn.apk) 使用上总有一些不顺手的地方,说不上来。国际版 (ww.apk) 使用Google地图,火星坐标系会导致照片位置在地图上出现偏移。而高德API不会,且高德的反向编码在 MT Photos 中支持到了镇/街道级(即可以查看某街道的相册),群晖只精确到县区级。
支持华为手机
未在HM3测试
基于HM2讨论,我不是HW用户,但是身边人有HM2设备。在使用群晖相册,哪怕是国内版时,时常出现闪退问题。推测是群晖APP承载了一些 AI 功能,但华为删了基础库。MT Photos 客户端没有识别和转码等功能,也没有生成缩略图功能,华为设备上没有发生闪退问题。
备份失败率低
众所周知群晖经常会莫名其妙备份失败几张照片,需要退出账号重新登录才能解决。在使用 MT Photos 时尚未遇到。
提供自动的屏幕截图、自拍照和 RAW 分类
群晖没有。
人脸和 CLIP 识别
人脸识别由于涉及隐私故不展开测评。MT Photos 默认使用 Deepface,可选使用 Insightface,和 Immich 等软件拉不开差距(两者都用这俩 AI),比群晖强一大截。最惊艳的是 AI 识图功能(包含 CLIP和 OCR)。
演示如下,一般的物体识别只会识别这是飞机,刚好我相册里有很多不同型号飞机的照片,见https://mtpa.warships.cn/molyleaf/2023changchunplaaf/
最绝的是……
AI识图模型只支持中文以文搜图,英文搜索效果极差(例如搜索战争雷霆准确出图,但搜索 Warthunder 除带有 Warthunder 字样的图片外,得不到任何期望的结果),进一步搜图后发现数据集可能包含大量简中泛二次元成分。例如搜索 cosplay 时,给出的确实都是 C 服照片,而不是二次元绘画或日常着装的照片,但它不能分辨原神、鸣潮和幻塔的画面。这个模型甚至能对R18关键词给出符合预期的搜索结果,以及搜索下北泽时,排第一的就是东京下北泽的照片,随后是其它城市景观。除识图外还提供了 OCR 功能,能识别图片中的一些文字,未测试准确程度。
全是包含 Warthunder 字样的梗图
甚至出现了不包含任何战舰图样的 Tab 界面截图!
综上,列举 MT Photos 的三个优点:
1. 极强的本地化
群晖:阿嚏
2. 诸多细节功能。
群晖:阿嚏
3. 在国内个人用软件中罕见的尊重隐私。
极空间:阿嚏
建议增加或修复的功能
- 1. 支持自定义电脑(网页端)上传的照片的目录,便于专门整理拍摄的照片。现在电脑上传的照片和群晖一样放在大杂烩文件夹里。
- 2. 手机除DCIM外,其它目录备份的照片也可以备份到对应目录,且保留年/月目录形式。
- 2. 支持导入群晖相册的数据,更方便跳水。
- 3. 和群晖一样有概率无视手机中的一些照片,需要手动点击“检查未备份照片”以备份。(照片是安全的,一键删除已备份照片功能不会删除这些未备份照片。)
- 4. 学学隔壁 Immich (网页)和 Synology Photos(APP)的外观吧。
- 5. 增加用户头像功能。
- 6. 增加fail2ban类设置。
- 7. 服务端和AI功能安装时自动注册为服务。
- 8. 系统内存将尽时自动减少 ImageMagick 和 ffmpeg 进程数,避免死机。
- 9. 缩略图生成队列显示上限为100000张,可能产生误导。
- 10. 实现群晖在 Photos 2.0.0 加入的三个功能:
- 支持开启备份后,在手机APP中查看所有照片,无论是否备份。
- 支持再次备份修改的照片,以在启用备份后保留所有更改。
- 支持同时备份和上传多个文件,以提高效率。
- 11. 支持客户端设置公钥锁定,防止自签名证书进行中间人攻击。
- 12. 支持管理员点击图集后查看图集内容。
- 13. 支持更换左上角 logo 和 favicon。
- 14. 优化有大量照片时,照片页首屏的卡顿问题。
- 15. 在屏幕截图页面中,支持根据包名分类截图,并内置常见包名对应的友好名称,提供查看各常用软件截图的子页面。对不包含包名的截图,提供 QQ 、微信、B站(识别角落bilibili水印)、贴吧、屎黄色论坛等常被截图的软件的识别功能。
- 16. 人脸识别依赖 C++ 运行库,推荐增加依赖检查或教程说明。
- 17. 支持 Linux tarball 或 deb 原生安装。
- 18. 增加查看相似照片功能,除在管理员页面一键查看外,在照片详情页也希望可以查看相似照片。
- 19. 建议增加一次可删除的已备份照片的数量。
- 20. 支持自定义 CSS。
- 21. 支持创建类似系统自带隐私空间相册的隐藏相册。
- 22. 提供一些开关,允许不常使用人物、地点、场景、标签等功能的用户隐藏选项卡。
- 23. 如果可以,利用 GPU 加速 ffmpeg 和 ImageMagick。
- 24. 支持自定义数据库备份目录和定时备份。