首页 > 编程语言 >硬核解读KubeEdge基于大模型边云协同的机器人语义分割算法

硬核解读KubeEdge基于大模型边云协同的机器人语义分割算法

时间:2024-06-17 14:25:31浏览次数:17  
标签:KubeEdge SAM 模型 样本 RFNet 难例 边云 推理 硬核

本文分享自华为云社区《KubeEdge:基于大模型边云协同的机器人语义分割算法》,作者:云容器大未来。

近年来快速发展的视觉大模型(例如 SAM )在促进高精度的智能感知方面具有很大的潜力。然而,边缘环境中的资源限制往往会限制这种视觉大模型在本地部署,从而产生相当大的推理延迟,导致难以支持自动驾驶和机器人等实时物联网智能感知应用。KubeEdge SIG AI 复旦大学吕智慧团队胡时京在 KubeEdge-Ianvs 上发布了基于大小模型协同推理的云边协同物联网感知方法,通过难例样本挖掘算法将少量难例样本上传云端由视觉大模型处理,大部分简单样本在边缘端由小模型处理,在保证推理时延的情况下提高了应对难例样本的处理效果。

kubeedge.png

代码请见:https://github.com/kubeedge/ianvs/tree/main/examples/robot/lifelong_learning_bench/semantic-segmentation

一、背景

智慧城市、物联网( IoT )技术的发展已经在国内外社会中根深蒂固,它们改变了人们日常生活和工作的方式,如自动驾驶、机器人、数字孪生、可穿戴设备和增强现实等。其中大量数据从物理世界生成和收集并由各种人工智能(AI)应用程序处理成用户需要的信息越来越成为了一种发展趋势。据 Gartner 统计,到2025年,物联网等终端设备产生的数据量将达到 79.4 zettabytes(ZB),到2030年,物联网设备数量将达到1250 亿。不断激增的终端设备(如移动设备,物联网设备)产生了海量的数据,由于物联网数据的特点(即容量大、多样性、产生速度快),传统的基于云的物联网模型已经无法满足物联网中智能应用的要求,数据源的高度分散性和广泛分布的人工智能应用要求物联网中的边缘设备具有智能感知的能力,即基于海量物联网数据训练边缘模型并进行高效推理。

1.jpeg

图1:物联网感知失败案例

然而真实世界中的物联网边缘设备往往处在一个动态变化的环境中,例如自动驾驶汽车、机器人等移动边缘设备采集的数据会受其位置变化影响,监控摄像头采集的数据会受时间变化影响。物联网边缘设备采集的数据的分布和特征并非一成不变,在真实物联网边缘环境中普遍存在数据漂移和数据异构的现象。数据漂移和数据异构现象会对物联网边缘设备的智能感知能力造成极大影响,严重者甚至会导致出现人员伤亡以及业务受损。如图1所示,2017年,波士顿动力公司的人形机器人 Atlas 因为演示台所处环境与其训练所处环境相差较大未能正确识别演示台边缘,抱箱摔下演示台,该事件导致其股价大跌。2020年12月,福州中防万宝城导购机器人无法识别扶梯,跌落并撞翻两位客人,造成两人轻伤。2021年3月,特斯拉视觉识别应用误把白色卡车识别为天空,导致撞车造成至少两人丧生,特斯拉市值蒸发约440亿美金。2021年10月,美团无人配送车在送货过程中与一辆私家车相撞,美团被判全责。

以上案例充分说明了数据漂移问题和数据异构问题是目前物联网智能感知技术的两大挑战。

针对数据漂移问题,现有的解决思路致力于发生数据漂移后对模型在新的数据集上进行重训练使其能适应新的环境变化。然而重训练模型也会导致模型忘记之前学习到的信息,出现灾难性遗忘现象。这导致当物联网边缘设备又回到之前的环境时还需要再重新训练模型,造成了对算力的极大浪费。因此在训练过程中需要让模型具备终身学习的能力,使模型一方面可以不断学习新的数据集中的内容以适应新的环境,另一方面模型也不会大幅度遗忘在旧的数据集上学习到的信息,从而减少再重训练的开销。

针对数据异构问题,目前快速发展的视觉大模型,如 Meta 公司发布的 Segment Anything Model(SAM),具有较强的泛化能力,在处理分布外的异构数据时相比传统计算机视觉模型效果较好。因此在物联网感知推理过程中引入视觉大模型是应对数据异构问题的关键解决方案之一。

但是以 SAM 为首的大模型由于其参数量较大,难以部署在资源受限的边缘端,只能部署在云端使用。而很多边缘物联网设备,例如机器人、自动驾驶汽车,对推理的实时性要求较高,如果将所有推理样本都上传云端处理,会造成较大的通讯开销,并极大增加推理时延。因此只单独使用在云端部署的 SAM 大模型无法满足实时物联网感知的需求,需要通过云端大模型和边缘小模型的云边协同来解决实时物联网感知的挑战。

二、基于大模型的边云协同物联网感知系统实现

针对上述物联网边缘环境普遍存在的数据漂移和数据异构问题,我们采用终身学习训练方法动态更新边缘小模型从而使模型适应新的环境,我们在云端部署视觉大模型 SAM 用于处理分布外异构数据从而应对边缘小模型难以处理的难例推理样本。同时考虑到云端部署的 SAM 视觉大模型推理时延较大,难以满足物联网实时感知任务的需求,我们采用基于难例样本挖掘的云边协同策略,将大部分简单推理样本在边缘端由边缘小模型处理,少部分难例推理样本上传云端由云端 SAM 大模型处理,从而在保证推理时延的情况下提高推理准确率。

2.1 总体架构设计

基于大模型的边云协同物联网感知系统总体架构设计如图2所示,边云协同物联网感知系统包括云边协同推理和终身学习训练两部分。

云边协同推理模块用于解决物联网感知的数据异构和实时性问题。以 SAM 为首的大模型具有较强的泛化能力,因此在处理分布外异构数据时准确率更高。我们通过基于难例样本挖掘的云边协同策略,将大部分简单样本在边缘处理,只有少部分难例样本才需要上传云端由 SAM 大模型处理,从而提高推理实时性。在云边协同推理部分,我们在边缘节点部署 RFNet 模型和难例样本挖掘算法用于实现在边缘端对简单样本的推理和判断推理样本是否需要上传云端。难例样本挖掘算法根据 RFNet 模型推理的结果将样本分为难例样本和简单样本,简单样本直接输出 RFNet 推理结果,难例样本上传云端处理,从而降低推理时延,提高推理实时性。我们在云端部署 SAM 模型用于对难例样本的推理结果进行优化,从而应对数据异构的问题。优化后的云端推理结果会下载到边缘节点作为难例样本的推理结果输出。SAM 模型可以通过 prompt 的方式以交互的形式对图像进行分割,在本项目中我们参考复旦大学提出的 SSA(Semantic Segment Anything)[1] 方法,用 SAM 模型将图像中所有物体都分割出来从而直接应用 SAM 模型于语义分割任务中。

2.jpeg

图2:基于大模型的边云协同物联网感知系统架构

终身学习训练模块用于解决数据漂移问题。当环境变化导致数据分布发生变化时,原来训练的 RFNet 模型在面对数据分布变化后的样本时推理准确率会出现大幅度下降。终身学习算法通过在新分布的数据上持续训练 RFNet 模型从而提高 RFNet 模型的推理准确率,使之适应数据漂移现象。在终身学习训练部分,我们将上传到云端的难例样本及其云端推理结果存储在 replay buffer 中。当 replay buffer 中样本超过一定数量时,我们基于 replay buffer 中的难例样本对 RFNet 模型进行再训练,从而提高边缘模型应对数据漂移问题的能力。训练后的 RFNet 模型会被下载到边缘节点更新边缘端的 RFNet 模型。

基于大模型的边云协同物联网感知系统总体架构设计如图2所示,边云协同物联网感知系统包括云边协同推理和终身学习训练两部分。上述系统架构的优势在于:

  • 通过难例样本挖掘,大部分简单样本在边缘节点由 RFNet 模型直接得到推理结果,保证系统可以满足实时性要求。

  • 少部分 corner case、难例样本上传云端由大模型 SAM 推理得到更完善的推理结果,提高系统推理平均准确率。

  • 通过终身学习训练,边缘端 RFNet 模型可以在大模型 SAM 的监督下从难例样本中学习到一定经验,从而适应边缘端复杂多变的环境。

KubeEdge 是目前主流的开源边缘计算平台,其子项目 KubeEdge-Ianvs,作为业界首个分布式协同 AI 基准测试平台,基于 KubeEdge-Sedna 为算法及服务开发者提供全场景可扩展的分布式协同 AI 基准测试,以研发、衡量和优化分布式协同 AI 系统。我们基于 Kubeedge-Ianvs 实现了该系统架构,具体在 Ianvs 中实现的模块如图3所示。

3.jpeg

图3:在KubeEdge-Ianvs中实现模块

我们将难例样本挖掘算法填补在 Ianvs 的未知样本识别模块,其将样本分为难例样本(未知样本)和简单样本(已知样本)。在云端节点基于大模型 SAM 对难例样本的推理在未知样本推理模块中实现,在边缘端基于 RFNet 对简单样本的推理在已知样本推理模块中实现。对于终身学习训练的部分,我们在已知和未知任务处理模块实现,这部分我们延用了 Ianvs 默认的终身学习训练配置。

2.2 案例分析

我们采用在华为深圳工业园区由智能机械狗采集的语义分割机器人数据集 Cloud-Robotics 作为本项目的测试 benchmark。Cloud-Robotics 是首个在真实世界场景中由机械狗实地收集的数据集,因此数据集中的图片都是以机械狗的视角拍摄的,拍摄角度相比 Cityscapes 等自动驾驶语义分割数据集更低,也更贴近实际机器人应用(递送、巡检)。数据集官网链接:https://kubeedge-ianvs.github.io/

图4展示了在 Cloud-Robotics 数据集中RFNet模型和SAM模型部分的推理结果,不难看出 RFNet 在处理部分 corner case 比如反光(第三排图片)时效果较差,将建筑物识别为天空。然而通过大模型 SAM 推理得到分割完善的 mask 后基于像素级的投票成果将错误识别为天空的部分正确识别为了建筑物。

4.png

图4:部分实验结果展示

我们在[Cloud-Robotics][2] 数据集上进行了实验,为了进一步对比 SAM+RFNet 效果,我们额外选取了 Huggingface 发布的在cityscapes数据集上预训练的[Segformer][3] 模型作为基模型进行测试,测试结果如下表:

640.png

上表展示了不同算法在 Cloud-Robotics 数据集上对不同类别物体的识别准确率(IoU)。我们将识别物体根据其在数据集中出现的频率分为常见类别和稀有类别两种。从结果中可以看出对于常见类别的 Road、Sidewalk 和 builiding 类物体的识别上,SAM+RFNet 云边协同和 RFNet 效果提升仅有1%左右,这是因为对于识别常见类别的简单任务来说,RFNet 模型的准确率已经很高了,再额外加入 SAM 大模型也没有太多提升空间。而对于园区中出现较少稀有类别的 Car、Terrain 类物体, SAM+RFNet 相比 RFNet 提升平均超过20%以上,这是因为对于识别稀有类别的难例任务来说,RFNet 模型处理效果不好,而 SAM 模型更擅长处理。总体来说, SAM+RFNet 云边协同相比只用RFNet准确率提升了8%以上,证明了我们提出的基于大模型的边云协同物联网感知系统的有效性。

同时可以看出使用 Segformer 作为基模型的结果则相差很多,这主要是因为 Segformer 是在 cityscapes 数据集上预训练的,而 Cloud-Robotics 数据集中存在 cityscapes 数据集中没有的标签,同时数据集的分布差别较大(Cloud-Robotics 面向半封闭工业园区,cityscapes 面向开放世界)导致了 Segformer 推理结果较差。在Cityscapes 数据集上预训练的 Segformer 模型在 Car 类物体识别上准确率较高,这主要是因为 Cityscapes 数据集是面向开放世界的语义分割数据集,其中 car 类物体出现频率更高。下图展示了 RFNet 和 Segformer 的部分推理结果对比。

5.png

图5:不同模型效果展示

如图5所示,可以看出因为 Segformer 在分类时就将整个天空都识别为了建筑,因此即便 SAM 推理的结果中将天空正确切割出来了,最后 SAM+Segformer 的推理结果中天空仍然是分类错误的。

这告诉我们 SAM 大模型不能解决一切问题,最终推理结果还是依赖于使用的小模型推理标签准确。因此即便在使用大模型进行云边协同推理时,对边缘端小模型进行终身学习更新仍然是必要的。

三、基于KubeEdge-lanvs的使用教程

在这章中我们通过运行 Ianvs 终身学习的 cloud-robotics 样例向大家讲解基于 KubeEdge-Ianvs 实现大模型边云协同物联网感知的基本流程。Ianvs 安装流程以及终身学习更详细的介绍可以参考:Ianvs-lifelong-learning-tutorial[4]。

首先我们需要配置好 Cloud-Robotics 的数据集,先创建数据集的文件夹,注意如果你把数据集放到别的位置,本教程中的部分路径配置也要一并修改。

mkdir /data
cd /data
mkdir datasets
cd datasets
download datasets in https://kubeedge-ianvs.github.io/download.html

配置好数据集后,我们可以准备运行示例代码了。Cloud-Robotics 示例运行的代码放在/ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation下,我们首先要配置 python 路径(这里如果 Ianvs 安装位置不一样的话需要更改路径):

export PYTHONPATH=$PYTHONPATH:/ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation/testalgorithms/rfnet/RFNet

然后我们需要去安装 SAM 大模型:

cd /ianvs/project
git clone https://github.com/facebookresearch/segment-anything.git
cd segment-anything 
python -m pip install -e .

下载模型参数:

wget https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth

为了保存模型推理结果,我们需要按照以下指令安装 mmcv 和 mmdetection:

python -m pip install https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/mmcv-2.0.0-cp39-cp39-manylinux1_x86_64.whl
cd /ianvs/project
git clone https://github.com/hsj576/mmdetection.git
cd mmdetection
python -m pip install -v -e .

在机器配置性能不足以运行 SAM 模型的情况下,我们为 Cloud-Robotics 数据集中的所有 SAM 推理结果准备了一个缓存。你可以从这个链接 [5]下载缓存,并把缓存文件放在“/ianvs/project/”中:

cp cache.pickle /ianvs/project

通过使用缓存,可以在不安装 SAM 模型的情况下模拟基于大模型的边云协同推理。

除此之外,我们还在这个链接 [6]中提供了一个预训练的 RFNet 模型,如果你不想从零开始训练 RFNet 模型,可以使用我们预训练的 RFNet 模型:

cd /ianvs/project
mkdir pretrain
cp pretrain_model.pth /ianvs/project/pretrain
in /ianvs/project/ianvs/examples/robot/lifelong_learning_bench/semantic-segmentation/testalgorithms/rfnet/RFNet/utils/args.py set self.resume = '/ianvs/project/pretrain/pretrain_model.pth'

上述所有配置完成后,执行下面指令即可进行基于 SAM 大模型的边云协同推理:

cd /ianvs/project/ianvs
ianvs -f examples/robot/lifelong_learning_bench/semantic-segmentation/benchmarkingjob-sam.yaml

相关资料:

[1] SSA(Semantic Segment Anything):https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_capacity_plugin.mdhttps://github.com/fudan-zvg/Semantic-Segment-Anything

[2] Cloud-Robotics:https://kubeedge-ianvs.github.io/

[3] Segformer:https://huggingface.co/docs/transformers/model_doc/segformer

[4] Ianvs-lifelong-learning-tutorial:https://ianvs.readthedocs.io/en/latest/

[5] https://pan.baidu.com/s/1oGGBa8TjZn0ccbznQsl48g?pwd=wpp1

[6] https://pan.baidu.com/s/1h8JnUgr1hfx5QnaFLLkMAg?pwd=jts4

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:KubeEdge,SAM,模型,样本,RFNet,难例,边云,推理,硬核
From: https://www.cnblogs.com/huaweiyun/p/18252264

相关文章

  • 硬核!使用jsp+servlet+mysql从0搭建图书管理系统(一)
    一、写在开头1.本项目使用IDLE搭建,使用的数据库是mysql8.02.项目前端代码样式可以自行编写,本文注重的是servlet的逻辑处理3.项目使用的数据库和表如下1)bookinfo表2)borrwos(借阅表)3)managers(管理员表)4)readers(读者表)需要表的小伙伴可以根据对应字段自行创建二、......
  • 【耗时8个小时整理】硬核集成算法,学习完你会哭着感谢自己!
    纯 干 货目录纯 干 货1、Bagging(自举汇聚法)2、Boosting(提升法)3、Stacking(堆叠法)4、Voting(投票法)5、深度学习集成今天给大家带来的是「集成算法」的全部整理!其实今儿的一些内容比较好理解~集成算法(EnsembleLearning)是一种将多个弱学习器......
  • 鹅厂硬核的 【防御性编程实践】总结
    防御性编程,就是通过技术手段,把错误扼杀在萌芽阶段,或者把错误直观的暴露给开发者快速修复错误继续聚焦于业务。七年前,我们开始在项目中践行了全面的防御性编程,从多年的坚持下来看,稇载而归。今天翻出了以前总结的一篇文章,内容感觉还挺硬核的,很多做法非常有效,并且可以照搬,于是发出......
  • 如何选择一个最强大模型-看最硬核排名了!
    ChatbotArena由伯克利大学主导团队LMSYSOrg发布了一个针对大语言模型的基准平台ChatbotArena。该平台采用匿名、随机的方式让不同的大模型产品进行对抗评测,基于国际象棋等竞技游戏中广泛使用的埃洛等级分系统,通过用户投票产生,系统每次会随机选择两个不同的大模型机器人和......
  • KubeEdge v1.17.0发布!数据处理能力与易用性全面提升
    本文分享自华为云社区《KubeEdgev1.17.0发布!数据处理能力与易用性全面提升》 ,作者:云容器大未来。KubeEdge社区v1.17.0版本正式发布。新版本为边缘节点和设备带来了更多的新能力,同时持续在易用性上做了提升。KubeEdgev1.17.0新增特性:支持边缘Pods使用In......
  • Java架构核心基础知识硬核整理,赶快收藏起来吧
    Java架构核心基础知识硬核整理,赶快收藏起来吧Java架构核心基础lecture:波哥一、数据结构和算法1.数据结构  数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者......
  • 喜讯|我司再次获得国家发明专利,硬核科技研发成果呈加速度增长
    热烈祝贺璞华软件成功获得国家发明专利我司自主研发成果《一种工伤案件裁决书的生成方法及装置》(专利号:ZL201911170975.8)成功获得国家发明专利,2024年4月成功获得专利证书。发明人:高志凯;杨德隽发明专利介绍本专利采用自主创新的AI智能匹配算法,结合大数据分析技术,为工伤案件......
  • 使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态
    作者:朱亚光,之江实验室工程师,云原生/开源爱好者。KubeSphere边缘节点的可观测性在边缘计算场景下,KubeSphere基于KubeEdge实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应用交付、运维、管控的需求。根据KubeSphere的支持矩阵,只有1.23......
  • 原生Android遇冷,鸿蒙开发升温,但Framework“硬核”开发者仍受追捧
    前言各位程序员盆友们,又到了一年的跳槽季,今年移动开发领域的就业形势如何,你们是不是心里有点小忐忑?别急,且听我来分析一二。原生Android开发这个曾经的“香饽饽”,如今似乎遭遇了寒流。中小企业在经济压力下,对原生客户端开发的需求有所减弱,再加上跨平台技术的兴起,比如React......
  • Qt模拟面试(超硬核)
    1.请简要介绍一下你的Qt开发经验。建议:诚实地描述你的Qt经验,包括你使用过的Qt版本、开发过的项目类型、遇到的挑战以及如何解决它们。假如你没有开发经验,可以提供一些关于Qt开发的一般信息和常见的经验分享。Qt是一个跨平台的应用程序开发框架,它提供了丰富的工具......