“第一印象很重要。”

虽然上述说法适用于生活的很多方面,但它也适用于电子商务平台。

无论是口音椅子设计的超现代的公寓在曼哈顿,纽约或double-hanging吊床天井面临着郁郁葱葱的绿色后院的风格传统农舍在密苏里州,阿肯色州,从产品的概念建模,其生产和最终销售——仍然在整个过程中常见的一个问题几乎任何类型的产品它会属于?

我们在Wayfair努力帮助消费者对自己的家居用品有信心。我们的方法包括不断创新为我们的产品选择最佳代表的过程,这个过程叫做铅图像选择因为我们想让我们的访问者看到他们想要购买的产品的最佳表现,一个非常简单的方法就是预测每一张图片是否“值得”成为领导形象。通过缔结同胞数据科学家不是显示图像进行该从正面角度拍摄的产品的图像产生更高的点击率(CTR)的研究背部的产品。能够确定拍摄角度的规模,在我们的目录中数以百万计的项目,因此是重要的确定候选的领先图像。

铅图像选择是很常见的电子商务的平台,这些天从产品的三维模型,而不是实际的产品照片创建使用的图片供应商。这些3D模型是从种子图像这是在设计过程中由艺术家创作依次创建。所以,了解拍摄角度也有助于我们确定我们是否能够建立更好的3D模型的产品,这也有助于我们的客户得到产品的一个更好的感觉,让他们觉得他们的购买信心。具有能够产生很大的3D模型的一个重要组分是具有不够的角度,以使得整个SKU覆盖种子的图片。检查是否正在通过覆盖一组样本图像的足够角度的过程是冗长的苦心和手册。与商业逻辑层(如下所示)沿着镜头角度预测具有用于视觉审批过程自动化程度的提高。

什么是拍摄角度?

简单地说,拍摄角度是产品的表面和(虚拟)相机拍摄该图像之间的角度。换句话说,它是一个产品图像中的面的角度。

对于拍摄角度预测建模方法

虽然有相对同质的数据集可用于角度估计几个简单的计算机视觉方法 - 像姿态估计对于人类来说,预测角度为多元化数据集等家具是相当棘手,需要深度学习与计算机视觉一起。

镜头角是浮动值

然而,尽管深度学习模型擅长于分类,比如区分猫和狗,苹果和橘子,但角度是连续的ntity。

此外,从背面一个讲沙发的正视图是比较困难而不是根据特征的相似性来区分猫和狗。人们还必须注意质量保证方面的工作——为回归模型设置一个人在循环中的QA设置将是极其乏味的,因为它将需要一个人注释器来标记粒度值。下面我们将对纯回归和分类方法的优缺点进行比较。

建模方法的比较:回归VS分类

评估标准 回归:连续角度值

“信息化”

分类:离散正区角度值

“实际的”

评分理由
质量保证措施 人类可以相当容易地解释离散角区

例如,标记的图像作为“前”更容易比用40标记的图像识别°

建模工作 分类需要更少的数据点
性能 据观察,预测具有较低的绝对误差训练比回归时的分类
兼容性 角⇔区 没有反向映射

区⇏角

从更多移动到较少的颗粒结构的信息丢失
整体 总的来说,分类更容易处理

但是,回归在性能和兼容性方面提供了非常明显的优势

下面的混合方法:分类+回归

考虑到纯分类和纯回归方法的局限性,我们决定将这些方法合并为混合方法。

在我们开始讨论如何创建混合网络之前,重要的是解决如何创建确保模型的最佳质量的流程。直到今天,深度学习模型仍然依赖于人类标注的数据。在人类注释者之间似乎有不同层次的感知,我们如何创建一个由角度标签组成的数据集,如果不是所有的,至少是大多数注释者都同意的?

为QA生成标签-人类感知和旋转物体的研究

因为QA更容易处理我们的目标是将360度连续的角度划分成区域,形成“角度类”。为了做到这一点,我们做了一个初步的调查,显示有8个角区:以顺时针的方式绕着圆旋转,我们有前,前右,右,后右,后左,左和前左。但是我们如何将角度映射到区域呢?换句话说,我们如何在不同的角区域之间画出边界?从什么角度“右”变成“前右”?

确定角缩放之间的边界假设不同的人对一幅图像的“前”或“后”会有不同的看法是公平的。例如,在下面的图片中,person 1可以分辨出的“Front”可能是person 2的“Front- right”。为了给我们的训练数据生成标签,我们合成产生100个种子或参考图像,确定8角区域使用3DSMax。接下来,我们为人类注释者提供了10,000张图片,并要求他们选择最适合图片的角度区域。为了避免偏差,注释者没有提供准确的度值。每张图片由3个注释器标注。如果一个特定的值得到了2个或更多的投票,我们就给这个值分配标签。如果某幅图像没有得到一致意见,我们就忽略它,因为这些异常值只占数据集的6.3%。

投票并在3个平均值中取最佳

在此之后,我们收集了所有的标签和他们相比于与图像相关的角度的实际数值。生成角区标签的热图对角的实际数值后,角区之间的边界出现了。例如,虽然从0°要顺时针360°,大约15°的“前”开始显示为“前 - 右”。

获得使用热图拍摄角度的界限

人类感知的研究导致了以下拍摄角度区域图。

镜头角区图表

区映射的详细信息代表性图像沿着角度区域显示,以显示感知如何随着旋转而改变。

占不同的几何形状

不同的几何图形

拍摄角度标签不是一个一刀切的方法。不同产品的几何形状有很大的不同。有些产品在本质上是不对称的,比如椅子和床,也就是说,它们有明确的前缘。其他的,像墙壁艺术或区域地毯,有一个平面的几何形状,还有一些,像桌子,是对称的,也就是说,前面和后面看起来几乎一样。

因此,我们根据他们的几何形状分为以下类别分组的各种产品类别:

  • 三维不对称:物体有一个明确的“前面”,例如,椅子,沙发,床等。
  • 三维对称:从“前面”和“后面”看起来相似的物体,例如,桌子,桌子等。
  • 2D:Objects的在结构平面的,例如,艺术墙,地毯,窗帘,相框等

Note: We can’t define a shot angle zone chart for Round/Tripod/Triangular objects or objects that are symmetrical in 2 or more dimensions such that they look similar from all or many directions—in other words, objects for which one cannot define a “Front” or “Back” or “Left” or “Right” cannot have a zone chart.

创建一种“混合”深度学习模式

自2012年以来,一些深度学习模型已经被引入数据科学界。我们开始试验VGG16,因为它最容易理解,并修改它以满足我们的目的。

桥接分类和回归

我们实施的混合方法分为两步:

  • 前处理(输入)-我们为每个区域分配一个数值(或浮点)值,即标准角度。标准角就是一个区域所覆盖范围的中点。例如,“前右”区域覆盖的角度从15度到75度。这个区域的标准角是45度。所有区域的标准角度都列在上面的“区域映射”表中。对于每一张训练图像,我们只需将区域标签F、FR、R、BR、B、BL、L、FL替换为与区域对应的标准角0°、45°、90°、135°、180°、225°、270°、315°。
  • 后处理(输出)-一旦模型预测了一个角度(浮点值),我们然后根据输出的范围分配一个区域标签。通过这种方式,我们将回归模型的结果转换为可以用于QA的内容(例如,如果模型输出52°,我们将区域“Front-Right”分配给它,因为它位于15°- 75°范围内)。

习惯损失函数 -计算“通知”损失

每一个成功的深度学习模式的背后,还有一个同样简单的损失函数。什么损失函数是一个深度学习模型是喜欢什么老师是学生。我们的模型需要学习圆的概念,这意味着,它需要学习两个0°和360°是相同的。

从理论上讲,在本领域中可用的几个版本圆形的损失。我们定义使用均方误差(MSE)或差异平方的自定义损失函数如下:

损耗= MSE(COS标签) + MSE(罪标签)=(COSθ- 预测COS)2+(罪过θ-预测罪)2

我们使用MSE,因为它是一个去到的概念定义为基于回归模型损失函数。换句话说,MSE处理我们的混合模型的回归部分。该θ以上在本质上是离散的,如在上述前处理步骤进行说明。这使得该模型的“分类”的性质。

评估培训期间模型性能

当要判断我们的模型的性能时,我们计算区域水平准确性。

在这里,我们检查模型兑创造了人类标注的数据使用性能最佳的3分析前面提到的。我们的模型预测的数值(浮点)的图像的角度的值。我们认为预测的角度(用θ”表示)是正确的,只有当它在于在注释过程中确定正确的区域。

为了计算精度,我们需要预测的角度。在任意时间点,我们可以检索到预测的角度(θ的)由下列关系式:
θ” = arctan2(预测罪,预测余弦)

一旦我们有我们的我们只需要检查一下这个“罗比”属于哪个区域,然后把这个预测的区域和人类标记的实际区域进行比较。我们对验证数据集中的所有图像重复这个步骤,并通过这个简单的关系计算平均区域精度(%):

平均。区精度=(正确预测/数合计预测数)* 100

对于数学书呆子

这里需要注意的一个有趣的数学的事情是,当模特开始在其训练阶段,即作出正确的预测时的预测开始越来越接近实际值,或角θ的实际角度为,则自定义损失函数退化为:

损失= 4 * sin2((θ-θ”)/ 2)

应用小角度近似,我们得到

损失=(θ-θ”)2≈MSE (θ的)

这可能会提高的,为什么不训练与MSE定义的损失函数模型中的问题(θ的)本身来代替MSE(COS的标签) + MSE(罪标签)。我们没有严格的比较性能,但最初的实验中,当我们使用MSE训练中透露了一个非常慢的收敛(θ的)作为损失函数。也许这个问题可以通过让更多的实验来回答。但对于时间,我们坚持用三角比定义的损失函数。

模型体系结构

模型架构

我们创建了一个准vgg网络,它可以预测角度的数值,该数值需要3个输入:图像以及拍摄角度的正弦和余弦值。

培训模式与合成数据

理想的情况是,我们的角度预测模型能够了解产品的所有可能视图。这意味着通过给我们的模型足够的样本,让它知道“前端”区域是什么样的,然后对所有定义的区域重复相同的过程。同样,理想情况下,按照上面的逻辑,我们正在寻找一个数据集,该数据集具有许多产品的图像,这些图像标记了水平旋转的每个角度。然而,在现实世界中,很少有数据集能够提供这样的家具产品粒度视图。

因此,我们把合成数据。后面有使用合成数据的三个重要原因:

  • 我们自产的合成数据生成过程创建的图像与我们从供应商那里得到的相当接近。所以性能受到影响的几率是域差距较低的模型将从类似于它会推断和生产过程中的工作学习图像
  • 它可以让我们训练用的图像模型颗粒状角度信息,而不是教育的培养模式,只有8数字角度值,我们现在可以训练有完整的360°覆盖模型。
  • 它在现实世界的图像(即,最图像属于额叶区)解决数据不平衡:与不平衡数据训练的模型削弱的表现。与具有广大的“前”图像数据集训练的模型会导致像,“后退”或“左”的其他区域的表现不佳。我们需要一个模型,从各个可能的角度进行均匀良好的图像。尽管数据增强可用于寻求平衡,它不会提供足够的差异。

使用3D模型创建合成数据

我们使用来自Wayfair的3D模型库和3DSMax的椅子和沙发的3D模型来创建一个训练图像的数据集。对于每个3D模型,我们生成100个视图,即100个图像,以及颗粒角度信息。以下是该数据集的快照:

生成合成数据 生成合成数据

创建环境图像

该过程如上所述生成的轮廓图片或产品与白色背景图片。对于一个典型的家庭环境创造的产品图像或环境图片,我们删除轮廓图像的白色背景和使用环境进行更换。

简单的说,环境图像=剪影图像 - 白色背景+随机环境

生成合成环境结果

我们在真实轮廓图像上对两组产品类进行了推断

  1. 椅子和沙发(520000个图像):我们测试了模型34个不同类别的椅子和沙发
  2. 床(97000个图像):我们测试的模型与12个不同类别的床

这里是我们的发现:

  • 我们衡量一个区域水平精度 - 我们认为该模型是正确的预测只有当预测的角度在于在最佳的3人注释过程确定正确的区域
  • 总体精度椅子和沙发被认为是75%,并且根据本刊物由报道这是相当类似,几乎按面值与国家的最先进的精度这里
  • 我们认为一个较低的准确率为66%数据集。

上述结果均符合,因为我们创造了射门的角度区域图和定义使用仅从椅子和沙发的图片我们的预期。应用对性能不佳的床铺结果相同的定义。这无疑提供了信用的某种程度我们前面提出的产品具有不同的几何形状不同的看法的理论。例如,它可能发生,而15°-75之间的“前 - 右”区椅子谎言°,床位同样可能是一个有点不同。

此外,填补领域的差距是很棘手的。虽然我们在合成图像创建过程中所遵循的过程帮助我们创建了一个训练数据集,它与供应商使用的图像非常相似,因此产生了一个强大的基线模型,但它并不是万无一失的。此外,解决领域差距是一个收益递减的过程。

(A)椅子和沙发 混淆矩阵(B)层

未来的工作

我们永远不会结束。以下是确定的领域,我们可以测试我们的模型和工作努力,使一个更全面的算法:

  • 环境图像:用更多的环境图像训练模型
  • 开展更多的人类感知的研究:找到适合每一类产品的区域定义射门角度区域图和设定。虽然这看起来起初,这个过程有前途的,但是可以通过法律收益递减,尤其是对的,取指较小的收入或比别人更少的产品类别的影响。只有更多的实验将完成整个画面。因此,一个更好的方法可能是小组尽可能多的同类产品寻找尽可能并创建相应的拍摄角度的区域定义。
  • 领域差距管理:在合成图像上使用预处理方法,如直方图匹配,使它们更接近我们从供应商那里得到的真实图像
  • 创建数据集,训练和检查模型在产品图像上的性能属于其他几何形状,如三维对称和上面定义的二维。

参考

ShapeNet

https://www.shapenet.org/

设计深度卷积神经网络的连续面向对象估计

https://arxiv.org/pdf/1702.01499.pdf

利用深度卷积神经网络评估小儿骨龄:https://www.researchgate.net/publication/321823302_Pediatric_Bone_Age_Assessment_Using_Deep_Convolutional_Neural_Networks三维姿态回归使用卷积神经网络(马亨德兰等人,2017)

https://arxiv.org/abs/1708.05628

深度学习相机位姿回归的几何损失函数(Kendall等人,CVPR 2017)

https://www.youtube.com/watch?v=Rp2Znu1ZJVA

https://arxiv.org/abs/1704.00390

快速单镜头检测和姿态估计

https://ieeexplore.ieee.org/document/7785144

使用大型CAD模型数据集的基于样本部分的2D-3D对齐(Aubry et al., 2014)

https://www.di.ens.fr/willow/research/seeing3Dchairs/supplementary_material/false_positives_2012/index.html

除了PASCAL - 在野外进行立体物检测基准

http://cvgl.stanford.edu/projects/pascal3d.html

3D模型+学习:解析宜家对象-精细姿态估计(JJ Lim, 2013)

http://people.csail.mit.edu/lim/paper/lpt_iccv2013.pdf

三维姿态估计和三维模型检索在野外对象(CVPR 2018)

http://openaccess.thecvf.com/content_cvpr_2018/html/Grabner_3D_Pose_Estimation_CVPR_2018_paper.html

合成视点预测

https://ieeexplore.ieee.org/document/7801548

姿态估计的几何深度学习

https://ieeexplore.ieee.org/document/5995327