如何用React Native和现成的AI创建一个“时尚警察”

想象一下,你刚刚在当地的购物中心偶然走进一家诺德斯特龙(Nordstrom),迷失在斯兰德曼(slenderman)模样的模特和一货架的高价大衣中。或者,更现实地说,你在网上浏览是因为你太懒了,不想去商店。你想为朋友挑选一份生日礼物,但你不知道他们会喜欢什么。他们的风格是什么样的?他们想要一件破洞的黑色衬衫还是一件绿白条纹的毛衣?你应该知道的,但你不知道。

没有必要害怕,因为可定制的人工智能时尚警察就在这里。我们将利用微软的“现成产品”定制的愿景根据你提供的数据将衣服分类为“可爱”或“不可爱”的服务。如果你在网上购物,你可以在浏览器中测试它,但我们也会做一个简单的React Native应用程序,在你可能在商店拍摄的照片上使用人工智能模型。

衣架吓到你了吗?继续读下去!

当然,品味是主观的,所以最好的部分是,你可以通过上传他们喜欢或不喜欢的衣服的照片来调整应用程序,以适应你的朋友(或你的朋友,或你自己)的时尚品味。

同样,为了相对容易和快速地做到这一点,我们将使用微软的自定义视觉预测API。还有其他类似的服务,比如谷歌AutoML愿景服务。这使得机器学习或计算机视觉经验有限的人可以创建和训练定制模型,例如,对具有不常见标签的图像进行分类。它们相对快速和容易使用,非常适合这类项目。

开始

要开始这个项目,你必须创建一个Azure帐户,然后创建一个新项目,等等。Azure提供免费试用,我只是按照说明操作在这里

注意事项:确保你“切换目录”到你创建的Azure帐户-否则它将不允许你创建一个新的自定义愿景项目。另外,当你做这个项目,请注意,我们使用的是Multiclass分类器(更具体地说,是二进制分类器),因为每张图像只需要用“可爱”或“不可爱”标记。

创建新项目

一旦确定了想要创建AI模拟的风格(让我们将这个人表示为predictee),你需要收集有关预测者风格的信息。越多越好。因为我们几乎看不到预测模型是如何被训练的,也不能调整它的任何部分,所以我们必须把它当作一个黑盒子。然而,就像大多数数据驱动的AI系统一样,你输入的数据质量越高、种类越多,它的表现就越好。

为朋友网购?没有必要应用!

首先,我测试了人工智能的网上购物能力。这很简单,因为我只需要把我喜欢和不喜欢的衣服的图片截图下来,然后发给模特。没有必要为此建立一个应用程序-你可以训练它并在浏览器

训练人工智能

诺德斯特龙在这方面做得非常好,因为他们出售的每一件商品都有照片,没有人穿,在非常相似的照明条件和背景下拍摄的。我的假设是,该模型在这些一致的条件下会更好地工作,因此它可能能够挑选出图案和颜色的细微差别,而不是背景颜色或人们的身高或肤色。

一开始我只买短袖衬衫——我保存了40张我喜欢的和40张我不喜欢的照片。我随机挑选了30个送给微软的模型进行训练,每个模型保存了10个用于测试模型。是的,我知道这是一个疯狂的小数据集,但我的生活除了截图Nordstrom的图片:/

我将标记好的训练数据输入到Custom Vision的web界面中

测试人工智能

训练结束后,我使用“快速测试”功能,将模型应用于我的测试集,其中有10件“可爱”和10件“不可爱”标记的衬衫。我得到了以下结果:

回忆实际上,可爱的衣服被正确地归类为可爱,得分是8/10,也就是0.80。的精度被分类为可爱但实际上很可爱的衣服,得分为8/13,约为0.62。的F1的分数总共是0.70。我得说,对于一个现成的模型来说,不算惊人,也不算糟糕。随便你怎么想,但我觉得在为我挑选衣服时,这绝对比一个毫无头绪的朋友强。

当我查看每张图像的分类时,我发现AI倾向于根据颜色对图像进行分类。如果你看上面的训练数据,你会发现我更喜欢白色、黑色和蓝色等素色,而亮色衬衫大多被贴上“不可爱”的标签。

分类器这次是正确的。

不过,这种对我品味的简单看法并不总是奏效。让我们看更多的例子。

人工智能并不真正理解衬衫的“风格”,只知道衬衫的颜色。我把很多有褶皱的衬衫(比如上面那件灰色衬衫的肩膀处)标记为“不可爱”,但AI仍然把灰色衬衫归类为可爱。上面的红色衬衫可能太亮了,不能被归类为“可爱”,因此被错误地归类了。所以,是的,AI做得并不差,因为毕竟是颜色这是影响我个人风格的一个重要因素,但它似乎也未能捕捉到我品味中更多的细微差别。

去商店?你需要一个应用程序。

我还想测试人工智能在野外的能力——比如给商店里的衣服拍照,然后用它来决定是否购买某件衣服。

为自己创建一个应用比以往任何时候都容易,所以不要担心——我们不会完全部署到app Store。不管怎么说,这花的时间太长了。我使用反应本地快速制作一个跨平台(适用于iphone和android)应用程序,具备我所需的功能。

的功能吗?嗯,这就是给一件衣服拍照的能力,让人工智能立即预测预测者是否会认为它“可爱”。所以我们需要能够使用手机的摄像头,能够拍照,在我们实时拍摄的照片上使用微软预测API,并将结果传达给用户。这很容易做到世博会的服务,如果您想深入了解细节,我的所有代码都可以在Github

关于预测API的旁注

制作这个过程中最令人困惑的部分是试图通过API端点直接发送从手机摄像头拍摄的图像文件。你应该以“八字节流”的形式发送数据,而在微软这方面很少有支持或文档。我试着发送一个二进制编码的图像,我试着发送一个表单数据格式的图像文件,我试着调整图像的大小,然后做以上的组合-但我所尝试的一切都不起作用。

说实话,我花了好几个小时试图弄清楚为什么我没有得到好的回复。最后,我问了一个以前确实遇到过这个问题的朋友的朋友,他说他最终放弃了直接发送图像文件的尝试,而是使用另一个API先上传图像,然后发送图像的web url。

听到这些,我承认失败,并采用了那个解决方案:我使用Imgur API上传手机上的照片,然后发送在图像web url

无论如何……

在这之后,应用程序工作了!人工智能的工作方式与它在诺德斯特龙测试集上的表现惊人地相似。它仍然是在Nordstrom.com网站的图片上训练的,所以看到下面的结果在一些我已经拥有的随机衣服上:

你可以看到人工智能是多么自信地把黑色衬衫归类为“可爱”,把条纹衬衫归类为“不可爱”。这是好的,因为它表明AI没有被新的照明条件严重扭曲,坏的(但预期),因为它似乎仍然延续了“沉闷的颜色可爱的明亮的颜色不”的简单观点。但总的来说,你可以在现实生活中使用这个“时尚警察”,这真是太酷了!

最终的想法

嗯,这很有趣!我最终添加了一些令人兴奋但简单的内容,如随机改变AI反馈的语言,比如“我喜欢它!!”或“别浪费钱了……”,而不是简单地贴上“可爱”和“不可爱”的标签。这款应用的伟大之处在于它是完全开放和适应性强的——你可以改变用户体验,或者对它进行任何训练,这样它就可以预测一个地标,一个街道标志,甚至热狗还是不是热狗

我还制作了一个关于在现实生活中使用这个方法的小视频,作为我的书呆子YouTube频道的先锋。你可以去看看在这里如果你想看到应用程序做出真正的时尚选择(并观看我在镜头前的尴尬)!

感谢阅读:)

--

--

使用Mediumbetway娱乐官网应用程序

一个写着“在App Store下载”的按钮,点击它就会引导你进入iOS App Store
一个写着“开始吧,谷歌播放”的按钮,如果点击它,就会引导你进入谷歌播放商店
凯尔西王

凯尔西王

摆弄代码、数据、文字和我能找到的任何东西。斯坦福大学CS +数据。kyw.io

Baidu