在.net core下使用百度人脸识别接口,实现对B站舞区小姐姐们的搜索

项目介绍

这是一个实验性质的AI项目,利用现有的人脸识别库,制作一些有趣的功能。例如,当你在漫展上集邮之后,发现自己和刘强东一样脸盲,这时候,你就需要一个工具,上传你的邮票,帮你找到你所搜集到奶茶小姐姐。

如何开启

  1. 从github下载源代码,然后进入 FindBilibiliUP 目录
  2. 到baidu激活AI开发者账号
  3. 将百度开发者账号填入配置文件里
  4. dotnet run

项目做了什么

  1. 写一个爬虫,搜集B站上舞区里的小姐姐。
  2. 利用百度AI的人脸识别,识别出带人脸的视频封面照。
  3. 利用百度AI的人脸库管理,利用带人脸的封面照来创建UP主的人脸数据库。
  4. 制作一个小网站,通过上传照片(提供链接地址),从人脸库里搜索出相似的小姐姐。

项目代码不复杂,我就不多做解释,这里只说在学习过程中碰到的问题。

… .net core 在linux下,百度的sdk会发生超时问题。…

.net core 的httpRequest和httpResponse方法可能有问题,在windows下面能正常的调用百度的sdk,但是在Linux下,一直会抛出超时的异常,在Stack Overflow里搜索了一下,大致是流没有关闭,第二次再使用的时候,内部在等待连接的对象池返回,而因为之前的没关闭,所以会一直处于等待中的状态,进而导致超时。
我的解决办法就是改百度的SDK,用webclient来改写接口调用。但正常情况下,是没问题的,但时不时的会抽风,导致百度api还是会超时,一旦进入超时模式,就退不出来,只能kill进程重启。

图片的数据量真大
果然是互联网,数据量不容小觑。在采集了不到30%的封面照后,发现服务器的硬盘满了,看了一下,都是封面照惹的祸。估计全下下来,要200G。所以后面的代码将保存文件到本地的代码取消了,都是采集到照片后,将照片直接发给百度处理。顺便再吐槽一下百度的api,文档里支持上传url链接,但实际上上传链接会报错,提示木有权限。所以只能先本地下载后再上传bit数据给百度。
已处理的数据也比较多,本地用sqlite保存,目前为止,主数据用了1G空间。

识别率真差
你没看错,识别率差到了极点。找了几个我喜欢的小姐姐照片(从她们的相册里随机抽取出来的),基本上都没法匹配上,匹配到的,相似度都没超过6成。测试途径

首选我们来看一个统计数据:

UP主数量:76178
AV数量:292293
已处理照片数量:63755
有效的人脸照片数量:6708

已处理照片数量,6w张,主要是获得UP主粉丝数量在3000以上。其中,有效的,可以用于人脸库的只有不到7k张。有效的人脸库用图标准,可以看百度sdk的文档,基本上就是要照片信息,人脸完整,没有过多遮挡以及脸部的区域大于一定的阈值。从百度后台看,就这7k张人脸,最终对应上的up主,也才1300多,这比例,果然竞争激烈啊。

我能想到的,差的原因:

ps
ps
ps

中国男同胞最恨的ps邪教。把人都修到连百度都认不出的样子。

最后

这个项目主要是学百度ai的sdk而写的,写了1周左右。但上传代码和写blog就拖了快1个月。
等有时间,再接入腾讯和阿里的人脸sdk,比较一下他们在ps脸下的识别率都能有多少。

你可能感兴趣的:(.net)