
简介
Photoshop Web是非常流行的桌面图像编辑软件 Adobe Photoshop 的一个浏览器版本。这个在线工具为编辑、增强和处理图像提供了广泛的特性和功能,这些功能都可以通过网络浏览器进行。
在这篇文章中,我们将探讨Adobe计划如何将先进的ML功能从桌面带到网络浏览器上,如 对象选择工具。我们还将探讨基于网络的 JavaScript 机器学习如何提高 Photoshop Web 的性能和用户体验,以及我们未来期待的内容。
挑战
最近,Photoshop 已经通过 WebAssembly ,这是我们首次尝试将我们的工具移植到浏览器上。然而,为了给Photoshop Web带来先进的ML功能,如对象选择工具,它目前采用了云推理解决方案来完成对象选择任务,需要用户在线,并将数据发送到云服务来执行机器学习任务。这意味着网络应用不能离线运行,用户隐私不能得到保护,而且每次调用云端都会增加延迟和金钱成本,因为我们需要在自己的硬件上运行这些模型。
![]() |
当涉及到对象选择工具时,由于网络延迟,依靠云推理有时会导致次优的性能。为了提供更好的用户体验,Adobe Photoshop Web通过开发一个设备上的推理解决方案来消除这种延迟,从而实现更快的预测和更灵敏的UI。
TensorFlow.js是一个来自谷歌的开源机器学习库,面向JavaScript开发人员,能够在浏览器中运行客户端。它是网络ML最成熟的选择,有全面的WebGL和WebAssembly后端操作者的支持,在未来,随着新的网络标准的发展,还可以选择在浏览器内使用WebGPU后端,以提高性能。Adobe与谷歌合作,将TensorFlow.js引入Photoshop Web,并启用先进的任务,如使用ML在浏览器中运行的对象选择,合作的细节在下面说明。
当我们第一次开始转换为网络解决方案时,我们注意到WebAssembly(我们的核心移植的Photoshop代码运行在其中)和TensorFlow.js(在浏览器中运行ML模型)之间存在同步问题。基本上,我们需要同步加载和运行TensorFlow.js模型,而不是异步地与我们的WebAssembly移植的Photoshop一起工作。一个潜在的第三方解决方案由于它的缺点而不是一个选项--如大的代码开销大小或不可预测的跨设备性能。因此,需要一个新的解决方案。
为了应对这些挑战,首先谷歌和Adobe合作,为Emscripten带来了一个代理API--这是一个第三方编译器工具链,可以编译成使用LLVM的WebAssembly,使用C或C++编写的代码能够在浏览器中运行并与JavaScript库交互。Emscripten的代理API有效地解决了第三方解决方案所遭受的这些问题,并允许Photoshop的Web Assembly实现和TensorFlow.js ML模型运行之间的无缝集成。
接下来,一旦WebAssembly和TensorFlow.js之间的通信成为可能,Adobe就将关键的ML模型移植到TensorFlow.js格式,比如上面显示的用于对象选择的模型。TensorFlow.js团队通过专注于优化常用的操作模型(如Conv2D操作)来协助此类模型的优化,以确保转换后的模型在浏览器中尽可能快地运行。
现在云端和设备上的解决方案都是可能的,Photoshop Web可以选择提供最佳用户体验的最佳方案,并相应地部署ML模型。虽然设备上推理为经常使用的任务提供了卓越的用户互动,具有低延迟和隐私性,但由于每个浏览器标签的内存有限(目前在Chrome中约为4GB),并非所有ML模型都能在本地运行。另一方面,云推理可以为网络延迟可以接受的任务容纳更大的ML模型,但要权衡的是,终端用户认为的隐私较少,以及在服务器端硬件上托管和执行此类模型的相关成本。
性能改进
自从谷歌团队通过其各种支持的后端(WebGL、WASM、Web GPU)改善了TensorFlow.js的硬件执行性能后,模型的性能得到了30%到200%的改善(尤其是对于倾向于看到最大收益的大型模型),在浏览器中实现了接近实时的性能。
展望未来
Photoshop Web的 "选择主题"和 "对象选择 "工具展示了机器学习如何帮助提高用户的工作流程和体验。随着基于网络的机器学习技术的不断发展,以及TensorFlow.js后端支持和效率的不断提高,Photoshop Web将能够在浏览器中把更先进的模型带到设备的边缘,推动可能的极限,实现更多的先进功能,让用户满意。
试试吧
现在就在photoshop.adobe.com,亲自尝试一下Photoshop Web,看看浏览器中机器学习的力量,它带来了Web ML(即将推出)和云ML推理的最佳效果!