前期咱们作了一个小程序,实现集体照片的自动分发。简单来讲就是用户上传一张集体照,凡是出如今集体照中的人都能自动关联到此张照片,有点相似 QQ 和 FB 以前的标记用户,可是整个过程是自动的,无需人为分发,问题就出如今自动上。算法
首先若是自动的话就涉及到照片比对技术,若是本身技术实力雄厚(好比你是吴恩达)能够从底层神经网络开始写起,或者使用开源的人脸识别框架,我使用了百度和腾讯的人脸识别接口,用着还能够,基本是免费的(需求不高的时候)。数据库
每位用户首先上传一张本身的大头照,主要是为了去匹配集体照,某位用户上传一张照片,就将此集体照与全部的用户大头照逐一比对,凡是能匹配成功的关联之。小程序
看似很是简单的功能,其实里面存在一个巨大的坑,若是用户量上千万或者上亿的时候,用户每上传一张集体照就要进行亿次的比对,这根本不可能实时,因此咱们刚开始的时候考虑天天定时去比对一次,好比在晚上 12 点,全部当天上传的集体照去逐一比对,问题看似可以解决,可是没有了实时性,很是影响用户体验。我苦思冥想了几天后终于找到了一个实时的解决方案。网络
对问题进行分析,解决方案就来了,只要我可以优化比对程序,将亿次的比对实现实时操做,问题便可解决。然而我不是吴恩达,换做吴恩达可能也没办法,咱们真的作不到亿次比对实时操做。框架
彷佛陷入了僵局,然而咱们来换一个角度思考此问题,咱们为什么不将亿次的比对减小到能够实时的量级?优化
那么,如何下降比对次数呢?解决方案以下:接口
用户上传大头照的时候对此用户在咱们的数据库中进行标记,即每一个用户都有一个惟一的 faceid,并将此 faceid 和大头照存到百度或者腾讯的人脸库中;用户体验
上传集体照的时候,将集体照按照人脸进行切割,逐一的去百度或者腾讯的人脸库进行比对,若是可以匹配上,则能取到此人的 faceid,用此 faceid 即能查到所关联的用户,因而便可实现照片的自动分发。百度
简单的两步即解决了实时比对的问题,有的时候换一个角度去思考问题,问题便迎刃而解!神经网络