家里那台小主机跑 immich 快两个月了,相册里七千多张照片,人脸那一页到现在还是空的。点开「人物」永远是正在整理,我等了三天,中间还重启过两次,一点动静都没有。本来想的是把家里的老照片按人分一分,找我爸十年前那批扫进来的胶卷,点个名字就全出来,结果这个功能一直没通。
卡住的不是识别,是下载
在后台任务里点「全部重新识别」,进度条走两秒就弹回去,日志拉出来一看,是去 huggingface 取模型的时候连不上,重试几次就放弃了,报的是域名解析失败,跟我这边的网络状况对得上。
也就是说人脸识别在我这儿从头到尾没跑起来过。不是认不准,是模型根本没落地,库一直是空的,任务自然没东西可处理。
为什么非得要离线的
这台机器塞在电视柜里,没接显示器,全靠 ssh 上去改。HuggingFace 在我这条宽带上不是慢,是压根解析不出来,所以任何「先跑起来它自己会下」的方案对我都等于零。每次改 compose 都要停服务,家里人正看着照片的时候不能随便重启,只能挑夜里弄,一晚上没搞完就得等第二天。
我试过的三种下法
第一种最省事,什么都不改,让容器自己拉。跑了半小时,日志里全是重试,最后放弃。
第二种加个 HF_ENDPOINT 指到 hf-mirror。这一步确实连上了,能看到进度在动,但 recognition/model.onnx 那个文件有 174MB,下到一半断掉,重来又从零开始,来回三次我就不想耗了。
第三种是在宿主机上装 git-lfs 把仓库 clone 下来,再 docker cp 塞进容器。这条路能通,我最后就是靠它把 buffalo_l 弄进去的。但折腾的地方不少:
- 容器里没有 git,clone 只能在宿主机做,做完再拷进去
- 目录层级要刚好对上,
/cache/facial-recognition/buffalo_l/底下得是detection/和recognition/两个文件夹,多一层少一层都不认 - 拷完还得
chmod -R 777 /cache,不然容器里的进程读不了 - 最后必须
docker restart,光重跑任务是没用的
人脸是能用了,但紧接着想开中文语义搜索,发现还得再来一个 CLIP 模型,又是一百多 MB 起。两个仓库 clone 完差不多一晚上,中间还断过两回。
我想要的其实就两个东西
- 人脸:
buffalo_l,重点是detection/model.onnx和recognition/model.onnx - 搜索:
ViT-B-32__openai,或者XLM-Roberta-Large-Vit-B-16Plus,听说是对中文更友好的那个
最好是压缩包,解压出来直接就是 /cache 底下的目录结构,我整个丢进去就行;百度网盘、夸克的链接也完全可以,我自己下,慢点无所谓,只要别断。哪怕只给其中一个也行,先把人脸这一块跑通我就知足了。
麻烦顺手标一下是给哪个大版本用的。我这套是 v2 的 compose,模型缓存的路径跟网上那些 v1 教程对不上,照着老教程放位置放错了,白折腾一晚上,所以版本比什么都重要。
这几条路我考虑过但没走
换 PhotoPrism 认真想过,但照片得重新索引一遍,七千多张不知道要跑多久,而且人脸那块一样要下模型,绕不开。
网上那种「已经把模型打进去」的第三方镜像,看着是省事,但来源不明,我这是存全家照片的机器,不太敢用。
自己写脚本从别人的镜像里把模型层抠出来的办法也想过,不会写,放弃。
这几个就不用回我了
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION 那一串预加载变量我知道,问题在于它一样要联网下,对我这边没帮助。改 huggingface_hub 里域名那条路我也看过,得重新提交镜像,嫌麻烦。
所以有没有人手上存着这份包?或者你那边是怎么绕过去的,说个思路也行。