本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

2024-10-25 11:54:11 14点赞 84收藏 29评论

上篇文章我们介绍了 immich 在群晖上的基础搭建,immich最具特色的AI相册管理功能并没有详细说明。

所以下面我们一起来看看如何使用 immich 的高级功能:大模式识别图片内容、链接外部图库以及硬件加速。

🔻 搜索"红色的花",那么 immich 会把匹配程度最高的第一张排在最前面。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

模型识别

immich 可以通过加载大模型来分析上传到图库的照片内容,除了可以直接语义化搜索符合图片的内容之外,还可以智能对照片中的人物进行分类。

如果没有搭建 immich 项目,请先按照前一篇文章进行 immich 项目的搭建。我们在原来的基础上修改配置文件来加载大模型才能使用模型识别功能。

🔻 首先需要设置模型文件夹的映射路径。修改docker-compose.yml文件,把原来的cache-model设置为一个变量${MODEL_CACHE}。(改了要记得保存)

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 在compose文件的同级目录新建model-cache文件夹用来存放大模型。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 修改.env文件,把前面增加的变量MODEL_CACHE赋值为model-cache文件夹的路径。(可以打开文本编辑器套件,把.env文件拖进套件即可编辑)

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

通过前面的配置,我们就可以把大模型文件放在model-cache文件夹中由 immich 容器读取。那么大模型从哪里来呢?一般来说大部分模型都会放在“抱脸”网上,由于网络环境的问题,我们无法访问,所以老宁把它们都准备好了。

🔻 先去网盘下载三个模型 antelopev2buffalo_lXLM-Roberta-Large-Vit-B-16Plus

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 再去先创建clipfacial-recognition文件夹,再把三个模型上传到群晖后,再解压到对应的文件夹中。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 clip文件夹放入XLM-Roberta-Large-Vit-B-16PlusCLIP模型;facial-recognition放入两个人脸识别模型:antelopev2buffalo_l

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 配置好模型后,需要重启项目才能生效。打开【Container Manager】套件,进入到 immich 项目详情页,点击右上角把项目停止,再重新点击构建按钮重新构建。(这样才修改后的配置才能生效)

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 等待重新构建成功后,进入 immich 的的设置界面。在智能搜索菜单下,把CLIP模型原来的名称修改为clip大模型的名字XLM-Roberta-Large-Vit-B-16Plus

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 接下进入人脸识别菜单,前面已经上传了两个人脸识别模型,所以我们选择其中一个就行。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 如果后面感觉 immich 人脸识别精度不高,可以在下面进行相关配置。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 当上传了人脸照片时,immich就会自动进行人脸检测。(这时CPU占用会很高)

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 等待任务处理完毕后就可以在探索中看到人脸了。我们还可以对识别到的人物进行分类命名。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 想要进行智能搜索(识别图片的内容),那么需要在加载CLIP模型后,手动处理智能搜索任务。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 等待任务完成就可以使用 immich 进行AI搜索了。比如搜索"红色的花",那么 immich 会把匹配程度最高的第一张排在最前面。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 搜索“黄色的花”。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 搜索“领带”也能正确显示。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

外部图库

外部图库就是图片资源被放在 immich 之外其他地方,而 immich 则可以扫描外部图库的资源展示到immich的主界面、时间轴和地图中,不用额外重复上传图片资源到 immich中。

以群晖为例,我们来看看如何把Photos套件中的照片设置为 immich 的外部图库。

🔻 首先需要确定 Photos套件中图片保存的位置。了解群晖的用户都知道用户的文件都在当前账户的home文件下,而照片就在该文件夹下的Photos文件内。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 回到【Container Manager】套件,在项目先中把 immich 停止,找到YAML配置,在 immich-server 容器下新增路径映射。:左边的路径为前面Photos文件夹的路由,:右边可以任意填写。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 修改完毕点击保存,在弹出选框中选择构建并启动项目,等待项目重启。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 等待 immich 重启成功后,在设置界面找到外部图库界面,并新增一个图库。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 接着需要添加图库的导入路径为前面YAML配置:右边的路径。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 如果不想要扫描特定的内容,可以在扫描设置中添加排除规则。比如群晖的**/@eaDir/**,它包含了缩略图,扫描后会导致 immich 扫描数量成倍增加。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 全部修改成功后,需要点击扫描对外部图库进行扫描。扫描完毕后可以看到Photos的照片已经出现在 immich 中。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

硬件加速

在 immich 中,可以通过硬件进行两种类型的加速:第一是转码加速,第二是机器学习加速。它们都是实验性功能,如果不使用硬件加速那么会直接采用CPU进行运算,导致CPU占用过高。当然如果不想折腾或者没有相关的硬件,那么这节可以跳过。

转码加速

转码加速是针对视频转码进行加速,没有相关硬件加速则会调用CPU。 🔻 转码加速支持AMD、NVIDIA、Intel、Rockchip,不支持树莓派

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 对于Intel来说,是至少要第9代CPU,否则就要开启低功耗模式。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

老宁演示的DS218+是J3355的CPU,就必须要开启低功耗模式,由于太过麻烦(怕出问题),所以就不开启了,加上这个转码是针对视频,对我来说意义不大。

如果需要开启可以参考官方文档:https://immich.app/docs/features/hardware-transcoding进行操作。

机器学习加速

机器学习加速是针对图片识别模型的加速,没有相关硬件加速则会调用CPU。 🔻 转码加速支持Mali、NVIDIA GPUs、Intel discrete GPUs。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

如果家里有这些显卡,那么就可以使用机器学习加速。老宁没有,所以也无法开启。

如果你有相关硬件,同样可以参考官方文档进行操作:https://immich.app/docs/features/ml-hardware-acceleration

docker-compse设置

如果你的硬件符合上面的要求,那么接下来还需要修改docker-compose文件以启用硬件加速。 🔻 下载项目的 releases 页面的hwaccel.ml.ymlhwaccel.transcoding.yml文件。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 把它们上传到docker-compose.yml的同级目录。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 打开docker-compose.yml文件,取消加载转码的注释。(service后的值要根据自己的情况配置)

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

🔻 机器学习加速同样需要取消相关的配置,镜像名称也要根据service的值进行修改。

本地大模型直接搜索图片内容!群晖部署高性能AI相册管理工具 immich(二)

后记

经过老宁这几天的使用,发现 immich 基于大模型的搜索功能非常的强大,结合外部图库功能可以无缝把任何图片文件夹链接到 immich。个人觉得结合 Photos 套件一起使用是个不错的选择,Photos 稳定适合备份,immich 更新频繁可以用来浏览图片资源,享受更多新功能。

我是老宁

一个热爱技术的程序员和极客,群晖NAS深度玩家!

专注NAS相关技术分享,原创!干货!

觉得老宁的文章对你有帮助,记得点赞、收藏、加关注

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
29评论

  • 精彩
  • 最新
  • 步骤很详细,部署成功。但是我人脸识别不成功,上传了同一个人很多图片,但是探索里面没人脸的数据。去任务里面把人脸检测和人脸识别都重置好几次,项目也重启了,但是还是不成功。

    校验提示文案

    提交
    刚开始也是不识别人脸,把人脸识别模型改为buffalo_l,重新识别一遍就没问题了

    校验提示文案

    提交
    收起所有回复
  • 请教大神一个问题:按照教程做好,但是构建过程 发现总是删除了antelopev2文件夹里面的5个.onnx文件,immich-machine-learning 容器日志显示: Cleared cache directory for model 'antelopev2。相册探索 没识别出 人物头像和物品。探索也是空白。
    这该如何解决呢?

    校验提示文案

    提交
    按我的教程应该不会出问题的

    校验提示文案

    提交
    是按照大神的教程,你的教程比较详细!构建运行也可以,但是antelopev2 模型运行识别不行,人脸检测发现完毕发现antelopev2文件夹里面的5个.onnx文件被删除。Cleared cache directory for model 'antelopev2 是日志显示。用buffalo_l模型可以识别出人脸。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 尤其是这个更换大模型的地方帮我解决了问题。感谢。这么好的文章居然被藏的那么深。

    校验提示文案

    提交
    [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 这么好的文章居然没人看,写的真是太棒了!

    校验提示文案

    提交
    没办法😭

    校验提示文案

    提交
    不给推荐

    校验提示文案

    提交
    收起所有回复
  • 高质量文章,写得太好了,有模型链接吗?我也试试

    校验提示文案

    提交

    校验提示文案

    提交

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 宁工,俺有两个小问题,威联通装了一套,笔记本上装了个远程机器识别的docker,现在我识别过程中服务端总是在报错,但是看显卡又是有负载的,同时识别完成后又不能搜索,搜索之后又会报错,这可能是啥问题呢

    校验提示文案

    提交
    看看日志报啥错

    校验提示文案

    提交
    [Nest] 7 - 11/28/2024, 5:57:37 PM ERROR [Microservices:JobService] Unable to run job handler (smartSearch/smart-search): Error: Machine learning request to "
    failed with SocketError: other side closed

    [Nest] 7 - 11/28/2024, 5:57:37 PM ERROR [Microservices:JobService] Error: Machine learning request to "
    failed with SocketError: other side closed

    at /usr/src/app/dist/repositories/machine-learning.repository.js:18:19

    at async MachineLearningRepository.predict (/usr/src/app/dist/repositories/machine-learning.repository.js:17:21)

    at async MachineLearningRepository.encodeImage (/usr/src/app/dist/repositories/machine-learning.repository.js:41:26)

    at async SmartInfoService.handleEncodeClip (/usr/src/app/dist/services/smart-info.service.js:104:27)

    at async JobService.onJobStart (/usr/src/app/dist/services/job.service.js:151:28)

    at async EventRepository.onEvent (/usr/src/app/dist/repositories/event.repository.js:

    [Nest] 7 - 11/28/2024, 5:57:37 PM ERROR [Microservices:JobService] Object:

    {

    "id": "d643e0e4-3cc7-4820-b5b9-cf25007653fc"

    }immich提示这个咋办?

    校验提示文案

    提交
    收起所有回复
  • 请问网盘在哪里啊

    校验提示文案

    提交
    稳步

    校验提示文案

    提交
    收起所有回复
  • 谢谢分享 一步一步操作成功了 感谢啦 等待识别成功

    校验提示文案

    提交
  • 太棒啦,接触到才看懂 [喜极而泣] ,原来全是干货,话说能否上传到蓝奏云啊,百度云限速太厉害了。。。

    校验提示文案

    提交
  • 添加外部图库的时候,能不能添加webdav或者共享文件夹的地址,这样就可以部署在我的win台式机了

    校验提示文案

    提交
  • 从服务器下载照片到电脑一直失败。

    校验提示文案

    提交
  • 厉害

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
84
扫一下,分享更方便,购买更轻松