群晖6.x系统中主要是用Moments来管理相册,之前有个用老版本的Moments来做补丁,可以让群晖支持人脸识别。其实这个有点风险,如果Moments升级多了,可能这个补丁就不好用了而导致程序调用出错。

群晖7.0以上系统新出现的Synology Photos出来后,这个补丁就不起作用了。一方面用的老Moments的so库文件,本来就是碰运气能用。另外一方面,Synology Photos是另外一种软件了,代码和库都有些不一样了。

经过研究,Synology Photos应该使用了OpenCv的DNN神经网络来识别人脸。这个OpenCv库可根据群晖的型号调用不同的神经网络模型,并调用显卡的GPU来加速计算。如果硬件和库代码不匹配,那就无法人脸识别了。所以人脸识别主要是显卡的GPU调用的问题,跟洗白没关系。技术上可以打个补丁解决。

这里的补丁主要是针对黑群晖的,白群晖厂家已经做好了适配,对应的CPU和GPU运行都没问题。如果无法人脸识别,那是Photos套件自身有Bug,等着Photos出新版本修复即可。黑裙由于建于虚拟机或者直接硬件运行群晖,使用的CPU和GPU都不一定是官方群晖用过的,比较容易出问题。 其实神经网络对CPU的兼容性比较高,不容易兼容的是显卡的GPU。

工具
IDA Pro 破解工具

之前提供的地址挂了,这个东西也是个破解版,有需要自行搜索下载吧。
Unraid虚拟机教程
Unraid上如何建虚拟机并启用人脸识别

https://post.smzdm.com/p/a9grrekp/
建议
以下是说明的打补丁的技术过程,如果没兴趣可以直接去文章最下面的下载地址下载。
个人建议没特殊需要的话,可以装DS3615xs的群晖,对GPU没要求,不用打如下补丁,可以直接人脸识别。
除非特别想用DS918+的系统,那显卡能支持,已经有人脸识别的话,也不用打补丁。
此补丁主要是为了用了DS918+的系统,显卡又不支持,而没有人脸识别的用户。
如果Synlology Photos升级,版本更新了,补丁可能会失效,需要重新破解。 所以为了省事,最好用DS3615xs,或者能够让显卡支持人脸识别。

提示:
用虚拟机装群晖,最少分4个CPU核心给群晖,在群晖里面要能看到4个核心。如果CPU核心没分够,这个人脸识别的代码库也容易出问题。

获取需修改破解的文件
装好群晖7.0以上系统。
装好Synology Photos套件
在群晖控制面版开启SSH访问。
使用如下步骤将文件拷贝出来。
拷贝出来的文件出现在群晖的Homes目录的home目录下,群晖文件浏览器可以直接看到,看到后下载到本地用IDA分析。
a. Win10电脑,打开命令行,输入 ssh jinlife@192.168.0.188
其中 jinlife是群晖的管理员,后面的ip是群晖的地址。输入密码登录群晖SSH。 第一次登录需要输入一个yes。
b. 登陆后继续输入 sudo -i 并再次输入密码进入管理员权限。
c. 输入如下命令将 libsynophoto-plugin-model.so 拷贝到homes的jinlife目录下。

cp /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so /volume1/homes/jinlife/
Bash
破解Synology Photos,让其不调用GPU显卡,只用CPU
用IDA打开libsynophoto-plugin-model.so, 自动分析完后打开输出函数页面 Exports
找到 __int64 __fastcall synophoto::plugin::network::IeNetwork::IsSupported(synophoto::plugin::network::IeNetwork *this)
Exports_1.png

双击这个函数,进入IDA View,按F5键生成伪代码。进入函数后,找到返回值为1的地方,都改成返回为0. 即强制让所有调用GPU是不是支持的地方都回复不支持。
Function1To0_2.png

这里将v8都赋值为0即可。改的时候需要进入 Hex View,右键有个同步选项,将Hex View和伪代码Pseudocode窗口Sync同步。再进入伪代码选择V8=1的地方,点开HexView就可以看到BB 01 00 00 00的代码了。把这个01改成00即可。 两个v8赋值成1的地方都要改。
ChangeByte_3.png

只有两个字节要改。
PatchedByte_4.png

改完后,使用IDA的Apply Patch功能,生成破解文件。 保存的时候记得勾上生成备份文件bak。
ApplyPatch_5.png

至此,已经生成了无视GPU的Photos补丁文件。DS918+和DS3615xs一样都不需要GPU就可以人脸识别了。
用群晖的文件浏览器将补丁 libsynophoto-plugin-model.so 拷贝回群晖的homes的jinlife目录。覆盖之前的文件。

如果之前ssh没退出,继续用。退出了就再次登录到管理员权限下。
使用如下的命令将补丁覆盖回原始位置。

cp /volume1/homes/jinlife/libsynophoto-plugin-model.so /var/packages/SynologyPhotos/target/usr/lib/
Bash
拷贝完后,重启一下Synology Photos套件。 或者重启群晖也行。
再次备份照片看看情况,正常需要等待一段时间,建议去喝杯茶,群晖需要索引照片后,人脸识别才能正常运行完毕。

补丁下载地址
https://github.com/jinlife/Synology_Photos_Face_Patch/releases
Github认为Readme里面的链接到这个博客是在打广告,没啥征兆就封掉账号了。还真没想到是这个原因,Github太牛了。我只是放了个双向链接,一个是代码库,一个是技术文档,互相引用。结果是打广告。就这小技术博客能有啥广告,都是免费分享的东西,玩玩而已。看来Github不是啥稳定放代码的地方,不靠谱,动不动就封号,这也太不保险了,还是自建的Git库靠谱。最近查了下Github,因为美国制裁还封掉过伊朗的所有个人账号。。。这是个开源的地方吗,太政治了。国内建gitee还是有必要的,有代码还是得多处备份,只放Github的风险太高了。
经过跟Github的Support沟通,终于要回账号了,这帮人瞎搞,没啥正当理由继续封账号,应该是机器人出错了,乱封的账号。这跟杀毒软件误杀似得,做机器人的水平也一般啊,还直接用封账号的方式处理,真不靠谱。

放个执行文件在这,有需求自己patch吧。

链接: https://pan.baidu.com/s/1sjeAbWxNAsc49CODE-31Mw?pwd=d97s
把这个文件用FileStation上传到群晖,在ssh界面用chmod +x PatchELFSharp 加上执行权限,然后运行如下命令即可。可以做成任务计划,升级了Photos之后,运行一下计划就行了。

./PatchELFSharp "/var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so" "_ZN9synophoto6plugin7network9IeNetwork11IsSupportedEv" "B8 00 00 00 00 C3"
Bash
libsynosdk.so.7 支持NFS和CIFS远程目录。VideoStation或AudioStation可用。

./PatchELFSharp "/usr/lib/libsynosdk.so.7" "SYNOFSIsRemoteFS" "B8 00 00 00 00 C3"
Bash
本文作者:jinlife

话不多说,NFS挂载UNRAID的目录,这样文件文件直在UNRAID上我认人认为就算做数据恢复也很方便。在IMG里文件有一点点损坏全完了。。

unraid支持NFS群晖6.2.zipunraid支持NFS群晖6.2解压到UNRAID下新建虚拟机设置如下
1.jpg
1.jpg
1237×633 59.9 KB

强停虚机后进行编辑。
2.jpg
先取右边
3.jpg
3.jpg
1267×253 17.9 KB

修改网卡型号 e1000
4.jpg
启动主机
5.jpg

使用群晖的搜索工具搜出来接下来进去设置就行了
6.jpg
6.jpg
808×305 27.6 KB
帐号admin 密码123456

进入磁盘管理新增
8.jpg
8.jpg
1149×391 37.6 KB
磁盘的类型选择无所谓最后反正NFS挂载,我是这个认为的。哈哈

新增存储空间~

9.jpg
9.jpg
1030×595 32.5 KB
然后安装套件 记得 Synology Drive Client 安装到volume2空间

11.jpg
11.jpg
997×713 50.3 KB
后面就在UNRAID里新建一个目录在建几个子目录,把NFS共享打开。
/mnt/user/Home_Nas/DSM_Disk1/photo
/mnt/user/Home_Nas/DSM_Disk1/video
/mnt/user/Home_Nas/DSM_Disk2

群晖里新建挂载任务
10.jpg
10.jpg
711×639 30 KB

新建开机启动任务
12.jpg
12.jpg
574×555 32.4 KB

/bin/mount -t nfs -o hard,vers=3 192.168.200.253:/mnt/user/Home_Nas/DSM_Disk1/photo /volume1/photo
/bin/mount -t nfs -o hard,vers=3 192.168.200.253:/mnt/user/Home_Nas/DSM_Disk1/video /volume1/video
/bin/mount -t nfs -o hard,vers=3 192.168.200.253:/mnt/user/Home_Nas/DSM_Disk2 /volume2

https://www.leanfan.com/149.html
https://blog.jinlife.com/index.php/archives/49/
https://bbs.iobroker.cn/t/topic/914