Twitter的智能缩略图(图像智能自动裁剪的快速神经网络)

基础设施:图像智能自动裁剪的快速神经网络
作者:Lucas Theis和Zehan Wang(Twitter的机器学习研究人员)

一个好的软件开发者,应该会留意到这款软件的一个个细小的关键点。

国内的开发者好像都走了偏路:他们在探求哪些点能优化用户的体验。

他们把这项工作推脱给产品经理,并且还有大量专门的用户体验课程。

这种想通过走捷径来获取用户体验的方式是有局限性的。不同的用户关注的点不一样,软件开发者应该是力求方方面面做到最好。用户可能没有留意一些微小的地方,但是如果有一天他发现了,一定会说:哇,这一定是个被刻意埋下的彩蛋。

据我所知,(因为我本身使用的软件不多)腾讯的微信和QQ在处理图片的时候,是直接以图片中心为基点进行缩略的。因为图片的缩略幅度并不会很大,所以使用起来也没什么不妥。

后来我留意到Twitter,Twitter对图片的处理几乎是无可挑剔的。当上传人像的时候,缩略图片是以人像为基准进行缩略的,一定会保证缩略之后,可以直观看到人像。当上传的图片只是一些文字的时候,它会以文字为基准进行缩略,确保人们看到的缩略图一定是包含文字的,而不论文字是在图片左上角还是右下角。

之前Twitter上面有一个接力挑战,用户在一张白色背景上面的角落里写上字体,或者花上人脸(是那种很低级的画作,类似于 (●’◡’●),然后上传上去观察Twitter对图片的处理。几乎毫无例外,缩略图都能把处于图片角落的文字或者画像显示出来。无论文字或者画像在图片的哪个角落。)这种现象很奇妙,人们像是无所事事一般,上传图片到Twitter来感受Twitter缩略图处理图片的乐趣。(虽然我也参与了)

我觉得很有意思。所以我找到了Twitter相关的文章来介绍一下。文章来自Twitter机器学习研究人员。使用国内翻译软件进行翻译的,不过我重新组织了文字,让文章读上去不会那么生硬。

下面是翻译和重新组织文字之后的文章内容,原文章地址我会放到文章底部,不过需要科学上网。

 

自2011年以来,用户就可以直接在Twitter上面上传自己的图片,时至今日上传图片已经是Twitter不可或缺的重要功能。如今,每天都有数百万张图片被用户上传到Twitter上。然而,不同用户的图片有各种形状和大小,这让给用户呈现一致的UI体验带来了挑战。时间线中的照片需要被裁剪以提高一致性,并允许用户一眼就能看到更多的推文。所以我们面临着一个问题:如何决定裁剪什么?或者说,我们决定要给用户展示图像的哪个部分?

之前,我们使用人脸检测将视线集中在我们能找到的最突出的人脸上。这给我们如何处理用户图片带来了一些新的思路,但该方法有明显的局限性,因为并非所有图像都包含人脸。此外,我们的人脸检测器经常会漏掉人脸,有时在没有人脸的情况下会错误地检测到人脸。如果找不到人脸,我们会把视线集中在图像的中心。这可能会导致预览图像被裁剪之后看起来很傻。

2020061307071173

左图:我们的面部探测器无法探测猫和其他物体。右图:我们的新裁剪机制能够集中在图像最有趣的部分

 

利用图片中物体的显著性特征

一个更好的裁剪方法是关注“突出”的图像区域。高度显著的区域意味着人们在自由观看图像时可能会看到它。学者们已经通过眼睛跟踪器来研究和测量显著性,它记录了人们用眼睛注视的像素。一般来说,人们往往更关注脸、文字、动物,也更关注其他高对比度的物体和区域,这些数据可以用来训练神经网络和其他算法,预测人们可能想看什么。

基本思想是利用这些预测将基点集中在最有趣的区域[1]。

如图,图中白色的圆圈标记,就是人眼最容易关注的点。

2020061307082233

显著性预测网络能够检测小狗、脸、文本和其他感兴趣的对象

修剪和优化

由于机器学习的最新进展,显著性预测得到了很大的改善[2]。不幸的是,用于预测显著性的神经网络速度太慢,无法在生产中运行,因为我们需要处理上传到Twitter的每个图像,并在不影响实时共享能力的情况下实现裁剪。另一方面,我们不需要细粒度的像素级预测,因为我们只想大致知道最显著的区域在哪里。除了优化神经网络的实现外,我们还使用了两种技术来减小其规模和计算要求。

首先,我们使用一种称为知识蒸馏的技术来训练一个更小的网络来模拟速度较慢但功能更强的网络[3]。这样,一个大型网络集合被用来对一组图像生成预测。这些预测,加上一些第三方显著性数据,然后被用来训练一个更小、更快的网络。

2020061307090671

我们通过知识提取和剪枝的结合,大大减小了最新显著性预测网络的规模

其次,我们发展了一种剪枝技术来迭代移除神经网络的特征映射,这种方法计算成本高,但对性能没有太大的贡献。为了确定要修剪哪些特征映射,我们计算了每个特征映射所需的浮点操作数,并将其与删除该特征映射所带来的性能损失的估计值相结合。关于我们修剪方法的更多细节可以在arXiv[4]上发布的论文中找到。

这两种方法结合在一起,使我们能够比模型的普通实现和任何实现优化之前更快地裁剪媒体10倍。这使得我们可以在所有图像上传后立即对其进行显著性检测,并实时裁剪它们。

目前这些更新已经同步到了网站、iOS和Android。下面是这个新算法如何影响Twitter上的图像裁剪的其他例子。

之前:

2020061307093530

之后:

2020061307100634

裁剪逻辑更改前后的图像示例

 

参考:

工具书类

[1] E.Ardizzone,A.Bruno,G.Mazzola公司

基于显著性的图像裁剪

ICIAP,2013年

[2] M.Kümmer,L.Theis,M.Bethge先生

深度凝视I:利用在ImageNet上训练的特征图提高显著性预测

2015年ICLR研讨会

[3] G.Hinton,O.Vinyals,J.Dean

神经网络中知识的提取

NIPS研讨会,2014年

源文章地址:点击跳转

本文来自投稿,不代表微擎百科立场,如若转载,请注明出处:https://www.w7.wiki/develop/4044.html

发表评论

登录后才能评论