小道一只朱 2019-06-16
作者 | 马帅
简介:中国科学院软件研究所在读硕士二年级,研究方向为智能人机交互方法及其在医疗、教育等领域的应用,热衷于 AI 与 HCI 的互相结合。目前正在准备申请人机交互方向的 Phd。
【编者按】ACM CHI (ACM CHI Conference on Human Factors in Computing Systems)是人机交互领域顶级国际学术会议,也是中国计算机学会认定的 A 类会议。CHI 2019 于 5 月 4 号到 9 号在英国格拉斯哥举行,大会共收到论文投稿2960篇,最终录用率约为 23.8%。本文作者的一篇基于百万级图片训练出来的深度学习模型 View Proposal Network(VPN)来帮助构图的论文在 ACM CHI 上获最佳论文提名奖,作者从思路上回忆了自己产出这篇论文的过程,更多描述了其使用计算机视觉和机器学习等相关方法,完成一个以用户为中心的人机交互(HCI)领域的科研成果的形成过程。
一年一度的人机交互领域国际顶级会议 ACM CHI 将于 5 月 4 号在英国格拉斯哥举行,我的一篇文章 SmartEye: Assisting Instant Photo Taking via Integrating User Preference with Deep View Proposal Network 被会议接收,并获得了最佳论文提名奖。(本文希望从思路上回忆自己产出这篇论文的过程,更多的描述了一个以用户为中心的人机交互(HCI)领域的科研成果的形成过程,本文用到了计算机视觉和机器学习的相关方法,但并非一个技术文章,如果有技术方面的问题欢迎留言和我联系)
视频地址:https://v.qq.com/x/page/e08844rtuag.html
SmartEye 帮助用户实时构图
论文地址:https://shuaima.top/paper/SmartEye.pdfshuaima.top当我们看到好看的风景,有趣的小东西,可口的菜肴,可爱的小狗,我们喜欢掏出兜里的手机拍一张照。但是对着同样的景物,有的人拍的很好看有的人拍的不那么好看,这其中的原因是什么?是构图的区别,构图在很大程度上决定了一张照片的美学质量。但是构图并非一件容易的事,很多非专业的人无法掌握构图的技巧,因此我们打算利用技术帮助人们更好的去对照片进行构图。
专业和非专业的摄影者拍摄出来的照片效果天差地别
现有问题:现在有很多帮助人们构图的算法,不过存在着一个很关键的问题就是实时性不够强,需要先拍照,然后再离线处理,这样会带来两个问题,一个是会需要额外的存储和时间,另一个是离线算法是基于已经拍好的照片的,会极大受限于这张照片,在拍照时移动手机的过程中好的构图很容易被错过。
解决方案:我们利用了一个基于百万级图片训练出来的深度学习模型 View Proposal Network(VPN)来帮助构图[1],这是我们这篇文章的合作者魏子钧博士发表在 CVPR 2018 中的一篇文章。VPN 具有 state-of-the-art 的表现,以及具有很好的实时性(基于 One-stage object detection),可以达到 75fps。其作用可以简单的描述为:输入一张照片,基于图片裁剪的方式(对原图进行各种 aspect ratio,size…… 的裁剪),生成一系列构图候选(Composition candidate),并且对每一个构图候选进行打分,按照从高到低的顺序输出。
构图推荐网络(View Proposal Network)流程图
VPN 的效果图(给定一张照片,可以给出一系列推荐构图)。
只有算法还不够,还需要搭配更友好的交互方式:
但是仅仅有了一个实时的深度学习模型还不够,我们需要让这个算法能够友好的为用户所使用,应用到拍照场景中去,这样才是真正的帮助人们进行拍照构图。
我们将 VPN 封装为后端的算法,设计了一个 APP 来让算法真正实用,同时设计了友好新颖的用户界面和丰富的功能和特性来连接用户和深度学习模型。
用户界面图:(a)用户使用 SmartEye(b)主要用户界面(c)功能和手势支持图
界面整体分为两个部分,上面是一个视图区,下面是一个缩略图列表,视图区就像是一个普通的拍照取景区域,有三个功能,一个是用于实时的展示 SmartViewfinder(下面会介绍)的推荐,一个是可以放大显示下方的缩略图,还有一个是作为用户选定构图之后的一个预览窗口,下方的缩略图列表显示着由 VPN 推荐的各种比例的构图推荐,可以左右滑动来切换和查看各种各样的构图。
我们还设计了几种强大的功能支持:
视频地址:https://v.qq.com/x/page/v0884yslf1z.html
SmartViewfinder 实时构图推荐
SmartScore 帮助镜头自动打分
因显示视频数量限制,Demo视频可浏览:http://v.qq.com/x/page/i0884109zj4.html详细请查看视频:https://v.qq.com/x/page/b08840vwcef.html
除此之外我们还提供了一些其他的功能,比如自定义推荐数,用户可以自己选择在缩略图列表中展示的推荐书,自由裁剪,在系统给出的构图推荐基础上,用户如果有一些不满意,可以在此基础上拖动裁剪框,再次进行裁剪边界的调整。APP 还提供了丰富的手势来触发和切换这些功能,比如左右滑来浏览 SmartViewfinder,手指上下滑动来进行 SmartZoom 缩放,长按来激活 SmartScore。
我们找了一些人来使用这个 APP,收集了大家的反应。大家都对这个 APP 持有积极的看法,但是一些用户也提出了意见,“为什么我喜欢的构图排在了后面”、“如果这张构图能够稍微向左靠一点就好了”、“尽管我可以通过裁剪加以调整,但是我希望系统能直接推荐给我我想要的”。
我们也发现了一些问题,VPN 按照得分高低顺序推荐,但是在很多情况下,用户并没有选择排在第一位的构图,我们简单的做了一个实验,固定 VPN 推荐的数量为 5,邀请了 16 个被试(被试情况在后面叙述)进行了拍照,每个人拍摄 10 张照片,我们记录了每张照片最后用户选择的是第几张,结果如图所示:
16 个被试拍摄 10 张照片的过程中,不同位置的选择人次(No.1 代表构图候选列表中的第一个,以此类推,Freely cut 代表用户没有选择推荐构图而是自己进行了裁剪)
可以发现尽管第一位的数量有很多,但是第二位到第五位也同样不少,还有一些用户选择了自己裁剪。
于是我们挑选了 10 张照片,每张照片由 VPN 生成 5 个推荐构图,然后打乱顺序,让 16 个参与者分别挑选最喜欢的构图,我们对结果做了可视化的分析,得到了一个发现,同样一张照片,不同用户最喜欢的构图方式(裁剪区域)有所不同,比如下面的这个图中,为了容易看清,我们可视化了 3 位用户最喜欢的构图方式,可以看到是不一样的。
对于某一张照片三个用户最喜欢的构图的边框并不相同
然后我们在每张图片上绘制了 16 个用户最喜欢的构图中心点分布的 heatmap,可以发现并非所有的人都喜欢同样的构图。这个发现十分明确和易于理解,因为一千个人眼中有一千个哈姆雷特,每个人的审美标准都不同,构图相对而言是一个主观性十分强的任务(并不类似于计算机视觉中其他目标检测任务),而 VPN 只是通过众包数据学习到了一个通用的审美标准,所以我们认为有必要将用户的个人偏好考虑进推荐算法中。
两张照片中不同用户最喜欢的构图的中心点组成的 heatmap
这个问题是我们这片论文的一个难点。我们的第一个考虑十分直接,就是从数据出发,VPN 既然能够生成不同的构图,并且给它们打分,那我们就改造一下 VPN,让它能够把用户的偏好也学习进去。我们尝试了一些方法来调整 VPN,包括 retrain 和 fine-tune,但是都因为数据量的问题以失败告终了,因为我们很难通过少量的带有用户偏好的数据来调整一个已经训练好的深度学习模型。
既然直接修改 VPN 并不容易,我们考虑加入一个模块,能够考虑用户的偏好,这个模块需要做到可以针对一张构图生成一个打分,这样就可以用这个新的打分来调整一个构图最终的得分,从而调整模型最终的输出顺序。我们称这个模块为 Preference 模块(P-Module),我们对 P-Module 有一些要求,一是能够准确的对用户偏好进行建模,而且对噪声要有一定鲁棒性;二是在分数预测方面十分高效;三是 P-Module 要比较小巧,可以用小量的数据来训练和更新,代表着用户偏好的图片越多,P 模块就理论上越能够考虑用户的偏好。
敲定了上述需求,P-Module 可以视为一个机器学习中的回归问题,我们可以通过设计特征来对用户偏好建模。
我们起初,直观上觉得既然用户的选择来源于 VPN 的各种各样构图推荐,不同的构图之间最明显的区别是什么呀?是大小、位置、长宽比之类的啊,我们为何不能从这些方面入手,简简单单就可以 model 用户偏好,岂不美哉?事实操作发现根本不怎么 work。
简单的特征不奏效,那么我们就设计更复杂更有力的美学特征呗,于是我们通过阅读相关的用户偏好建模文献,以及摄影、美学相关的文章,从中吸取了大量经验,设计出了一个复杂的 feature set,又做了一系列特征选择,但是发现效果并没有多么理想,甚至在一些 test set 上还不如一开始最简单的十来维特征有效。
那该怎么办?用户偏好为什么这么难以 model?我不禁问自己,总说要对偏好进行建模,那在构图这个任务中,用户偏好到底是什么啊?
经历了短暂的郁闷期,我突然清醒,既然你要研究用户偏好,为何从用户中来,到用户中去呢?于是我深入群众,去探讨用户偏好是什么的问题。
我们进行了一些前期的 User Study 工作(在 User Study 部分会有详细描述),收集了一大波用户反馈意见,进行了细致的整理和归纳,得到了许许多多有用的建议(在我的论文中进行了归纳和整理,为了节约篇幅这里不做描述),并且基于用户的这些建议和之前调研的一些摄影、构图、美学方面的知识我们设计并选择了 4 类 32 维特征,分别是基于几何学的、基于显著区域的、基于构图规则的、基于拍照的。
设计的 4 类 32 维特征
其中提取显著区域的效果如下
图片的显著区域(由一个椭圆包围)
(这里需要提一句的是:我们并不是说这些特征是最好用的,相反,我们希望其他人或者我在接下来的工作里可以通过设计新的 feature vector 从而获得更好的结果。构建能够为我们的任务提供非常好的性能并且可以有效计算的特征集仍然是一个有趣的开放性问题。)
特征设计完了,到底有没有用呢?我们进行了详细的实验得出结论——特征显著性和相关性都比较强,这个问题留在最后的 User Study 中叙述,我们接下来要讨论的是构建模型。
首先我们要确定模型类别,考虑到用户在使用我们的 APP 时,从 N 个构图推荐中选择最满意的一个点击 “拍照” 按钮,然后保存到本地相册,这是一个最自然不过的打 0/1 标签的过程(被选择的是正样本,其他的被随机选择为负样本,避免样本不均衡问题),所以我们暂定了 LogisticRegression 作为我们的打分模型(将 1 的概率映射为分数),而且在收集的数据中(用户实验部分将要描述)跑了一下结果,发现作为一个 score model,各项指标还是蛮不错的。
给定一个构图 来自一张照片 , 我们提取了它的特征 并且把它送进 LR 模型得到了一个标准化的用户偏好得分。
LR 的简单性使得 P-Module 对噪声鲁棒、易于在线交互式的更新、以及高效的预测得分。
我们依据了一个基于记忆的算法(这个算法基于用户过去的打分来预测现在的分数)把 VPN 打分和 P-Module 打分结合了起来。更具体的,我们动态的调整了对于一张构图 ,VPN 的打分 和 P-Module 的打分 的权重:
其中 是一个置信度(confidence score),用来描述当前照片 和用户过去选择过的构图有多么相似。我们基于一个假设:如果一个相似的图片已经作为知识(训练样本)被 P-Module 学习过了,我们有理由相信最终的得分应该更依赖于 P-Module 的打分。因此,我们通过计算当前照片与已处理过的照片的构图距离来计算置信度。当前照片与已有照片越相似,置信度越高,P-Module 的打分在最终打分中占的比重就越大。
置信度的计算公式如下:
其中 是两个构图的特征向量 之间的欧氏距离。 是一个超参数来控制 的变异率。在本文工作中,我们固定 。值得一提的是,置信度可以简单的描述为当前算法做出的推荐是更多依赖于 VPN 还是更多依赖于 P-Module,也就是用户个人偏好,我们将置信度显示在 APP 的界面中,并且进行实时的更新,在之后的用户实验中也证明:在这种主观性较强的,用户可能不是十分相信 AI 算法的任务中,如果给用户展示一个“当前算法有多少依赖于你”,能让用户在查看算法给出的推荐时,更加容易做出选择和觉得被尊重,也会让用户觉得系统更加人性化。
为了直观表述两张照片(构图)的相似性,我们对不同照片(构图)的特征向量进行了 PCA 降维。
不同照片(构图)的特征向量在二维空间上的分布
到此为止,我们的算法部分完全形成了,让我们再一起回顾一下算法的流程。
本文算法的整体流程,基于学到的用户偏好,P-Module 调整 VPN 给出的推荐,同时用户新的选择也会反过头来去更新 P-Module
给定一张照片,算法流程如下:
整个算法交互式地、逐渐地学习到用户偏好,这项技术属于交互式机器学习(interactive Machine Learning)的范畴。
至此,整个系统可以用下面的这么一张图来表示其核心内涵。
(a)左上角是一张输入照片,View Proposal Network(VPN)会推荐一组多样化的构图(如右上图所示); P-Module 根据所学习的用户偏好实时调整建议(如下图所示);(b)SmartEye 以交互方式逐步学习用户偏好:当用户在屏幕底部选择他们喜欢的构图时,P-Module 会随之更新。 因此系统会逐渐掌握用户偏好。
用户实验
来到了人机交互领域研究中相当重要的一个部分——用户实验(User Study)。
我们部署了两个用户实验来探究如下三个问题:
1) 构图任务的个性化偏好建模中什么特征比较重要;
2) P-Module 是否帮助模型更好地吻合用户的选择;
3) 用户使用 SmartEye 时的用户体验如何。
我们找了 16 个参与者(在人机交互学科中成为被试),其中有 8 位男性 8 位女性,有 8 位在摄影方面没有基础,标为 P1-P8,有 8 位具有一定的摄影基础,其中 5 位是大学摄影协会的,标为 P9-P13,还有 3 位专业是美术和影视专业的,标为 P14-P16。他们平均具有 4.13 年的摄影(拍照)经验。
Study 1 Effectiveness of P-Module
为了探究 P-Module 的有效性,我们设计了两个任务。
目的:看看该设计什么样的特征,顺便收集带标注的数据。
这个任务也是最基础的一个任务,涉及到特征的设计,我们在前面已有提到,在这进一步详细说明。
我们首先随机收集了一个数据集 PhotoSetA,其中包含 50 张照片,以涵盖人们通常拍摄的各种日常照片。然后,我们要求每位参与者贡献他们拍摄的 100 张照片以形成 PhotoSetB(包括 16 位参与者拍摄的总共 1600 张照片)。这两个数据集中的照片在内容,样式和宽高比等方面不做任何限制。
我们用 VPN 处理了 PhotoSetA 和 PhotoSetB 中的所有照片,每张照片都有 5 个推荐的构图。对于每个参与者,我们给了他 / 她 150 张照片(50 张来自 PhotoSetA,100 张来自 PhotoSetB 中自己拍摄的)以进行评分,我们收集了 12000 张(16 张参与者 ×150 张照片 ×5 张构图)带有主观评分的照片。我们还要求每位参与者填写调查问卷并就一些问题进行了采访。对于参与者刚刚打分的一些照片,我们问了被试一些问题:
a) 你在进行构图选择时考虑了哪些因素?
b) 你为什么喜欢这一个(构图)?
c) 你认为你选择的这一个比其他的好在哪?
从中获得了很多有价值的见解,这也帮助我们设计了前面提到的 feature vector。
Task1 流程图
需要说明的是,16 个被试所标注的图片数据将用来分别为这 16 个人训练自己的 P-Module 用于 Task2。
目的:我们想要探究 P-Module 是否有用,是否 outperform 了其他算法。
我们通过具有挑战性的用户实验证明了 SmartEye 所推荐的构图的质量,为此我们额外收集了 50 张不同风格和内容的照片。
对于每张照片,我们选择了不同模型生成的前 5 种构图,让参与者选择最佳构图(第 1 名)。我们的实验所用到的模型如下:1)带有 P-Module 的 VPN;2)VPN; 3)基于显著区域检测和面部检测的算法,表示为 Sal + Face。 Sal + Face 的工作原理如下:给出一张照片,Sal + Face 计算其显着性图并检测面部,然后计算显着性得分和面部得分之和,挑选具有最高得分的 5 种构图方式推荐给用户。我们混合了不同模型的输出(去掉顺序对结果的影响)并将它们展示给 16 个参与者。我们要求他们在每张照片中选择他们喜欢的构图。实验结果在 Results 部分展示。
Task2 流程图
Study 2: Usability of SmartEye
目的:探究在实际环境下,融合了 P-Module 的 SmartEye 是否好用
我们在 Android 设备上部署了以下系统:1)搭载了 P-Module 和 VPN 的 SmartEye,2)只有 VPN 的 SmartEye,3)搭载了 Sal + Face 的 APP。我们还加入了 Android 原生相机,作为非构图推荐系统的参考。
我们引导参与者如何使用我们的系统,并鼓励他们在开始此任务之前尝试所有功能。我们随机分配了不同系统使用的顺序来消除影响。参与者被要求使用每个系统拍摄至少 30 张照片。然后他们被要求填写一个 post-task questionnaire。 此任务后调查问卷包含对被测试的算法的看法,偏好建模的效果以及对 SmartEye 中可用的支持功能的看法。
目的:探究 SmartEye 是否可以随着用户越多使用,效果有越高的提升
在此任务中,我们让每个参与者连续使用 SmartEye 一个月。每位参与者每天必须使用 SmartEye 拍摄至少 5 张照片。拍摄照片的内容和风格不受限制,这意味着用户可以任意使用 SmartEye,只要他们每天拍摄 5 张照片。
在月底,我们收集了用户们在这一个月内保存下来的构图,并研究了 P-Module 随着时间增长的进步情况。
Study 1
根据任务 1 中 16 位参与者的构图选择数据,我们计算了用户得分与 32D 特征之间的 Spearman 和 Pearson 相关系数。相关性如下图所示。可以看到,不同参与者的相关性有所不同。几乎每个参与者都关注基于几何的特征和基于显着性的特征。同样有趣的是,有一定摄影基础的用户似乎更关注基于显着性和基于构图规则的特征,而其他人可能更多地依赖于几何和基于照片的特征。特征相关性的差异也反映了参与者之间构图偏好的差异。
参与者偏好的特征相关分析。每个直方图列的上方(浅色)表示 Pearson 相关系数,下方(深色)表示 Spearman 相关系数。大多数特征与用户偏好显着(p<0.05)相关。总体而言,所提出的特征与用户偏好具有很好的相关性。另请注意,不同参与者的偏好与所提取的特征有不同的相关性,显示了用户偏好的差异性。
我们还评估了系统建议的第一张构图恰好是用户最喜欢构图的比率。我们将此度量表示为 Top 1 selection rate。下图显示了基于任务 2 中收集的参与者数据的 VPN,P-Module 和 Sal + Face 的比较。我们可以看到 P-Module 在每个用户的构图选择数据上表现优于 VPN,总体而言,它大幅度的超越了其他 Baseline。基于成对 t 检验,我们发现结果很明显:将 VPN 与 P-Module 进行比较,T 值为 - 7.229,p <.001; 将 VPN 与 Sal + Face 进行比较,T 值为 11.597,p <.001; 比较 P-Module 和 Sal + Face,T 值为 16.318,p <.001。我们还计算了三个模型的标准偏差值,如下图所示。
VPN,P 模块和 Sal + Face 在每个用户的 Top 1 selection rate 的比较。 P-Module 在很大程度上优于 VPN 和 Sal + Face 算法。带有 P-Module 的 VPN 和纯 VPN 之间的差距证明了建模用户偏好的好处。
Study 2
我们收集了任务 4 中各个参与者 30 天内的拍照构图选择,并在下图中他们每天的平均 Top 1 selection rate。值得注意的是,总体来说,带有 P-Module 的 SmartEye 的 Top 1 selection rate 在时间尺度上逐渐提高。它表明 SmartEye 能够模拟用户偏好并通过收集更多的用户选择数据来改进自身。在第 6 天和第 15 天,性能略有下降。我们推测这些下降可能是由于用户偏好会随时间在某一天有所改变。照片构图任务与用户的主观判断密切关联,在某些时间范围内可能发生局部下降。调查更为长期的影响可能是一项有趣的未来工作。
30 天内所有参与者每一天的平均 top 1 selection rate
另外,下图展示了在 30 天里每周的 4 种类型的特征和挑选出来的两个用户(P11 和 P5)构图偏好之间相关系数的变化。这个结果和 Task1 中的结果共同说明了不同的用户可能依赖于不同的构图因素。它还表明一些用户可能会随着时间的推移个人喜好也会有所变化。同时,它有力的证明了为主观任务建模用户偏好的必要性。
两个参与者在四周时间内偏好情况。这也表明了一些用户的个人偏好会随时间改变
Feedback from Interviews and Questionnaires
在这部分我们整理和收集了大量用户的反馈意见,并进行了归纳,为节约篇幅不做描述。
Preliminary and Post-Task Questionnaires
我们的实验前问卷和实验后问卷基于 5 分制,其中 5 分对应强烈同意,1 分对应强烈不同意。 下图中的 Q1-Q8 验证了自动构图和个性化构图推荐算法的有效性。Q9-Q20 显示了关于本文提出的算法和设计的系统获得的相关用户反馈。总体而言,用户对本文提出的 SmartEye 表达了相当积极的态度。
调查问卷和用户访谈结果
讨论
我们从中学习到了一些经验教训,以进一步改善具有个性化偏好建模的自动构图系统的用户体验。我们相信这些经验也适用于试图将个性化偏好纳入主观任务的其他系统。
建模个性化偏好对于主观任务很重要。根据访谈,我们发现参与者可以从系统从历史数据中学习习惯和偏好的过程中获益。
我们最好向用户显示系统如何 or 为何提出建议,而不是让系统成为 “黑匣子”。在我们的采访中,我们发现 Smart Score 的得分以及置信度值得到了很多积极的反馈; 它帮助用户完成构图任务,并使系统更加透明和可靠。在更多细节中显示“系统为什么这么认为” 是这方面可能的未来方向。
我们研究了照片构图中的用户偏好建模的概念,并且实现了一个新颖的系统,该系统可以逐渐且交互式地学习用户对照片构图的偏好。
同时,我们已经证实,在构图任务中,不同用户之间的偏好是不同的,甚至每个人的偏好也可能随时间而变化,这进一步表明了将用户偏好学习应用于当前系统的必要性。 此外,我们将 P-Module 和 VPN 集成到一个交互式的实时的移动系统 SmartEye 中,具有新颖的界面和一系列实用功能,如实时智能取景器,智能分数和智能变焦。我们的用户研究证明了 SmartEye 的有效性:我们已经证明 SmartEye 优于其他构图算法,系统支持的交互功能很有帮助,用户对 SmartEye 整体十分满意。
最后也感谢本文的合作者:魏子钧博士,田丰研究员,范向民副研究员在本工作中的辛勤贡献。
本文所引用的参考文献可见论文,仅将核心算法 VPN 的 paper 列在下面:
http://www.zijunwei.org/VPN_CVPR2018.html(*本文为 AI科技大本营约稿文章,转载请微信联系 1092722531)