最新消息:最近家里事情比较多,有点顾不上这个,各位多担待!

解决黑群晖DSM7.0系统Synology Photos无法人脸识别问题

NAS相关 骑猪看月亮 308浏览 0评论

(该文转自:JINLIFE – BLOG 原文地址:https://blog.jinlife.com/index.php/archives/49/)

       写在最前:网上转悠发现这篇文章,其实7.0刚出来的时候有网友反映无法人脸识别,我也曾想过通过替换原文件的方法来实现不洗白就人脸识别,因为当时6.x时代就是这样解决的,但是当时没有替换的补丁文件所以也没有成功,当时也没有想过通过破解文件的方式来自己修改补丁文件,今天看到这位大神的操作着实得竖个大拇指了,这位大神大部分篇幅介绍了如何破解,如果想学习可以好好看看,如果是拿来主义可以直接下载大神破解好的文件进行替换就行了,下了就是大神的具体操作:


       群晖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。

工具

1、IDA Pro 破解工具  http://www.ddooo.com/softdown/185022.htm

nraid虚拟机教程

2、Unraid上如何建虚拟机并启用人脸识别 https://post.smzdm.com/p/a9grrekp/

建议

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

提示:

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

获取需修改破解的文件

  1. 装好群晖7.0以上系统。
  2. 装好Synology Photos套件
  3. 在群晖控制面版开启SSH访问。
  4. 使用如下步骤将文件拷贝出来。
  5. 拷贝出来的文件出现在群晖的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/
#/volume1/homes/jinlife/ 此目录可以根据自己实际修改

破解Synology Photos,让其不调用GPU显卡,只用CPU

       用IDA打开libsynophoto-plugin-model.so, 自动分析完后打开输出函数页面 Exports
       找到 __int64 __fastcall synophoto::plugin::network::IeNetwork::IsSupported(synophoto::plugin::network::IeNetwork *this)

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

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

         只有两个字节要改。

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

       至此,已经生成了无视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/ 
#其中cp后面的这个地址需要修改成自己实际文件地址

       拷贝完后,重启一下Synology Photos套件。 或者重启群晖也行。再次备份照片看看情况,正常需要等待一段时间,建议去喝杯茶,群晖需要索引照片后,人脸识别才能正常运行完毕。

补丁下载地址:

https://github.com/jinlife/Synology_Photos_Face_Patch/releases

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址