是否可以与Google Compute Engine实例进行实时通信?

时间:2018-04-27 01:28:55

标签: python numpy tensorflow google-compute-engine google-cloud-pubsub

我想在我的笔记本电脑上运行一个程序(Gazebo模拟器)并将图像数据流发送到GCE实例,在那里它将通过对象检测网络运行并以近乎实际的方式发送回我的笔记本电脑。时间。这种设置是否可行?

我现在最好的想法是,对于每张图片:

  1. 将图像保存为个人计算机上的JPEG
  2. 将JPEG流式传输到Cloud Storage bucket
  3. 从我的GCE实例访问存储桶并将文件传输到实例
  4. 在我的python脚本中,将JPEG图像转换为numpy数组并运行对象检测网络
  5. 将检测结果保存在文本文件中并转移到云存储桶
  6. 从我的笔记本电脑访问存储桶并下载检测结果文件
  7. 将检测结果文件转换为numpy数组以进行进一步处理
  8. 这似乎有很多步骤,我很好奇是否有办法加快速度,例如减少保存和加载操作的数量或以更好的格式传输图像。

1 个答案:

答案 0 :(得分:1)

如果您的问题是“是否可以设置这样的系统并实时执行这些操作?”那么我认为答案是肯定的我认为是这样。如果您的问题是“如何减少执行上述步骤的次数”,那么我不确定我是否可以提供帮助,并且会推迟到这里的一位专家,迫不及待地想听到答案!

我已经实现了一个系统,我认为该系统类似于您对外汇交易算法研究的描述(例如,将数据从笔记本电脑上传到存储,计算引擎工作人员提取数据并对其进行处理,将结果发布回存储和我从笔记本电脑下载了编译结果。)

我使用了Google PubSub架构 - 如果您已经阅读过此道歉,请致歉。它允许程序之间的近实时消息传递。例如,您可以在笔记本电脑上进行代码循环,扫描查找新图像的文件夹。当它们出现时,它会自动将文件上传到存储桶中,一旦它们进入存储桶,它就可以向实例发送消息,告诉它们有新文件要处理,或者您可以使用“更改通知”功能谷歌存储桶。这些实例可以完成工作,将结果发送回存储,并向笔记本电脑上运行的代码发送通知,告知工作已完成,结果可用于提取。

请注意,我为上面的项目设置了这个,并且遇到了我放弃使用PubSub的问题。原因是PubSub的Python客户端库仅支持“异步”消息提取,这似乎意味着订阅者将从队列中提取多个消息并并行处理它们。有一些功能可以帮助管理API中内置消息的“流控制”,但即使实现它们,我也无法按照我想要的方式工作。对于我的特定应用程序,我希望按顺序处理所有内容,一次一个文件,因为对我来说很重要的是我清楚实例正在做什么以及执行它的顺序.Google搜索中有几个线程,StackOverflow和谷歌小组讨论使用队列,类,为特定实例分配特定任务等的变通方法,我尝试过,但即使这些问题也给我带来了。其中一些链接是:

Run synchronous pull in PubSub using Python client APIpubsub problems pulling one message at a time如果您愿意,还有更多内容!

您可能会发现,如果处理图像的速度相对较快,那么订单并不太重要,您不介意并行处理多个事项的实例,我的问题并不适用于您的案例。 / p>

仅供参考,我最后只是在我的'工作人员实例'上做了一个简单的循环,每30秒扫描一次“任务列表”桶或者查找要处理的新文件的任何内容,但显然这不是真正的 - 你最初寻找的时间方法。祝你好运!