如何使用NVIDIA Jetson和Amazon SageMaker结合打造智能边缘
NVIDIA TensorRT 是 NVIDIA 推出的深度学习推理的框架,也可以理解为一个优化器。它能够以更低延迟、高吞吐率来部署推理模型到嵌入式平台。这个框架可以将 Caffe,TensorFlow 的网络模型解析,然后与 TensorRT 中对应的层进行一一映射,把其他框架的模型统一全部转换到 TensorRT 中,然后在 TensorRT 中可以针对NVIDIA 自家的 GPU 实施优化策略,并进行部署加速。TensorRT 已经能够支持 TensorFlow、Caffe、Mxnet、Pytorch、Darknet 等深度学习框架,这里我们用到的正是基于Darknet的Yolo。TensorRT可以直接解析他们的网络模型;对于caffe2,pytorch,mxnet等框架则是首先要将模型转为 ONNX 的通用深度学习模型,然后对 ONNX模型做解析。而 Tensorflow 和 MATLAB 已经将 TensorRT 集成到框架中去了。具体参考: https://developer.nvidia.com/tensorrt DeepStream NVIDIA DeepStream SDK 提供了完整的流分析工具包,可用于基于 AI 的视频和图像分析。实时分析来自摄像头或传感器或物联网网关的数据。底层基于 GStreamer 实现低延迟和高吞吐量。还可以将消息代理如 Kafka 和 MQTT 将边缘集成到云中。在 NVIDIA 平台上的设备上可以加速 H.264 和 H.265 视频解码 ,来构建端到端 AI 驱动的应用程序比如:零售分析,停车管理,物流管理,光学检查和缺陷检测等。具体参考: https://developer.nvidia.com/deepstream-sdk Jetson Nano 可实时处理多达 8 个高清全运动视频流,可作为用于网络录像机 (NVR)、智能摄像机和 IoT 网关的低功耗边缘智能视频分析平台进行部署。NVIDIA 的 DeepStream SDK 使用 ZeroCopy 和 TensorRT 优化端到端推断管道,以实现边缘和本地服务器的终极性能。下图就是我跑的示例代码,显示 Jetson Nano 在 8 个 1080p 流上执行物体检测,同时基于 ResNet 的模型以全分辨率运行,吞吐量为 500MP/s,解码率为 500 MP/s (H.264/H.265)和视频编码率(250 MP/s)H.264/H.265. 具体请参考链接: https://devblogs.nvidia.com/jetson-nano-ai-computing/ Run Sample Code 这一点很重要,我们要先把示例代码跑通。 当我们通过 SDK Manager 将 DeepStream 成功烧录系统后,在路径在opt:/opt/nvidia/deepstream/deepstream-4.0/samples/configs/deepstream-app/ 运行nano.txt 的Demo code,如果运行成功,那么 Jetson Nano 平台的推理环境就部署成功了。步骤 5 就是我们通过 DeepStream 的 Demo code 运行成功的截图。 将 Sagemaker 训练好的模型部署到Jetson Nano 上 首先找到在 Sagemaker 上定义好的 output_path,将 S3 上的模型文件导出到 Jetson Nano 上。解压后的模型文件比如 yolov3-tiny-xxx.weights。 这个时候把模型导入到 Jetson Nano 上是不能直接运行的。即使直接运行也没有通过 TensorRT 和 DeepStream 做优化和加速,Jetson Nano 上如果不使用 TensorRT 加速,则会大大降低 yolo 的推理速度,例如yolo v3<1fps,yolov3 tiny<8fps,所以需要以下三步操作: 跑通 deepstream_reference_apps的yolov3-tiny应用 交叉编译 参数修改 测试 最终,测试我们的程序即可。 其实整个实验过程还是比较久的,由于篇幅原因我们不会扩展开每一个步骤的实现方法,这里先抛个最终实现的效果图。这个就是通过云端的 Sagemaker 服务做训练然后通过 NVIDIA 的 TensorRT 和 DeepStream 实现实时的目标检测。 边缘智能随着低功耗和低成本的 AI 芯片普及,越来越多的企业关注智联网这个领域。边缘智能正在促成人工智能(AI)与物联网(IoT)的融合,AI 与 IoT 相辅相成:如果没有 AI ,IoT 只是收集数据的 sensor,如果没有 IoT,AI 也不会应用到边缘。AIoT 项目确实比其他单纯的一个软件或硬件的研发更加复杂,它是多学科或技术栈的融合。比如,数据的采集、分析、展现需要大数据相关的技术,边缘逻辑的推理、判断需要应用机器学习的模型,对数据加工后又要与大数据结合去 ETL 。云端的逻辑编写、OTA 升级、安全设计、设备管理也要与终端集成。另外,如果是视频流交互还涉及到编解码、流媒体等技术。 正是因为它的复杂性,我们在云端训练,在边缘推理,既利用云计算提供的服务和接口来快速原型和开发,又利用 NVIDIA 提供的 Jetson 平台,在边缘侧加速推理,提高边缘侧算力的利用率。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |