0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为图像提供预设建议:构建 VSCO 中的“照片专用”功能

Tensorflowers 来源:YXQ 2019-07-26 15:46 次阅读

在 VSCO中,我们为您构建了个性化的创意工具、多种功能空间以及社交网络的链接。除了公开点赞、发表评论及查看粉丝数量等功能外,我们的应用还为用户提供图像视频的创建和编辑、发掘新技巧和新创意,并能够接入充满活力的全球社区。

我们使用机器学习来提供个性化定制,并为每位用户的创意流程提供指导。VSCO 为调整图片效果而提供了一系列多达 160 种预设,甚至还支持胶片相机的模拟图像。

未应用任何滤镜的建筑物照片。Sarah Hollander 所摄图像(左)。应用 AU5 预设后的建筑物照片(右)。

但在我们的研究中发现,这一系列的预设会让用户感到手足无措。因为太多的选择往往会导致用户坚持使用自己所熟悉和偏爱的少数预设,而不会去尝试新的预设。

解决方案

我们的挑战是需要为用户在编辑图片进行创作留有余地的同时,同时给用户提供可靠的建议并且鼓励他们去自行探索。我们的图像团队为了满足不同种类的图形而精心提供了多个预设,这让我们能够为每张照片分别提供个性化的建议。

为解决上述问题,我们决定借助设备端机器的学习和采用深度卷积神经网络 (CNN) 模型来为图像提供预设建议。因为这些模型能够理解图像中的众多细微差别,所以在分类上,相较于传统的计算机视觉算法更为便捷和快速。

基于这种思路,我们开发出了“照片专用(For This Photo)”功能。该功能使用设备端的机器学习来识别所编辑的照片类型进而在策划列表中提供相关的预设建议。“相片专用” 功能深受用户喜爱,现已成为仅次于“All(用于显示所有预设)”的第二大常用功能类。

“相片专用” 功能应用视频

为了让用户了解该功能运作流程,我们将会逐一介绍相关步骤。用户在使用“照片专用”功能进行视图编辑,当加载图像时,模型会立即启动推理作业,并为该图像返回一个类别。随后,模型会将类别 ID 与缓存目录中的 ID 进行匹配,并会返回一个与该类别相符的预设列表。之后在“照片专用”部分中将显示六个预设选项供用户参考,这些预设由免费预设和 VSCO 会员专属预设组成。通过免费和付费预设的对比,为用户提供实用参考。非会员用户在预览 VSCO 会员专属预设之后,便能了解 VSCO 会员服务的价值所在。而会员所能享受的优势在于,他们能够通过会员服务了解可采用会员专属预设的图像类型。

设备端机器学习有助确保可访问性、实现快速编辑并保护隐私

研究伊始,我们便已了解基于服务器的机器学习不适用于此功能。我们希望此功能使用设备端机器学习主要基于三大原因:设备端机器学习支持离线编辑、可实现快速编辑并能保护隐私。

首先,我们并不希望仅在会员在线时才提供此功能,因为这会限制他们的创造力。灵感可以随处迸发:人们可能会在网络连接受限的情况下拍摄和编辑照片,例如沙漠中央或是高山之巅。我们的用户群中有许多人都身处美国境外,因此并非人人都能随时访问高速网络。

其次,我们希望确保实现快速编辑。若我们采用云端机器学习模型并以此提供“相片专用” 功能,需要上传用户图像并进行分类(这会耗费大量时间、带宽和流量),而用户亦需下载预设;即便网络连接状态良好,整个过程亦十分缓慢,如果网络不佳,甚至都无法完成。若在设备端运行机器学习,则表示全部流程都发生在本地,运行速度快且无需网络连接。这对于确保用户捕捉精彩瞬间并保持创意至关重要。

第三,编辑过程不用公开。服务器端解决方案需要我们让用户上传仍在编辑且未发布的照片。设备端机器学习有助于用户在创作期间保护他们的隐私。

为什么选择 TensorFlow

既然我们希望使用自定义模型来开展设备端机器学习,那么 TensorFlow Lite 显然就是最佳之选。因为该框架能够轻松提取基于服务器训练的模型,并能使用 TFLiteConverter 将该模型转换为可与手机兼容的格式(.tflite 格式)。

此外,我们已在服务器端机器学习生产系统中进行验证:TensorFlow 与 TensorFlow Serving 均可成功运行。TensorFlow 库的设计是以在生产环境中运行机器学习为首要重点,因此我们认为 TensorFlow Lite 也不例外。

我们使用 ML Kit(https://developers.google.com/ml-kit) 直接在 TensorFlow Lite 模型上运行推理,并将其无缝整合至我们的应用中。借此,我们便可将原型中的功能快速引入预生产环境。ML Kit 能够为初始化和加载模型及对图像运行推理提供更高级别的 API,这让我们无需直接处理更低级别的 TensorFlow Lite C++ 库,从而能够大幅加快整个开发流程,并能为我们训练模型腾出更多时间。

VSCO 机器学习堆栈概览

在机器学习堆栈方面,我们使用 TensorFlow 来对图像进行深度学习,并使用 Apache Spark 对行为数据进行浅层学习。

在生产环境中,我们有一个基于云端并使用 TensorFlow Serving 的实时推理流水线,该流水线负责处理每一张通过各类卷积神经网络实时上传至 VSCO 的图像。之后,这些模型的推理结果会用于产品中其他功能,如“相关图像”、“搜索”、“为您定制”和“发现”功能等的其他选项卡。对于设备端的机器学习,我们使用 TensorFlow 生态系统中适于移动端的组件(即 ML Kit 和 TensorFlow Lite)。

相关图像

为您定制

搜索

用户建议

我们还拥有一个基于 Spark 的推荐引擎,该引擎可使用数据存储中不同来源的大型数据集来训练模型,而这些来源包括图像元数据、行为事件和关系数据。之后,我们使用这些模型的结果来服务于各种形式的个性化推荐,如用户建议。

为支撑机器学习流水线的其他环节,我们还使用 Elasticsearch实现搜索和相关功能,使用 Apache Kafka处理基于日志的分布式数据流(此数据流亦作为所有机器学习模型的输入),并使用 Kubernetes部署所有微服务。我们使用的语言包括 Python、C++、Go、Scala;在对设备端进行集成时,我们则使用 Java/Kotlin 和 Swift/Object-C。

设备端机器学习:“照片专用”工作原理

第一步:对图像进行分类

为构建能够提供“照片专用” 功能的模型,我们首先需为图像分配一个类别,然后为该类别推荐相应的预设。下图描绘了图像分类过程:

对图像进行分类

我们从公司内部专业人士所标记的图像数据开始入手。这些专业人士均为摄影专家,能够掌握用户行为的第一手资料,因此他们比任何人都更加了解现今分享的内容类型以及未来的发展趋势。他们帮助工程团队构想出了适用于模型的多种图像类别,其中包括艺术、肖像、活力、海岸、自然、建筑、光影、黑白等。俗话说,机器学习 90% 的工作都是在清理数据。这些步骤有助于确保我们拥有基于稳定可靠的数据来训练模型。

在 TensorFlow 中,我们使用与专业人士一同创建的分类数据集,并基于 SqueezeNet(https://arxiv.org/abs/1602.07360)架构训练了一个 CNN 模型。选择此架构是因为其尺寸更小,且准确率更高。通过使用 TFLiteConverter,我们已将训练后的模型从 TensorFlow Saved Model 格式转换为 TensorFlow Lite (.tflite) 格式,以便在 Android 上使用。此阶段中发生了基本错误,其中一个原因在于,我们所使用的 TFLiteConverter 版本与 ML Kit 通过 Maven 引用的 TensorFlow Lite 库版本不相符。ML Kit 团队帮助我们解决了以上问题,并在我们研究期间发挥了巨大作用。

在构建出可为图像分配类别的模型后,我们就可以将该模型捆绑至应用中,然后搭配使用 ML Kit 对图像运行xn。由于我们使用的是自定义训练模型,因此我们采用了 ML Kit 中的 Custom Model API。为获得更高准确率,我们决定放弃模型转换中的量化步骤,转而使用 ML Kit 中的浮点模型。这其中存在一些挑战,因为 ML Kit 会默认采用量化模型。不过,我们轻而易举就成功更改了模型初始化中的一些步骤,从而令其支持浮点模型。

第二步:推荐预设

下一项挑战是基于图像类别提供预设建议。我们与创建预设的内部图像团队进行合作,共同构想出与各类别图像相契合的预设列表。此过程包括对分属各类别的众多图像分辨进行了严格测试,以便我们能够分析出每个预设对不同颜色的影响。此外,我们还拥有一个策划目录,其中包含了与各类别相对应的预设。

为图像提供预设建议

随着我们在会员服务中不断添加新预设,这些策划目录亦将逐步更新。为了便于我们随时更新这些列表,并让用户免于更新应用,我们已将这些目录存储在服务器上,并使用 API 对用户提供服务。

该 API 是由 Go 语言编写的微服务,支持移动客户端定期检查更新,从而确保拥有最新版目录。移动客户端可缓存此目录,并仅在新版目录推出时才开始获取。然而,对于在首次尝试此功能之前尚未连接互联网的用户,此方法会为其带来“冷启动”问题,即应用无法接入 API 并下载这些目录。我们决定在发布应用时随附以上目录的默认版来解决这个问题。借此,所有用户便能在任何网络连接状态下使用该功能,而这也与该功能的初始目标相契合。

结果与结论

通过“照片专用”功能,现在可以顺利地使用预设进行编辑。我们认为,若会员无法从所获的新预设中发掘价值,他们的创意实现亦将遭遇阻碍。我们不仅希望帮助更多用户发掘新预设,还希望他们关注与所编辑的图像最相配的预设。

我们将持续优化“照片专用”功能,根据其他图像特征和用户的社区行为(如关注、收藏和转发)来提供推荐。此外,我们也希望为此类推荐提供更实用的背景信息,同时鼓励我们的社区创作者互相能够积极发掘与激励。

在畅想此功能未来愿景的同时,我们也在反思。我们意识到,若没有 TensorFlow Lite 与 ML Kit,此功能以及 VSCO 的设备端机器学习能力都将无法实现。我们乐于未来在此领域继续投入更多的人力和物力,并利用该技术创造更多的功能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    27

    文章

    1299

    浏览量

    56837
  • 机器学习
    +关注

    关注

    66

    文章

    8437

    浏览量

    132897

原文标题:为图像提供预设建议:构建 VSCO 中的“照片专用”功能

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    《DNK210使用指南 -CanMV版 V1.0》第三十章 照片拍摄实验

    第三十章 照片拍摄实验 在前面的章节,已经了解了如何在CanMV下获取摄像头输出的图像数据并在LCD上进行显示,同时也了解了如何解码文件系统
    发表于 10-31 14:18

    图像采集卡不断发展和改进,视觉系统提供更大的价值

    图像采集卡最初是为了从模拟机器视觉相机获取原始图像而开发的,人们曾一度预计该技术将被直接连接到电脑的技术所取代。然而,经验却并非如此。图像采集卡不断发展和改进,
    的头像 发表于 09-30 11:10 234次阅读
    <b class='flag-5'>图像</b>采集卡不断发展和改进,<b class='flag-5'>为</b>视觉系统<b class='flag-5'>提供</b>更大的价值

    微软Win11 Build 26227预览版用户推送AI驱动“建议回复”功能

    近期,微软还为“手机连接”预览版应用增加了OCR功能,用户只需在应用内点击“照片”选项卡,便能轻松选取照片中的文字进行复制。
    的头像 发表于 05-31 09:48 608次阅读

    具有清零和预设功能的双路 D 类正边沿触发的触发器CDx4HC74数据表

    电子发烧友网站提供《具有清零和预设功能的双路 D 类正边沿触发的触发器CDx4HC74数据表.pdf》资料免费下载
    发表于 05-16 09:20 0次下载
    具有清零和<b class='flag-5'>预设</b><b class='flag-5'>功能</b>的双路 D 类正边沿触发的触发器CDx4HC74数据表

    具有预设和清除功能的双J-K正边缘触发触发器数据表

    电子发烧友网站提供《具有预设和清除功能的双J-K正边缘触发触发器数据表.pdf》资料免费下载
    发表于 05-14 10:13 0次下载
    具有<b class='flag-5'>预设</b>和清除<b class='flag-5'>功能</b>的双J-K正边缘触发触发器数据表

    鸿蒙OpenHarmony开发:【编译构建指导】

    OpenHarmony编译子系统是以GN和Ninja构建基座,对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能
    的头像 发表于 05-13 09:31 1922次阅读
    鸿蒙OpenHarmony开发:【编译<b class='flag-5'>构建</b>指导】

    具有清零和预设功能的SN74LVC2G74单路上升沿触发式D类触发器数据表

    电子发烧友网站提供《具有清零和预设功能的SN74LVC2G74单路上升沿触发式D类触发器数据表.pdf》资料免费下载
    发表于 05-07 09:48 0次下载
    具有清零和<b class='flag-5'>预设</b><b class='flag-5'>功能</b>的SN74LVC2G74单路上升沿触发式D类触发器数据表

    具有清零和预设功能的 SN74LVC1G74单路上升沿触发式D类触发器数据表

    电子发烧友网站提供《具有清零和预设功能的 SN74LVC1G74单路上升沿触发式D类触发器数据表.pdf》资料免费下载
    发表于 05-07 09:37 0次下载
    具有清零和<b class='flag-5'>预设</b><b class='flag-5'>功能</b>的 SN74LVC1G74单路上升沿触发式D类触发器数据表

    专用集成电路包括什么系统组成 专用集成电路包括什么功能组成

    )不同,专用集成电路被设计用于执行特定的功能和任务。以下是专用集成电路的系统组成和功能组成的详细介绍: 系统组成: 逻辑单元:这是专用集成电
    的头像 发表于 05-04 15:45 1918次阅读

    专用集成电路包括什么设备和设备 专用集成电路包括什么功能和作用

    专用集成电路 (Application Specific Integrated Circuit, ASIC) 是一种按照特定功能需求定制的集成电路。相比于通用集成电路 (General
    的头像 发表于 05-04 15:43 1987次阅读

    具有清零和预设功能的SNx4HC109双路J-K 正边沿触发式触发器数据表

    电子发烧友网站提供《具有清零和预设功能的SNx4HC109双路J-K 正边沿触发式触发器数据表.pdf》资料免费下载
    发表于 04-30 10:32 0次下载
    具有清零和<b class='flag-5'>预设</b><b class='flag-5'>功能</b>的SNx4HC109双路J-K 正边沿触发式触发器数据表

    机器视觉图像采集卡的功能与应用

    视觉系统图像采集部分主要由工业相机、工业镜头以及光源组合而成,而图像处理部分则是由图像处理软件来实现。图像采集卡可理解
    的头像 发表于 04-04 08:33 1037次阅读
    机器视觉<b class='flag-5'>中</b><b class='flag-5'>图像</b>采集卡的<b class='flag-5'>功能</b>与应用

    如何选择合适的线路板TG值?捷多邦提供专业的建议

    如何选择合适的线路板TG值?捷多邦提供专业的建议
    的头像 发表于 03-01 10:50 587次阅读

    鸿蒙开发【编译构建】讲解

    工具作为业界流行的自动化构建开源工具,本章节不再赘述,接下来大家介绍Hvigor构建体系。 Hvigor构建工具:一款全新基于TS实现的前端构建
    发表于 02-27 17:41

    CMOS图像传感器自动驾驶汽车提供视觉感知

    和其他道路使用者的安全。本文将探讨在选择图像传感器时需要注意的关键特性,以便自动驾驶汽车提供所需的出色功能组合。 图像传感器负责将光子转化
    的头像 发表于 02-27 09:28 551次阅读