如何使用 python 为机器人设计实时深度学习应用程序?

How to design realtime deeplearnig application for robotics using python?

我创建了一个机器学习软件来检测对象(duh!),根据一些计算机视觉参数处理对象,然后触发一些硬件将对象放入相应的容器中。物体被放置在传送带上,相机安装在一个点上,当物体从相机下方经过时拍摄物体(一次一个物体)的照片。我无法控制皮带的速度。

现在的挑战是我必须配置大量的东西才能使机器正常工作。

第一个问题是模型创建分割掩码所花费的时间,它因对象而异。

另一个问题是我如何维护计算机视觉处理后生成的信号,并以不会与基于计算机视觉的推理不一致的方式将它们发送到执行器。

我的初始设计包括创建负责特定任务的流程,然后让它们根据需要相互通信。但是同步问题依旧存在

截至目前,我正在考虑将软件堆栈视为一组服务,就像我们通常在后端所做的那样,并使它们使用 celery 和 Redis 队列之类的东西进行通信。

我是系统设计的小白,数据科学出身。我探索了 python 的多线程模块,发现它无法用于我的目的(所有线程 运行 在单核上)。我担心如果我使用多处理,由于消息传递,单个进程可能会有额外的延迟,因此,这会给程序增加另一个不确定性。

其他详细信息:

  1. 编程框架和库:Tensorflow、OpenCV 和 python
  2. 摄像头分辨率:1920P
  3. 最大计算速度:3 triggers/second
  4. 深度学习模型:MaskRCNN/UNet

P.S:您还可以评论我应该搜索的技术或关键字,因为普通搜索不会产生任何好处。

我先总结一下。

  • 你想做什么

    1. "object"在传送带上
    2. 相机会拍摄物体
    3. MaskRCNN 将运行 进行分析
  • 这是您遇到的一些问题

    1. "The first problem is the time model takes to create segmentation masks, it varies from one object to another."

    -> 如果你想减少每张图像的处理时间,则需要加速器(FPGA、芯片等)或一些加速技术。英特尔 OpenVino 和英特尔 DL 棒是一个好的开始。

    -> 如果要处理的图片太多,那么您将有 2 个选择:1) 放置大量机器以便完成所有工作,或者 2) select 只处理重要的工作,并且丢弃别人。您将 "Maximum Accutuation" 设置为固定数字(3/秒)这一事实让我认为这就是您面临的问题。背景减法器是创建图像捕获触发器的良好开端。

    1. "Another issue is how do I maintain signals that are generated after computer vision processing, send them to actuators in a manner that it won't get misaligned with the computer vision-based inferencing."

    -> "job distributor" 像 Celery 在这里是不错的选择。如果消息堆积在代理(Redis)内部,那么一些任务将不得不等待。但这可以通过扩展您的计算机轻松实现。

这里只是一些建议:

  1. 视觉系统还包括硬件部分,所以硬件规格是必须的。
  2. 明确要求
  3. 不可能的事情确实存在,因此有时您可以减少项目的某些因素(可靠性、成本)。