当前位置:首页 > 闲鱼技术 > 正文内容

备战双十一·谁的表情包在天上飞

xianyu3年前 (2021-03-14)闲鱼技术242

作者:闲鱼技术-镇雷,还休

微信号:pps688888
添加微信, 免费测试软件
复制微信号

前言

双十一刚过,这个全民吃土的时期,闲鱼非常贴心的推出了一个土味表情包的活动,可以通过定制表情包来吐槽并分享大家吃土的心声,这篇文章将为大家介绍如何用Python和weex快速搭建这样一个基于人脸识别的活动项目。

关键词:weex、Python、人脸识别

1. 前端搭建

前端页面主要包括:拍照和生成表情两部分。

1.1 拍照

拍照使用的是windvane的拍照模块,目前只能支持weex环境,h5环境暂时只能通过提示和拉端让引导用户到闲鱼or手淘去生成土味表情。在手淘的最新版本8.1.0中,直接用WVCamera.takePhoto进行拍照和上传图片可能出现问题,所以需要把拍照和上传图片分开调用,上传图片使用WVCamera.confirmUploadPhoto接口。

1.2 生成表情

IMG_0359.PNG

通过调用后台接口,传人照片地址和表情模板编号,生产表情后,接口会返回表情的地址然后渲染。
效果如下:

IMG_0360.PNG

2. 服务端搭建

工程服务端使用纯Python搭建,可以满足快速搭建并部署上线活动的需求,使用的是SocketServer、BaseHTTPServer这两个库构建出的Http服务器:

socketserver是标准库中的一个高级模块,用于网络客户端与服务器的实现。模块中,已经实现了一些可供使用的类,socketserver模块包括许多可以简化TCP,UDP,UNIX域套接字服务器实现的类;

BaseHTTPServer模块构造了HTTP请求处理基类BaseHTTPRequestHandler,它继承自SocketServer模块中的StreamRequestHandler类;

用起来很方便,调用如下:

当有http请求,会触发RequestHandler的do_GET回调,执行里面的业务代码

基础的调用实现之后,接下来的工作还有用ThreadingHttpServer来实现多线程的webserver,对参数做签名校验,使用Nginx来做分流等…就不一一细说了。

3. 算法选型

人脸融合到表情包的过程可以分四步:

  • 人脸检测
  • 人脸位置对齐
  • 提取脸部五官特征,合成到表情包
  • 调节脸的色调

3.1 在人脸识别部分,我们使用的是dlib库,可以很方便快捷的识别出脸部的68个点,点位置的分布如图:

10_51_41__11_14_2018.jpg

使用起来很简单:

3.2 人脸位置对齐,我们取到两张脸的标记矩阵之后,通过使用奇异值分解计算旋转,再利用仿射变换矩阵转化:

3.3 提取人脸中间特征包括了眼睛、眉毛、鼻子、嘴巴,将这个T字型的关键区域,需要将特征连接成一个凸多边形,然后使用cv.fillConvexPoly填充生成mask遮罩,遮罩的边缘外部羽化扩展,隐藏不连续区域,而表情包的底图需要先将原有的表情擦除,防止原有特征影响照片的图案,再将遮罩与表情包底图的脸部特征矩阵对齐,得到混合图案。

3.4 调节脸的色调是最后一步,经过上一步合成的脸还是原来的色值,需要转换为黑白的图片,首先去色,然后使用gamma曲线调节对比度,让脸部黑色部分更黑,白色部分更白,特征更加明显,调节对比度方法如下:

4. 算法优化

我们从两个方面对算法做了简单的优化:

一是使用多进程优化,这步使用的是loky库实现:

执行部分:

需要注意的是dlib的初始化部分,需要放入多进程优化的函数中,如果作为单例,dlib库会报no safe错误,而当dlib初始化放到了多进程的函数中,每次初始化都会调用一遍,这也是一个耗时的点,使用时需要去权衡优化。

另外还有一点需要注意是,如果你的功能是用Python2实现,另一个更加主流方便的多进程库Process则不能使用,与dlib会有冲突。

二是压缩检测区域,可以对原图先复制一个副本然后将副本压缩至1/4,然后传入dlib中进行识别,再对识别出的landmarks特征数组乘以4,得到原来的特征位置,再来处理原图和复原后的特征点集。除了压缩还可以通过裁剪来减小dlib的计算量,截取ROI区域,识别时将表情包人脸的区域截取出来传入dlib,聚焦图片中部位置识别,或者可以配合OpenCV的背景去除来缩小识别区域。

总结

以上就是表情包活动的全部实现流程了,其中性能、效果还有很多可以优化的点,欢迎大家在闲鱼或者手淘体验”拯救吃土族“定制表情包并提出建议和反馈~

<

扫描二维码推送至手机访问。

版权声明:本文由中客网络发布,如需转载请注明出处。

本文链接:http://www.zzzmc.cc/288.html

分享给朋友:

相关文章

闲鱼技巧,怎么去提高我们的商品浏览量

闲鱼技巧,怎么去提高我们的商品浏览量

  闲鱼是一个大型的二手交易平台,很多人都想瓜分这一块大蛋糕,所以入驻闲鱼的商家越来越多了,我们也是和其他人一样,都想瓜分这一块蛋糕,但是想要商品卖出去的前提就是我们需要有一定的浏览量来支持我们,所以浏览量是闲鱼开店必不可少的,我们该如何提升自己的浏览量呢,今天我就给大家分享一下。   我们在发布商品时,我们的定位是可以更改的,这个时候我们就可以选择人数基数比较大的城市来发布我们的商品,因为人口基数打的话,看得到我们的人就会很多,再说闲鱼是一个二手交易平台,所以很多的人都比较信任同城的商品,所以我们选择在人口基数大的城市发布商品是很有优势的,这样我们的浏览量也会快速的提高。   我...

闲鱼技巧,教你如何赚钱不被坑

闲鱼技巧,教你如何赚钱不被坑

  【闲鱼批量上架软件】随着现在生活水平的提高,家里的物品更新换代实在太快,很多朋友就想在签约嗨皮皮上把自己的闲置物品卖掉或者购买一些二手性价比比较高的物品。但是闲鱼鱼龙混杂,很多新手玩家很容易被骗。今天我就为大家带来几个闲鱼技巧。   关于出售物品:   我想很多的朋友都在闲鱼上卖东西被坑。而且大多数卖家都是哑巴吃黄连,有苦说不出,联系客服也解决不了。   1.非常令人烦恼的情况就是到手刀。这种情况就是指,物品寄出前与买家商量好价格,但是寄到了买家却找各种理由,来进行对物品的砍价,要求退还部分金额,不然的话就找客服投诉,让人非常的烦恼。   【闲鱼批量上架软件】2.恶...

如果闲鱼没有曝光,我们该怎么办

如果闲鱼没有曝光,我们该怎么办

  现在有越来越多的人成为闲鱼卖家,每个人都想做赚钱的闲鱼,但很多人没有方法,导致没有浏览,所以他们的商品不能出售。那么我们国家应该如何解决这个社会问题?今天,我会带给你如何改善你的闲散的鱼浏览。   第一,我们重新去发布商品,因为自己的商品没有浏览量,我们重新删除了再发布,这样的话,闲鱼的排名就会靠前,我们的浏览量也会慢慢的提高,但是我们在发布商品时,也有一些小技巧,我们应该去错开上班时间去发布,在别人下班的时候发布自己的商品,这样别人下班时间可以浏览闲鱼,如果自己的闲鱼排名靠前,浏览到你商品的几率就会变大,这样我们的浏览量也会大大的提高。   二,我们的教师可以修改付款并给予各...

获得曝光的几种最佳方法

获得曝光的几种最佳方法

  想要成为月入过万的卖家吗?想要拥有30岁不到就有车有房的人生吗?如果你想要,你就要提高你的闲鱼宝贝的曝光。很多人选择在闲鱼上发展自己的副业,也有很多人在闲鱼上成功。他们成功的基石就是提高宝贝的曝光率,所以只要宝贝的曝光被提高,你就有可能成为下一个人生赢家。   今天小编就为大家介绍获得宝贝曝光的几种最佳方法,码字不易,大家可以先双击点一个赞再看哦!   一:做好基本功。这里所指的基本功就是做好宝贝标题,相信大多数卖家都知道宝贝标题的重要性,只要做好宝贝标题,获得几万甚至几十万的曝光量不成问题。   如何做好宝贝标题呢?一定要谨记借鉴与超越。借鉴强者标题,超越强者标题。这样...

闲鱼的浏览量越来越少,如何增加浏览量?

闲鱼的浏览量越来越少,如何增加浏览量?

  【闲鱼流量】闲鱼的浏览量越来越少,如何增加浏览量?      2020年08月25日   闲鱼流量   120 views   0   闲鱼去一个大型的二手交易app。很多人都加入了闲鱼,在上面交易自己的闲置物品。但是很多人的浏览量很低。基本上没有什么人看。这种闲鱼浏览量低怎么办呢?下面我给大家分享几个小妙招。   1.坚持签到:   每天去签到,签到可以挣鱼币。鱼币作用是非常大的。可以参加闲鱼的推广活动。从而就可以提高自己闲鱼物品的浏览量。   2.标题准确:   每个宝贝的标题必须对应你发的宝贝,别人搜索的时候搜索的就是你标题...

闲鱼怎样增加商品曝光率让更多人看得到?

闲鱼怎样增加商品曝光率让更多人看得到?

  【闲鱼曝光量】闲鱼怎样增加商品曝光率让更多人看得到?      2020年09月29日   闲鱼曝光率   60 views   0   【闲鱼浏览量】我们想要在闲鱼上发家致富,就要增加自己的曝光率,因为曝光率是支撑商品游览量的基础,怎样才能快速增加商品曝光率,其实,增加商品曝光率的方法有很多,下面我就给大家分享一下我积累的方法。   一条就是保住你原有的商品基本曝光率,什么是基本曝光率呢?基本曝光率就是闲鱼的官方分配给到你的曝光率,那怎么样才能保住自己的基本曝光率呢?   第一点就是自己不要出现违规操作,比如有敏感词的话就不要说,不算与顾客...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。