开源技术 * IBM 微讲堂:Kubeflow 系列(观看回放 | 下载讲义) 了解详情

IBM Developer 博客

通过 IBM Developer 关注最新动态并获取信息

探讨深度学习应用中的一些问题,然后了解 Raspberry PI 上的深度学习如何解决这些问题。


本博客是 2020 年 “Call for Code” 全球挑战赛的一部分。感谢 Maureen McElaney 在审校和编辑本博客时给予的帮助。

在过去的十年里,深度学习模型将人类生活带入了一个新的时代。许多传统上的艰巨任务(如对象检测和机器翻译)都取得了重大进展。尽管取得了这些值得称道的成就,但绝大多数深度学习模型仍然在很大程度上依赖于与强大的中央服务器的连接,也就是说,这些模型必须与服务器保持连接才能正常工作。虽然依赖与外部服务器的连接在大多数情况下都没有什么问题,但在某些情况下,您可能需要考虑另一种选择。

在本博客中,我将会探讨深度学习应用中的一些问题,然后介绍 Raspberry PI(树莓派)上的深度学习如何解决这些问题。我还将演示如何使用 Model Asset eXchange (MAX) 中的开源深度学习模型来解决这些问题。

隐私和数据安全

使用深度学习模型的第一个问题是常常依赖外部服务器。您在外部服务器上所做的一切都会暴露给这个服务器。虽然可以保护服务器和确保数据的隐私,但通常成本很高,并且需要付出很大的努力才能保证服务器的安全。许多维护自己项目的人可能没有时间或资源来做好这件事。更糟糕的是,一些服务器维护人员可能有自己的恶意意图。这可能会带来严重的隐私和数据安全问题,具体取决于应用。确保自己的数据不会泄露也很难做到。

连接变化无常(甚至丢失)

互联网不一定始终可用,即使可用,也很难保证持续的连接。如果您是一名在野外工作的地理学家或水手,需要使用深度学习模型来执行实时图像分析,就要求您的应用程序在离线环境中工作。在有限的情况下,可以通过在浏览器中使用 TensorFlow.js 来避免这种情况。请参阅用手臂创造音乐,了解这个有趣的例子。

即使在可以随时获得互联网连接的情况下,一些关键系统也不能指望互联网连接在任何时候都能保持稳定和快速。例如,救护车可以采用能够翻译非英语患者语言的深度学习模型。但是,由于依赖无延迟的强大互联网连接,任何断开连接的情况都会导致治疗延迟,并且有可能以生命为代价。

为什么要在 Raspberry Pi 上进行深度学习?

要解决这些问题,可以运行一个不需要互联网连接的深度学习模型,例如,在诸如 Raspberry Pi 这样的小型电路板设备上。事实上,即使在能够接受连接缓慢且不稳定互联网的情况下,在客户端使用 Raspberry PI,而不是手机等昂贵的传统设备,也可以节省大量资金。这方面的一个例子可能是大规模的部署环境,例如监控摄像头。

Model Asset eXchange

Model Asset eXchange (MAX) 提供免费且开源的深度学习模型。借助 MAX,您不需要成为数据科学家或数学家,就可以利用免费的开源 AI 模型。有超过 30 种模型可供您选择,从音频分类和图像分割到自然语言处理。由于基于 Docker 的架构,一些 MAX 模型特别适合在 Raspberry PI 上部署。

在 Raspberry PI 上运行 MAX Object Detector

现在我们来看看如何在 Raspberry PI上 运行一个 MAX 模型。例如,我使用 Raspbian BusterRaspberry Pi 4 上运行 MAX Object Detector

  1. 打开 Pi 上的终端。
  2. 安装 Docker

     curl -sSL https://get.docker.com | sh
    
  3. 将用户 “pi” 添加到 Docker 组中,以便您可以作为常规用户使用 Docker。

     sudo usermod –aG docker pi
    
  4. 退出,然后重新登录(或者直接重新启动)。

  5. 按照 MAX Object Detector 模型的 README 中的操作说明,运行以下命令。

     docker run -it -p 5000:5000 codait/max-object-detector:arm-arm32v7-latest
    
  6. 在最后,您应该会看到以下消息。

     * Serving Flask app "MAX Object Detector" (lazy loading)
    
     * Environment: production
    
       WARNING: This is a development server.Do not use it in a production deployment.
    
       Use a production WSGI server instead.
    
     * Debug mode: off
    
     * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
    
  7. 下载测试图像。

     wget https://raw.githubusercontent.com/IBM/MAX-Object-Detector/master/samples/baby-bear.jpg
    
  8. 打开浏览器并访问 http://localhost:5000/app。选择刚才下载的图像。单击 Submit。应该可以看到对象探测器正常工作。

    MAX 对象窗口

    这也适用于摄像头。

    MAX 对象检测器 gif

就是这样!

继续体验 Raspberry Pi

这方面的一些有趣用例包括在机器人上安装 Pi 以进行导航,或者甚至简单地使用 Pi 作为您的家庭监控摄像头。

查看其他 MAX 模型,获得关于如何在离线环境中进行深度学习的更多灵感。其中部分模型已经支持 Raspberry Pi,比如音频分类器。如果想要了解 Raspberry Pi 中的更多模型,请随时将您的请求和想法发送给我们

本文翻译自:Running MAX deep learning models on Raspberry Pi(2020-02-11)