首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >智能手机哪家强?实时人像分割大比拼!

智能手机哪家强?实时人像分割大比拼!

作者头像
AI研习社
发布2018-12-07 18:05:36
1.5K0
发布2018-12-07 18:05:36
举报
文章被收录于专栏:AI研习社AI研习社

本文为 AI 研习社编译的技术博客,原标题 : Real-time Portrait Segmentation on Smartphones 翻译 | 康奈尔•斯摩、Dawin_Park 校对 | 酱番梨 整理 | 志豪 原文链接: https://blog.prismalabs.ai/real-time-portrait-segmentation-on-smartphones-39c84f1b9e66 注:本文的相关链接请点击文末【阅读原文】进行访问

手机上实时人像分割

分割效果的演示:原始图像和散景效果。

近年来,各种图像效果越来越受到人们的关注。散景一个很受欢迎的例子是在图像的非聚焦范围进行虚化。这个效果由快速镜头大光圈实现。不幸的是,手机摄像头很难实现这种效果,因为它还没达到技术规格的要求。然而,如果每幅图像的像素可以分为人和背景两个类别,就可以达到只有背景被虚化的散景效果。每个像素被分类的过程叫做语义分割,并且可以应用到不同的地方,比如改变图像的背景或者分别对前景或者背景进行过滤。

一些设备或许会使用立体相机提取深度信息来对图像进行分割。然而本文的方法是建立一个分割系统,从单张的RGB图像得到想要的信息。这样人像分割效果可以应用于更多的相机。

这些年来,计算机视觉取得了巨大的进展,尤其是在语义分割领域。这个成果取决于卷积神经网络。这种神经网络从图像中提取信息并推断出质量,包括分割图。然而,大部分的架构需要大量的计算能力以及设备的并行能力。这个需求和神经网络的普及导致设备厂商制造出了新的框架。这个框架支持神经网络可以在手机GPU上进行评估。在大多数情况下,这些解决方案比基于CPU的性能更好。

尽管深度学习在计算机视觉中很流行,但是我们仍旧能在所有的分割模型中可以找到一些缺点。在大部分情况下,神经网络运行太慢,很难在手机上进行实时判别。另个复杂问题是与手机框架的兼容性——不是支持所有的层。由于这些原因,我们设计了一个特殊的架构,适应于所有的约束。

最后的挑战是训练数据集,为了达到最好的性能,我们为这个任务收集了数据集并且创建了一个特殊的增强管道。

数据集

神经网络需要训练,所以构建神经网络最主要的部分是训练,因此最重要的部分是数据集。我们需要尽可能正确的分割图,所以我们数据集中所有的图片都是用专业的编辑程序手工标注。另外,我们希望数据是多样的。缺乏多样性或许会导致算法造成结构性的错误。举个例子,如果一个模型不能处理一个特殊的姿势,这可能是数据集不够具有代表性。我们使用两个方法来提高数据的质量:增强和收集额外的图像。随着时间的推移,我们的数据集的图像数量逐渐增加。目前,我们训练数据集中大概有13000张图片,测试集有1000张图片。包括各种姿势、全身的、半身的以及自拍。

图片增强:原始图像和两个随机增强的例子。

结构

神经网络需要设计结构。有很多不同的层和方法来进行组合,每个方法都有自己的优点。在确定我们的网络之前,我们需要理解结构的哪些特征是我们最想要的。我们希望的特征是快,轻量级以及兼容大多数的移动框架。为了实现这个,我们牺牲了收敛速度并且跳过了正则化层,通过减小模型尺寸以及大量的增强来防止过拟合。

另外,使用与平台兼容性的层是至关重要的。每个框架都有自己的一系列操作实现,我们必须使用这些操作的交集。我们使用以下层:卷积层,转置卷积,ReLu,sigmoid和逐元素增加。

架构最后的挑战是效率。输入图像的形状是关键的一个参数。我们模型的输入是降低图像的分辨率,然后输出时放大为原始形状。输入图像越小,推理越快。然而,分辨率太低,在放大图像时,会导致语义分割的结果模糊。我们能够实时处理的最高的分别率为256x256。

最后的网络拓扑模型是基于U-Net编码解码结构。在我们的经验中,在分类数量少的情况下,这是最好的图像分割架构。然而,我们的结构包括了一些比较重要的变化。

为了改善算法的收敛性,使模型更加精确,我们使用逐元素增加替代了上采样后的串联特征。

下一个关键特征是深度分离卷积层。与普通卷积层相比较,它可以以较少的计算成本以及内存需求实现相同的质量。我们增加了一个具有深度可分离卷积层残差块作为基本块,而不是原来的卷积层+ReLU块。我们架构的另一个特点是不对称性。编码块多于解码块。这使得我们能够以相同的计算成本实现更好的精度。最后,为了实现实时推理,我们尽量减少层数和特征映射数量。

最后的结构如下图所示。

分割网络拓扑

训练技巧

训练是下一个重要的阶段,有一个两步的训练过程使得产生更好的质量效果。首先,模型对数据库里所有的图片进行预训练;接着,为自拍和肖像子集设计训练模型,该模型使用上一步的结果作为模型权重的初始值。为了在每一步中扩大数据集,本文大量使用数据增广,如图片翻转、曲线调整和阴影模拟。文本的增广渠道是基于两个主要概念:第一个是不过度污染图片——增广完毕后,图片应该显得真实;第二个是尝试掩盖数据集的缺陷,如在本文的实验中,动作模糊模仿对视频处理的稳定性造成重大的冲击。

本文的另外一个观点是输出人造物。神经网络倾向于生成棋盘——在应用背景提取后可以看到一张网格。这种类型的人造物不影响mIoU指标,但造成一个较差的视觉体验。为了解决这个问题,本文增加了额外的残差块在最后的形状中,以及给出额外的训练时间。

结果

分割的输出:原始图片、背景提取、前景提取

最后,我们得到了一个肖像分割模型,可以在质量和速度上有个很好的平衡。模型在fp32 onnx格式中只有3.7mb。我们的算法可以移植到大多数框架上,包括CoreML, MetalPerformanceShaders, SNPE, Huawei Kirin, OpenVINO。具体而言,在iPhone 7 和 Mi Mix 2S,模型可以成功的运行并且比30 fps快。这个过程包括从相机中获取像素缓存器,预处理,推断,后处理和在屏幕上渲染去除背景后的图像。

另一个分割的

散景模拟:有背景虚化的图像以及没有背景虚化的图像

备注

本文所提出的肖像分割系统是和我杰出的同事一起完成的。不幸的是,媒体上没有办法写合作者,但是在这里我要提到他们:

Lebedev Anton, Konstantin Semyanov, Artur Chakhvadze  -训练过程以及设计网络结构

Roman Kucev, Pavel Voropaev  -数据手机以及注释标注处理

Maxim Skorokhodov, Vyacheslav Tarasov - Android集成

Oleg Poyaganov, Andrey Volodin — iOS 集成

MR — 本文的审核

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据集
  • 结构
  • 训练技巧
  • 结果
  • 备注
相关产品与服务
人体分析
腾讯云神图·人体分析(Body Analysis)基于腾讯优图领先的人体分析算法,提供人体检测、行人重识别(ReID)等服务。支持识别图片或视频中的半身人体轮廓;支持通过人体检测,识别行人的穿着、体态等属性信息。可应用于人像抠图、背景特效、人群密度检测等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档