“拍照一时爽,后期愁断肠。”出去旅游,即使努力避开人群、挑选角度,拍照也免不了出现背景杂乱、路人入镜等情况。这时,有人打开Photoshop默默耕耘,有人打开三方软件一顿操作,还有人直接删除“废片”……

欸,停停停!难道还有人不知道小米手机的“魔法消除”功能吗?魔法消除功能是基于小米自研的AI检测和消除算法,帮助用户一键去除这些恼人的“不速之客”,不论是抢镜的路人,还是干扰天空简洁的电线都可以实现完美去除。

消除前VS消除后

这项功能可以说是”有手就会”,它不需要掌握PS复杂的抠图和涂抹,也不会花费太长的修图时间,分分钟实现“废片”变“大片”!诸君请看:

(1)智能去线:不用精准手势操作,自动识别线条一键去除,方便快捷。

(2)智能去人:智能识别人物,一键消除涂抹。

(3)一键去除全部人物:不需要一个个点击消除人物,一键即可全部隐身。

“知其然,更要知其所以然。”今天,我们想告诉你的不只是这个功能如何使用,而是想带你从工程师的视角认识一下它背后的技术原理。本次,我们邀请到的Tech Talk嘉宾是AI实验室工程师张亚森和产品经理何嘉,和大家分享这一技术的魔力所在!

本文硬核指数:⭐⭐⭐

本文趣味指数:⭐⭐⭐⭐

预计阅读时长:3分钟

一、魔法消除技术原理

这一功能实现背后的技术原理基于小米的两大自研算法:智能去线算法和AI智能去人算法。在算法研发过程中,团队也提交了多篇与之相关算法专利。

1.自研智能去线算法

智能去线算法是指根据用户点击位置或绘制轨迹,自动检测并选中线条,然后进行填充。算法设计的逻辑包括两步,第一步智能找线,第二步线条填充。

智能找线:获取点击(图1中红色圈)或描绘轨迹(图1中红色曲线)后,在分析图像内容的同时,使用自研的智能延伸搜索(图1中绿色箭头)和线条候选像素判别算法,获得完整的目标线条边界(图2中蓝色虚线);最后通过线条宽度预测,得到用户想要消除的整根线条区域(图3中黄色区域)。

图1

图2

图3

线条填充:针对线条的特点,我们设计了一种在多层特征金字塔空间中高效迭代搜索的算法。算法通过对背景和原线条区域进行相似度分析,得到线条区域的最优填充像素值,从而自然地复原去线后的图像背景(图4)。

图4

2.自研AI智能去人算法

AI智能去人算法包括实例分割算法和区域填充算法,通过这两个算法就可以实现“照片路人一键去无痕”。具体来讲:

(1)实例分割算法

实例分割算法的作用在于将画面中的人物单独分割出来,可选中任一人物进行操作。

针对路人消除场景特点,我们的实例分割算法构建了一个特殊的多尺度特征融合网络。经过数十万张精细标注数据训练之后,该网络对照片中的人物具备强大的理解和定位能力,效果和性能大幅领先行业。

当用户打开一张照片,并启动智能去人功能时,上述人像实例分割算法立即对全图进行扫描,实现画面中所有人物的像素级精准定位。

实例分割算法

像素级精准定位

(2)区域填充算法

区域填充算法是指消除用户不想要的部分之后,要对缺失区域进行画面填补,保持填充区域与周围区域视觉效果一致,画面自然。

消除分割出的人物之后需要对空缺画面进行填充,影响填充效果的关键是算法对图像中包含内容的理解建模能力。

我们使用了多重空间生成对抗网络(GAN),该网络在传统内容填充的基础上,充分考虑边缘等结构目标的填充效果。在百万级真实图像的训练加持下,算法能够充分理解图像中场景/物体的位置关系,从而自然地填充去除路人后的缺失区域,重构出高度自然的画面。

消除前VS消除后

二、魔法消除技术亮点

魔法消除技术的亮点主要体现在三个方面,分别是本地端计算,保障用户隐私;识别更智能,精准还原美丽;填充效果好,还原超清纹理等方面。

1.本地端计算,保障用户隐私

我们的"智能去人"和“智能去线”充分调用手机芯片的强大本地算力,和当前市面上的云端运行处理算法不同,我们的算法全流程都在手机端运行,无需将照片上传至云端处理,处理速度更快,用户可以无网络的情况下完成编辑,更重要的是保护了用户的隐私。

2.识别更智能,精准还原美丽

在对画面中人物的识别分割方面,市面上的一些算法缺乏对人体大小的考虑,导致经常漏掉远处的小尺寸人体,用户时常无法选中自己想要消除的路人。小米自研的实例分割算法能够对用户图像在多尺度空间进行理解识别,精准覆盖不同尺寸的人体,让用户对图中路人随意隐身。

而加入“智能化”、“深度学习网络”等元素的消除算法,去线和去人也都变得更为智能,只需要用户的简单交互就可以选中想要去除的线条和人物,一键消除,还原自然美观的画面场景。

3.填充效果好,还原超清纹理

由于多数友商采用了传统填充算法,导致填充的区域模糊、不自然,且缺失结构与纹理信息,与周围背景反差极大。而我们的算法能够在多重空间中学习图像中场景/物体的位置关系,同时挖掘背景的结构与纹理特征。填充得到的区域更清晰,且具有丰富的结构与纹理信息,能与周围背景更好的融合。

在“手动消除”功能上,我们借鉴了Photoshop,用户只需在特定位置涂抹即可进行填充;但升级之后的魔法消除产品,增加了“智能去线”和“智能去人”两个智能应用,使得用户可以很方便的在小屏幕端对常见的电线和路人进行去除。

三、研发过程中的挑战

在研发的过程中,遇到的挑战主要有两方面:一是魔法消除功能如何与不同的平台机型兼容,二是手机终端处理效果如何赶超云端处理效果。为了想出解决方案,我们团队可谓是煞费苦心。

挑战一:魔法消除功能如何与不同平台机型全面兼容?

小米机型平台种类繁多,为使魔法消除功能在尽可能多的小米机型中上线,让全球每个人都能享受科技带来的美好生活,我们研发团队需使算法适配高通、MTK等各种高中低端平台。

为了解决这个问题,我们在与算法部署支持部门、芯片供应商等部门积极沟通的同时,也为旗舰机、次旗舰、中端机、入门机等不同性能水平的机型准备了多个版本的算法模型,实现计算速度与效果的平衡。此外我们与相机部APP开发团队密切配合,随时解决每个机型时出现的各自问题。最终,实现了高、中、低端手机的全覆盖。

挑战二:手机终端处理效果如何超越友商云端处理效果?

众所周知,当下手机终端算力是远低于云端服务器算力的,如何让最终效果在市面上脱颖而出是我们面临的一大挑战。

针对这个问题,我们首先对市面产品进行深入全面的评测,发掘弱势场景,努力提升补足;其次在保证出色效果的前提下,通过量化、蒸馏、剪枝等各种模型压缩手段,减少部署模型的大小和运算耗时,提升用户体验。我们也一直持续关注着用户的反馈平台——小米社区,如果发现出了问题,基本能够做到一小时内定位到问题所在,并立刻进行更正,努力给用户提供更好的体验。

魔法消除,在精细处雕琢。

每处细节,我们都拼尽全力。

特别声明:修图所用图片案例来自互联网,仅用于魔法消除功能展示。

你还有哪些希望了解的技术?欢迎在评论区留言,我们将继续邀请工程师就大家关心的话题进行分享。更多硬核知识,请持续关注小米Tech Talk,我把技术讲给你听。

Tech Talk丨走进神奇的魔法世界之“魔法消除”技术相关推荐

  1. DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计

    摘要:介绍在SaaS场景下如何技术选型,SaaS架构设计中关键的技术点等内容. 本文分享自华为云社区<DTSE Tech Talk丨第2期:1小时深度解读SaaS应用系统设计>,作者: 华 ...

  2. 42张动图带你走进神奇的物理世界,超震撼!

    全世界只有3.14 % 的人关注了 爆炸吧知识 世界之大,无奇不有.生活中其实有许多神奇的物理化学现象.下面就一起来看看吧!图片加载慢稍加等待即可哦~ 神 奇 的 物 理 反 应 1.锤击被液氮冻上的 ...

  3. 50张动图带你走进神奇的物理生物化学世界,超震撼!

    世界之大,无奇不有.小编真的被这些神奇的物理和化学反应现象震撼到了,咱们一起来看看吧. 神奇的物理反应 1.锤击被液氮冻上的康乃馨,求康乃馨的心理阴影面积. 2.比重比空气还大的六氟化硫,友谊的小船说 ...

  4. 618 Tech Talk丨大促活动如何抵御大流量 DDoS 攻击?

    云妹导读: 每一次 618 大促带来的迅猛流量,对技术人而言都是一次严峻考验.如果在活动期间遭受黑产恶意DDoS攻击,无疑是雪上加霜.电商的特性是业务常态下通常不会遭受大流量DDoS攻击,且对延迟敏感 ...

  5. 商汤 AI TECH DAY丨见大咖、拿OFFER、体验AI,一次就够!

    点击下方"阅读原文",直通活动报名页~

  6. 《醒来的森林》带你走进神奇的鸟类世界

    作者约翰·巴勒斯说,希望读者可以通过他的描述,想象出一只活生生的鸟,而不是一具死气沉沉的鸟类标本.他完全做到了,在<醒来的森林>里,有一群可爱的.调皮的.活泼的.神秘的.各具特色的歌唱家们 ...

  7. 带你走进神奇的元宇宙的世界

  8. Python 带你走进哈利波特的魔法世界

    Illustrations by Leon movprint ♚ 作者:文建华,小文的数据之旅,数据分析爱好者,不想当码农的伪码农.博客:zhihu.com/c_188462686 先简单介绍一下ji ...

  9. Python:带你走进哈利波特的魔法世界

    最近有将近一个月的时间没更新了,并不是小文有心地偷懒,而是实在是有太多的砖要搬了(不多说了,等会还要继续搬-_-!!)......因为最近的项目涉及到文本分析(jieba包)以及人物关系分析(geph ...

最新文章

  1. java jnlp被阻止_JNLP应使用特定的Java版本,但会出现错误结果
  2. 【网络安全】手把手给大家演练红队渗透项目
  3. java 数组排序论文_Java 7是否对方法Arrays.Sort使用Tim Sort?
  4. Windows Server 2012系列之二安装AD及创建域
  5. oracle修改filesystem,(转):oracle、filesystem、backup日常巡检脚本
  6. [Buzz Today]2012.09.01
  7. Python之np.where的使用
  8. 如何正确复制CSDN文章到自己的博客
  9. 微信小程序电商实战-购物车(下)
  10. Android下载PDF文件
  11. STC8A8K64D4 EEPROM读写失败
  12. MacOS 利用keka.app压缩工具制作dmg文件
  13. windows2008+IIS7部署智遥工作流
  14. python常用单词读法-Python常用单词
  15. 双目视觉三维重构(一)————简介
  16. 如何开通微信商城?微商城的开通方法?
  17. QT5+zint库实现条形码条形码(一)
  18. 《C语言程序设计》江宝钏主编-习题1-6-解方程
  19. Single-Domain Generalized Object Detection in Urban Scene via Cyclic-Disentangled Self-Distill阅读笔记
  20. 阿里智能化接口测试平台--暴雪

热门文章

  1. 守护软件供应链安全:国产软件BinSearch的最佳实践
  2. 程序每次读入一个正三位数,然后输出逆序的数字。注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。
  3. 解决CentOS启动提示unexpected inconsistency;RUN fsck MANUALLY的问题(断电重启报错)
  4. 使用OpenCV-Python为照片添加不同滤镜(每天一个python小项目)
  5. IMU模型下的IEKF
  6. 什么密码,永远无法被黑客攻破?
  7. 高数笔记(十三):多元函数的极限及连续性,闭区域上多元连续函数的性质,偏导数,全微分
  8. h3c 链路聚合测试_H3C设备实验之配置链路聚合
  9. python socket实现实时通信
  10. fst 共享后缀_关于Lucene的词典FST深入剖析