2017-10-12 88 views
0

我正在处理一些非常简单的图像处理步骤。 步骤如下:从AWS S3为图像处理创建管道

  1. 下载图像的特定ID从GIF
  2. 格式化图像或任何以可能的话JPG
  3. 检查图像尺寸
  4. 调整图像(只是在想它:上采样/下采样图像 - 目前还不能确定,如果这一步来了)
  5. 图像分类和更新数据库信息
  6. 得到一张ID和重复1次。

如果我不得不快速实现它,而不会想到我只需为每个步骤编写一个带有子函数的简单python脚本(并且在出现问题时抛出异常 - 某些步骤很适合像(4.)其他步骤(5.)是必要的)。

我听说过luigi和流水线,并想知道这是否会成为一个用例。

使用诸如luigi之类的东西或者别的东西会有什么好处 - 对于我试图解决的问题,是否有最佳做法?

为了给你一些数字,我现在有大约20GB的数据和更多的100K图像。每天都有大约10k图像需要处理。

非常感谢!

回答

0

如果您打算使用EC2实例,那么使用luigi和流水线等工作流程编排框架是有意义的。

但是,您可以在AWS中使用更好的方法,使用Lambda和Step Functions。在这里,您可以在每个步骤中使用图像转换逻辑设计事件驱动的工作流程,而步骤功能则使用可视化来管理状态机,这具有固有的可扩展性。

您可以按如下方式设计事件驱动流程。

将图片上传至S3 - >触发步骤功能工作流程 - >回写至S3

+0

其实我的主要应用程序是在数字海洋和我使用S3的图像托管。我也在想如果像Lambda这样的东西会成为一个用例。但我并不熟悉它。是否可以在Lambda中使用类似tensorflow和我自己的python脚本和包?如果我必须关心成本,这是一个好主意吗?对于数字海洋,我每月支付5美元,我想我需要每张图片几秒钟。 – MichaelRazum

+0

您可以将Lambda与您自己的Python包一起用于图像处理。事实上,还有用于创建图像缩略图的预建模板。成本模型与数字海洋中的模型相比有所不同,您将在几秒钟内为Lambda执行时间付款,因此更多的运营成本低于前期成本,其中成本随使用情况而增加。在这里,如果脚本和步骤很少,只能使用Lambda。对于复杂的工作流程,我更愿意使用Lambda的步骤功能,其中将会有额外的步骤转换成本。 – Ashan

+0

感谢您的帮助。将看看lambda,但仍不能100%确定要走哪条路。 – MichaelRazum