添加智能识别API
.1. 文本识别
基于PaddleOCR实现的文本识别(OCR)服务,由于封装的docker镜像较大,所以使用单独的容器来运行这部分服务。
当照片完成文本识别之后,可以通过搜索图片中的文字来找图片。
.2. 以文搜图
使用Chinese-CLIP(OpenAI CLIP模型的中文版本),提取图片的特征,然后使用文本来寻找相关的图片;
当CLIP识别任务完成之后,可以在搜索中通过一段文字来寻找图片。
搜索时可以使用具体的物品、场景等来搜索,比如:猫、森林、Excel表格;也可以加上描述,比如沙发上的猫、林间小路等;
.3. 视频演示
以文搜图和文本识别的使用效果请查看:
https://www.bilibili.com/video/BV1Fu4y1b7ds
1. 代码仓库
相关代码已开源在 https://github.com/MT-Photos/mt-photos-ai
2. 安装
如果您的NAS CPU性能较低,可以先使用性能更强的电脑运行智能识别API服务;
可以等完成第一次全量识别后,再切换回使用NAS上部署的智能识别API服务,智能识别API仅执行识别部分任务,识别的结果都会存储在MT Photos数据库中;
以文搜图功能,每次搜索时,都需要调用智能识别API服务,因此需要智能识别API服务一直处于运行中;
文本识别结果的搜索,在识别完成后,不需要调用智能识别API服务;
2.1 一、使用图形化安装的教程
如果您使用的Nas,不在以下列表中,可以参考 群晖 的安装方法
- UNRAID 添加智能识别API
- TrueNAS 添加智能识别API
- 群晖 添加智能识别API
- Windows 添加智能识别API
- 飞牛私有云 添加智能识别API
2.2 二、使用命令行安装的教程
镜像说明 DockerHub镜像仓库地址: https://hub.docker.com/r/mtphotos/mt-photos-ai
镜像Tags说明:
- latest:基于openvino文件夹打包,推荐Intel Xeon、Core系列 CPU机型安装这个镜像
- onnx-latest:基于onnx文件夹打包,推荐其他CPU机型安装这个镜像
- cuda-latest:基于cuda文件夹打包,nvidia显卡机型可以安装这个镜像
- arm-latest:基于onnx文件夹打包,armv8架构机型可以安装这个镜像
latest 相较于onnx-latest,需要的内存更多,特别是文本识别时,AI容器的内存占用需要2-3G;
如果使用latest镜像过程中,容器占用的内存超过4G或者容器经常自动停止,请更换使用 onnx-latest 镜像运行;
2.2.1 1.下载镜像
默认镜像(latest)基于OpenVINO框架,在Intel Xeon、Core系列 CPU上的推理速度有加成
docker pull mtphotos/mt-photos-ai:latest
如果您的CPU不在OpenVINO的支持列表中或者是AMD CPU,请下载onnx-latest标签的镜像;
docker pull mtphotos/mt-photos-ai:onnx-latest
armv8架构机型请下载arm-latest镜像
docker pull mtphotos/mt-photos-ai:arm-latest
看不懂命令行?
5分钟了解Docker:https://mtmt.tech/docs/example/intro
CUDA版本镜像
由于镜像较大,上传dockerhub一直失败,因此只上传了阿里云的ACR仓库;
CUDA 版本 12.3.0 以上,显卡驱动版本 >=545.23.06
#下载镜像: docker pull registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:cuda-latest docker tag registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:cuda-latest mtphotos/mt-photos-ai:cuda-latest #启动容器: docker run --gpus all -i -p 8060:8000 -e API_AUTH_KEY=mt_photos_ai_extra --name mt-photos-ai mtphotos/mt-photos-ai:cuda-latest
2.2.1.1 镜像加速
提示:当无法访问DockerHub时,请使用以下命令拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:latest docker tag registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:latest mtphotos/mt-photos-ai:latestonnx-latest
docker pull registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:onnx-latest docker tag registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:onnx-latest mtphotos/mt-photos-ai:onnx-latestarm-latest
docker pull registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:arm-latest docker tag registry.cn-hangzhou.aliyuncs.com/mtphotos/mt-photos-ai:arm-latest mtphotos/mt-photos-ai:arm-latest第1条命令为拉取镜像
第2条命令为将镜像标记为Docker hub源,这样可以在图形化创建容器时使用
2.2.2 2. 创建容器
docker run -i -p 8060:8000 -e API_AUTH_KEY=mt_photos_ai_extra_secret --name mt-photos-ai mtphotos/mt-photos-ai:latest
说明:
- -p 8060:8000端口映射,访问容器的端口
- -e API_AUTH_KEY=mt_photos_ai_extra_secret环境变量API_AUTH_KEY是容器内部用来验证请求来源的,请记得修改API_AUTH_KEY- API_AUTH_KEY的值可以是一段字符串,比如051C78C4D217DB28
- 在MT Photos后台添加API时需要填入这个API_AUTH_KEY
 
- API_AUTH_KEY的值可以是一段字符串,比如
- mt-photos-ai容器不需要映射目录
2.2.3 3、返回MT Photos添加智能识别api
接口地址 填写 http://[nas的ip]:8060
API_AUTH_KEY 填写 mt_photos_ai_extra_secret (这是默认值,如果上一步有修改过,用修改过的值)

2.3 使用docker-compose创建MT Photos 和 AI 容器
docker-compose.yaml 模板文件:
version: "3" services: mtphotos: image: mtphotos/mt-photos:latest container_name: mtphotos restart: always ports: - 8063:8063 volumes: - /volume1/docker/mt_photos/config:/config - /volume1/photos/mt_photos_upload:/upload - /volume1/xxx/其他需要映射的目录:/photos environment: - TZ=Asia/Shanghai -.UTF-8 - PUID=1000 - PGID=100 depends_on: - mtphotos_ai mtphotos_ai: image: mtphotos/mt-photos-ai:onnx-latest container_name: mtphotos_ai restart: always ports: - 8060:8000 environment: - API_AUTH_KEY=mt_photos_ai_extra_secret
如果使用yaml同时部署
mtphotos和mtphotos_ai,在MT Photos后台添加智能识别API时, 接口地址可以填写 http://mtphotos_ai:8000如果使用yaml单独部署mtphotos_ai,在MT Photos后台添加智能识别API时, 接口地址需要填写 http://nap的ip:8060 ,因为2个容器之间网络没有连接
2.4 yaml语法三大规则
2.4.0.1 规则一:缩进
yaml使用一个固定的缩进风格表示数据层结构关系,需要每个缩进级别由两个空格组成。一定不能使用tab键
2.4.0.2 规则二:冒号
services: image: mtphotos/mt-photos:latest每个冒号后面一定要有一个空格(以冒号结尾不需要空格)
2.4.0.3 规则三:短横线
想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一个列表的一部分
environment: - TZ=Asia/Shanghai -.UTF-8 - PUID=1000 - PGID=100
2.5 # 升级后,数据库不支持向量的解决方法
由于CLIP模型识别的结果是向量数据,因此需要更新数据库组件才能存储这类数据;
2.5.1 Windows服务端
- Windows服务端下载这个更新补丁:https://cdn.mtmt.tech/MT%20Photos%20Server_pg_vector_patch1.exe
- 退出MT Photos服务端(在Windows系统托盘中,右键MT Photos然后点击退出)
- 双击更新补丁,覆盖安装原来的目录
- 启动MT Photos服务端
2.5.2 Docker服务端
- 如果使用的容器内置的数据库,更新docker镜像至最新版,然后更新容器;
- 如果连接的是外部数据库,需要将数据库的镜像修改为 mtphotos/mt-photos-pg:latest 来支持向量的存储- pgvector相关介绍: https://github.com/pgvector/pgvector
 
2.6 各NAS系统更新Docker容器的方法
UNRAID
在Docker容器列表,点击MT Photos容器的【应用更新】;
如果没有更新按钮,点击Docker容器列表右上角的【基本视图】,切换到高级视图后,容器的版本那一列出现了【强制更新】按钮,点击强制更新按钮;
群晖
- 打开Docker的注册表,搜索mtphotos/mt-photos,选中搜索结果后下载,弹窗中选择latest开始下最新版本的镜像;
- 等待镜像下载完成;
- 将mt-photos的镜像先停止,然后右键容器,然后点击【操作】=>【重置】;
- 等待容器容器重置完成后,启动容器;
- 注意:1、在DSM6.x版本中【重置】按钮为【清除】;2、请确认容器是基于latest标签创建的,其他标签是不会更新的;
Portainer
- 在Containers中点击容器的名称打开Container details
- 点击顶部的Recreate按钮;
- 打开Pull latest images;
- 点击Recreate
其他系统
- 更新镜像 docker pull mtphotos/mt-photos:latest
- 删除旧容器注意:只需要删除容器,不要删除映射的文件夹 
- 创建新的容器
提示:在享受本文内容的同时,请注意版权归属 徐州鑫坤机电设备有限公司https://www.xzxkjd.com如果您觉得有价值欢迎分享,但请务必注明出处,感谢您的理解,谢谢!
以下部分内容需要登录查看 立即登录
相关内容
- 添加智能识别API
- 上海非急救出租服务全解析
- 深耕中考复读赛道 深圳深才教育为复读生搭建升学桥梁
- 阳光下的童年:那些被温暖照亮的纯真时光
- 群晖DSM7.0-7.21监控套件Surveillance Station 9.20-11289开心版60个许可证设置教程(无重启、无断流、无卡死、史上最完美)
- 云服务器+SD-WAN组网和域名DNS解析
- 在云主机上安装iKuai OS,实现SD-WAN组网,利用云主机80;443端口搭建企业网站。个人博客。让云主机当做你的堡垒机,实现数据本地化。
- 中央空调只开一台=全开耗电?真相让人意外!
- 告别卡顿时代:PCDN正成为互联网内容分发的核心引擎
- 5G时代必备!PCDN如何让视频加载速度快如闪电?
- 降本增效利器!企业都在用的PCDN技术到底强在哪?
- 揭秘PCDN业务:如何用边缘计算重构内容分发新生态?
 简体中文
简体中文 繁體中文
繁體中文 English
English Nederlands
Nederlands Français
Français Русский язык
Русский язык Polski
Polski 日本語
日本語 ภาษาไทย
ภาษาไทย Deutsch
Deutsch Português
Português español
español Italiano
Italiano 한어
한어 Suomalainen
Suomalainen Gaeilge
Gaeilge dansk
dansk Tiếng Việt
Tiếng Việt Pilipino
Pilipino Ελληνικά
Ελληνικά Maori
Maori tongan
tongan ᐃᓄᒃᑎᑐᑦ
ᐃᓄᒃᑎᑐᑦ ଓଡିଆ
ଓଡିଆ Malagasy
Malagasy Norge
Norge bosanski
bosanski नेपालीName
नेपालीName čeština
čeština فارسی
فارسی हिंदी
हिंदी Kiswahili
Kiswahili ÍslandName
ÍslandName ગુજરાતી
ગુજરાતી Slovenská
Slovenská היברית
היברית ಕನ್ನಡ್Name
ಕನ್ನಡ್Name Magyar
Magyar தாமில்
தாமில் بالعربية
بالعربية বাংলা
বাংলা Azərbaycan
Azərbaycan lifiava
lifiava IndonesiaName
IndonesiaName Lietuva
Lietuva Malti
Malti català
català latviešu
latviešu УкраїнськаName
УкраїнськаName Cymraeg
Cymraeg ກະຣຸນາ
ກະຣຸນາ తెలుగుQFontDatabase
తెలుగుQFontDatabase Română
Română Kreyòl ayisyen
Kreyòl ayisyen Svenska
Svenska հայերեն
հայերեն ဗာရမ်
ဗာရမ် پښتوName
پښتوName Kurdî
Kurdî Türkçe
Türkçe български
български Malay
Malay मराठीName
मराठीName eesti keel
eesti keel മലമാലം
മലമാലം slovenščina
slovenščina اوردو
اوردو አማርኛ
አማርኛ ਪੰਜਾਬੀName
ਪੰਜਾਬੀName albanian
albanian Hrvatski
Hrvatski Suid-Afrikaanse Dutch taal
Suid-Afrikaanse Dutch taal ខ្មែរKCharselect unicode block name
ខ្មែរKCharselect unicode block name


 印修
 印修

