一. 业务背景

随着各大视频平台相继推出弹幕穿人功能,广受好评。在大众消费视频的同时,大大增加了观看的娱乐互动性。接着,其他视频、动漫、阅读等内容平台也都增加了弹幕功能。弹幕已经成为一种重要的内容互动的手段。
优酷作为视频消费为主的业务平台,也针对相关爆款视频,推出了服务端分割技术主导的弹幕穿人功能。服务端分割功能稳定,识别精度高,但存在一定的存储和带宽成本,且无法满足实时的特效,特别是爆款视频,时效性要求特别高。因此,优酷视频弹幕穿人业务对移动端的人像分割技术有强烈的需求。

针对优酷弹幕穿人业务,设计了实时性和精度都较高的移动端人像分割模型,加上淘系PixelAI SDK的加持,将人像分割技术上线到优酷移动端弹幕穿人业务。本文将从算法和工程两个方面,详细阐述解决方案。

二. 显著人像分割

优酷弹幕穿人,主要用于视频中显著人像的分割,对于非聚焦区域的人物和背景都无需分割。移动端和服务端模型的设计有很大区别,服务端精度要求高于实时性,因此模型的设计可以更大,对于输入的尺寸要求也可以更大。而对于移动端而言,模型的设计需要精准到每个模块的设计和耗时需求,因此首先需要和业务明确显著人像的定义。显著人像除了指镜头下聚焦的区域外,还需要明确人物的尺寸比例。在明确算法需求的前提下,进行数据采集,打标,模型设计以及训练优化。
1.构建数据集
团队经过了几年的分割沉淀,已经拥有了百万级的人像分割数据,且服务了集团的钉钉和淘系相关业务。
针对优酷特殊的场景需求,将视频场景划分为了:现代都市剧,古代剧,军事题材。在不同的题材中,有针对显著人像的特征,分为了:半身、全身、单人、多人,以及人体不同的姿态。由于影视作品中有很多特殊效果镜头,会影响算法的分割效果,所以针对这些特效,我们还专门收集了一些长尾的数据,比如逆光、暗光、伸手等场景,可以提高模型的鲁棒性。最终,我们使用了百万级的训练数据。

2.模型设计
2.1 轻量化网络研究

目前常用的轻量化网络模型有mobilenet系列、shufflenet系列,ghostnet系列等,但是这些学术界的移动端模型离实际的移动端应用还相差甚远,特别是运行时效上完全不能达到业务需求。针对这一问题,我们在集团的MNN移动端推理框架下,从算子执行时间,不同模块执行效率,不同网络效率三个维度在CPU和GPU模式下进行了对比实验,结果如下图所示:


通过网络参数控制变量实验分析,VGG这类直筒型的网络设计性能最佳,效率最优。
2.2 自研网络AirSegNet系列设计
2.2.1 网络backbone设计
基于前述实验结论,我们重新设计了淘系新的移动端分割网络AirSegNet系列,主要的backbone设计思想如下:
(1)Decode部分的卷积全部使用1x1 conv,先卷积改变通道后与low feature map进行融合,从而降低计算量;
(2)Decode部分融合了x2,x4,x8倍三种尺度的低层特征,还原更多细节;
(3)设置双线性插值参数align_corners=False而非主流的True,获取更精准的边缘分割,在True模式下,当推理的图片输入分辨率与训练不一致时,会存在像素点误差。

模型会针对不同机型,以及CPU或GPU模型,进行相应的修改,已达到最佳的性能。当前我们设计完成了AirSegNet-CPU, AirSegNet-GPU,AirSegNet-Server三种主干架构。
2.2.2 训练优化
在模型训练中,采用交叉熵损失函数作为loss函数,在此基础上逐步实验,发现了几个有效的策略:
(1) 背景权重计算,解决误识别问题。统计训练数据中前景和背景的分布比例,设计分类权重,分类权重采用经典的计算公式:其中,r 表示前景或者背景的比例。
ω=1/(log(1.1+r))
(2) 边缘加权,解决边缘融合效果。
采用5x5的核对ground truth进行膨胀操作;
采用5x5的核对ground truth进行腐蚀操作;
判断图1不等于图2的部分,即为边缘,给边缘分配5倍的loss权重。
(3) 提出聚类loss,提升分割精度。计算公式如下:如果点i、j的ground thuth为同一类,则约束两者的网络输出小于α,否则约束两者的网络输出大于β。
loss_(i,j)={█(max(‖e_i-e_j ‖-α,0) if l_i=l_j@max(β-‖e_i-e_j ‖,0) if l_i≠l_j )┤
(4)使用topk loss。针对难负样本,尤其是针对模型稳定阶段的深度优化有较大的效果。
在使用边缘加权和聚类loss的前提下,针对GPU训练模型的对比实验结果如下:

最终人像IOU达到了0.98。
2.2.3 .后处理优化
模型输出的效果在不同的分辨率下会出现锯齿状的现象,特别是原图尺寸比模型的实际输入尺寸大很多的时候。因此,需要进行一系列后处理优化,提高实际的呈现效果体感。
(1)边缘优化,分为如下两步:
对原始网络输出使用3x3的高斯模糊,平滑人像边缘,实际在模型转成mnn时,同时将高斯模糊融合进网络,既可以节约处理时间,又可以避免在C++中调用高斯模糊。
由于网络输出的是0-1之间的概率值,因此融合背景图后在边缘处会存在过渡区域,采用曲线变换缩小过渡区域。
(2)利用动量抑制帧间抖动,为了自适应处理不动场景和跳变场景,动量是一个变化值,会根据变化的幅度改变阈值。
(3)针对画面变化很小时,采用隔帧检测,减少计算量。

三. 工程部署

AirSegNet系列算法集成到集团的算法部署平台PixelAI SDK中,优酷使用此SDK进行对接。工程端,算法前向主要流程如下图所示,视频序列中每幅图像经过CNN网络,得到初步的分割结果,随后经过后处理(包括平滑和动量处理等步骤),得到稳定精细化的分割结果。整个流程中耗时最久的就是CNN网络推理。

基于集团的MNN推理框架,针对我们的设计的AirSegNet-CPU, AirSegNet-GPU模型,在不同机型上进行了性能测试,如下所示:
性能测试结果(单位:ms):绿色代表CPU推理耗时,粉色代表GPU推理耗时。
1.Android机型测试

测试结论:
(1)对于高端机型来说(>85),CPU性能很强大,轻量化模型GPU加速均不太明显。
(2)对于中端机型来说(30-70),GPU模型利用GPU加速效果明显,但CPU模型利用GPU反而会变慢,这是因为CPU模型的设计不符合GPU加速逻辑。
(3)对于低端机型来说(<20),由于GPU太弱,所有模型使用GPU推理都会比CPU推理慢。
2.ios机型测试

**ios测试结论:**对于iPhone系列来说,CPU性能很强,CPU模型推理速度高于GPU。
3.优酷业务工程逻辑优化
优酷业务要求,整个SDK请求耗时要小于15ms。根据如上的测试结果,PixelAI SDK框架会根据不同的机型,下发最优的模型,快速适配不同的业务场景。但在优酷业务对接中,仍然进行了如下两个严重的耗时问题:
1)纯GPU模型初始化严重耗时。在下发GPU模型的时候,会存在初始化耗时特别严重的问题,达到秒的级别。因为,MNN的GPU推理初始化时耗时很高,如果单纯下发GPU模型,那么第一帧耗时就会特别高。这就需要从工程端去使用策略来解决。核心解决思路是,如果此类机型GPU模型最优化,则同时下发CPU模型和GPU模型,且同时初始化两类模型。在GPU模型初始化阶段,使用CPU模型先行进行前向,待GPU模型初始化完成后再切回GPU模型进行前向推理。根据如上结论,对于90%以上的机型,CPU的前向推理也是可以满足耗时小于15ms的业务需求的,在用户端达到无感的弹幕体验。
2)纯CPU模型弹幕渲染卡顿。针对优酷弹幕业务的特殊性,除了算法以外,也有很多的渲染线程,在移动端上同时使用模型和这些线程的时候,CPU资源非常吃紧,所以导致渲染卡顿的问题。根据如上的实验结论,对于90%以上机型的GPU模型前向耗时是能符合15ms以内的需求的,因此采用了CPU+GPU混合下发的方式。在不影响渲染的情况下,保证了模型的效率。

查看系类文章:
优酷移动端弹幕穿人架构设计与工程实战总结

参考文献:
[1]Khoreva A, Perazzi F, Benenson R, et al. Learning video object segmentation from static images[J]. arXiv preprint arXiv:1612.02646, 2016.
[2]Jégou S, Drozdzal M, Vazquez D, et al. The one hundred layers tiramisu: Fully convolutional densenets for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition workshops. 2017: 11-19.
[3]Ding H, Jiang X, Shuai B, et al. Context contrasted feature and gated multi-scale aggregation for scene segmentation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2393-2402.
[4]Jégou S, Drozdzal M, Vazquez D, et al. The one hundred layers tiramisu: Fully convolutional densenets for semantic segmentation[C]//Proceedings of the IEEE conference on computer vision and pattern recognition workshops. 2017: 11-19.
[5]Chen L C, Zhu Y, Papandreou G, et al. Encoder-decoder with atrous separable convolution for semantic image segmentation[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 801-818.
[6]Chen L C, Collins M, Zhu Y, et al. Searching for efficient multi-scale architectures for dense image prediction[J]. Advances in neural information processing systems, 2018, 31.
[7]Tang J, Aksoy Y, Oztireli C, et al. Learning-based sampling for natural image matting[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 3055-3063.
[8]Li H, Xiong P, Fan H, et al. Dfanet: Deep feature aggregation for real-time semantic segmentation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 9522-9531.
[9]Zhang S H, Dong X, Li H, et al. PortraitNet: Real-time portrait segmentation network for mobile device[J]. Computers & Graphics, 2019, 80: 104-113.
[10]Tang J, Aksoy Y, Oztireli C, et al. Learning-based sampling for natural image matting[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 3055-3063.
[11]Zhang Y, Gong L, Fan L, et al. A late fusion cnn for digital matting[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 7469-7478.
[12]Ghosh S, Das N, Das I, et al. Understanding deep learning techniques for image segmentation[J]. ACM Computing Surveys (CSUR), 2019, 52(4): 1-35.
[13]Yuan Y, Chen X, Chen X, et al. Segmentation transformer: Object-contextual representations for semantic segmentation[J]. arXiv preprint arXiv:1909.11065, 2019.
[14]Wang Y, Zhou Q, Liu J, et al. Lednet: A lightweight encoder-decoder network for real-time semantic segmentation[C]//2019 IEEE International Conference on Image Processing (ICIP). IEEE, 2019: 1860-1864.
[15]Wu H, Zhang J, Huang K, et al. Fastfcn: Rethinking dilated convolution in the backbone for semantic segmentation[J]. arXiv preprint arXiv:1903.11816, 2019.
[16]Sengupta S, Jayaram V, Curless B, et al. Background matting: The world is your green screen[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 2291-2300.
[17]Park H, Sjosund L, Yoo Y J, et al. Sinet: Extreme lightweight portrait segmentation networks with spatial squeeze module and information blocking decoder[C]//Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision. 2020: 2066-2074.
[18]Luo L, Xue D, Feng X. Ehanet: An effective hierarchical aggregation network for face parsing[J]. Applied Sciences, 2020, 10(9): 3135.
[19]Cheng H K, Tai Y W, Tang C K. Modular interactive video object segmentation: Interaction-to-mask, propagation and difference-aware fusion[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 5559-5568.
[20]Wu T, Tang S, Zhang R, et al. Cgnet: A light-weight context guided network for semantic segmentation[J]. IEEE Transactions on Image Processing, 2020, 30: 1169-1179.

优酷端侧弹幕穿人技术实战之:PixelAI移动端实时人像分割相关推荐

  1. 弹幕穿人技术实践 — AI 在视频领域的运用

    导读:如今,B 站已经成为了国内最大的视频弹幕网站,其他视频平台.漫画.阅 读等内容平台也都增加了弹幕功能.弹幕已经成为一种重要的内容互动的手段, 因此研发一套接入灵活.玩法丰富的弹幕组件就显得非常重 ...

  2. 基于优酷业务特色的跨平台技术 | GaiaX 开源解读

    作者:别志华.祁强 GaiaX 跨端模板引擎,是在阿里优酷.淘票票.大麦内广泛使用的 Native 动态化方案,其核心优势是性能.稳定和易用.本系列文章<GaiaX 开源解读>,将带大家看 ...

  3. GaiaX开源解读 | 基于优酷业务特色的跨平台技术

    GaiaX跨端模板引擎,是在阿里优酷.淘票票.大麦内广泛使用的Native动态化方案,其核心优势是性能.稳定和易用.本系列文章<GaiaX开源解读>,带大家看看过去三年GaiaX的发展过程 ...

  4. 优酷用户触达平台技术大揭秘

    作者| 阿里文娱技术专家 曾辰 责编 | 李雪敬 出品 | CSDN(ID: CSDNnews) 前言 优酷在用户运营场景上,沉淀了丰富的用户运营及营销触达策略.为了保障用户的持续活跃,当用户进入产品 ...

  5. 服务端断开_Java多线程技术:实现多用户服务端Socket通信

    一.多用户服务器 多用户服务器是指服务器能同时支持多个用户并发访问服务器所提供的服务资源,如聊天服务.文件传输等. 上一篇的TCPServer是单用户版本,每次只能和一个用户对话.我们可以尝试多用户连 ...

  6. 优酷移动端弹幕穿人架构设计与工程实战总结

    弹幕穿人方案主要分为两类:"云端离线人体分割+端侧渲染"和"移动端端侧实时人体分割+端侧渲染".在这里我们分别简称为云端方案和端侧方案. 本系列文章主要聚焦在优 ...

  7. 优酷弹幕穿人「渲染技术」揭秘

    弹幕穿人功能,能使用户在弹幕刷屏的情况下,又不错过人物画面.因此,弹幕穿人功能一经推出就受到了广大用户的喜爱. 就技术方案而言,弹幕穿人方案可以分为以下两大类:"云端离线人体分割+端侧渲染& ...

  8. 边看边互动!优酷酷看模式技术揭秘

    从"叉手礼"."水盆羊汤"."酒晕妆"这些唐朝人生活细节,到精美的坊间造型.充满意境的诗词歌赋,<长安十二时辰>不仅以缜密剧情赢 ...

  9. 我在优酷 OTT 端做自动化制图

    作者 | 阿里文娱高级前端开发工程师-罄天 责编 | 杨碧玉 头图 |  CSDN 下载自视觉中国 背景 图片作为网页中的重要组成元素,广泛存在于各种站点中,有些站点中的图片内容已经远远超过了其它网页 ...

最新文章

  1. 《LeetCode力扣练习》剑指 Offer 05. 替换空格 Java
  2. redis面试问题(二)
  3. 集成学习(一)—预备知识:分类树和回归树
  4. ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)
  5. 力扣 1553. 吃掉 N 个橘子的最少天数 记忆化DFS|记忆化BFS|剪枝
  6. zabbix服务器搭建
  7. WPF:Documents文档--Annomation批注(1)
  8. js获取php多维数组,vue.js,多维数组_vuejs2.0 多维数组操作?,vue.js,多维数组 - phpStudy...
  9. 带有Powershell的XSLT
  10. C#进阶高级程序员开发必知必会:泛型的定义实操案例: 实现堆栈的后进先出功能
  11. 服务器硬盘噪音大怎么回事,东芝服务器硬盘响声大吗?
  12. 服务器引导盘装系统怎么选择u盘,小编教你怎么设置u盘为启动盘
  13. ideal在编译的时候报程序包不存在错误
  14. 友邦人寿发布非一线差异化发展策略,稳步加速中国市场拓展布局
  15. java去除中文括号小括号,或者英文括号
  16. Sql Server 2008 R2 清理内存的三种方法
  17. DB2数据库的备份与恢复
  18. Java23种设计模式——19.行为型模式之中介者模式
  19. 从零开始搭建创业公司后台技术栈
  20. SD卡数据恢复教程:3种工具一键恢复SD卡误删的照片

热门文章

  1. 虚拟仪器总线技术的发展和应用
  2. 基于ATR确定头寸的择时股票量化策略
  3. springboot学习网址汇总
  4. 滚动文字、滚动图片代码
  5. Qt编写地图综合应用27-点聚合
  6. 2013传智播客视频--.ppt,.pptx,.doc,.docx.目录
  7. Scala核心编程 第六章—Scala面向对象编程(一)
  8. 如何从容迎接人工智能时代的到来?让我们听听专家的解读
  9. seo可以从哪些方面优化(seo优化的方法有哪些)
  10. 什么是公链,私链,联盟链?