Sam2适配昇腾开源验证任务心得

举报
gll 发表于 2024/11/22 12:15:48 2024/11/22
【摘要】 Sam2适配Ascend NPU开源验证任务心得首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437838,主要目的是将 Sam2 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,也就是说验证sam2能不能在 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器中运行。

Sam2适配昇腾开源验证任务心得

首先看了一下任务计划书:https://bbs.huaweicloud.com/blogs/437838主要目的是 Sam2 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保其在这些硬件平台上的高效运行,也就是说验证sam2能不能在 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器中运行。

开发过程

明确目的后开始熟悉模型,sam2github网址:https://github.com/facebookresearch/segment-anything-2

SAM 2 需要先安装后再使用。使用命令安装:

git clone https://github.com/facebookresearch/sam2.git && cd sam2

pip install -e .

下载 Checkpoints所有模型检查点都可以通过运行以下命令来下载:

cd checkpoints && \

./download_ckpts.sh && \

cd ..

安装依赖包:

以下三个包版本必须按照要求来:python>=3.10 torch>=2.3.1 torchvision>=0.18.1

在鲲鹏cpu和欧拉操作系统下验证推理

(1)安装依赖包

先在GitHub上拉取项目到本地,按照要求安装所需依赖包,使用pip install -e .,将会下载项目所需的依赖包。

下载安装cpu版本的pytorch命令:

conda安装:

conda install pytorch torchvision cpuonly -c pytorch

 

(2)运行推理脚本

推理脚本为我自己创建的脚本,需在gitcode项目地址(https://gitcode.com/m0_56308334/sam2/)中下载。

运行:Python3 predict_image.py运行时可能提示缺少某些库,按照提示安装即可。

(3)推理代码中需要修改的部分:

修改predict_image.py,将模型地址及图像地址修改为您本地的路径。

NPU推理模型

(1)安装依赖包

使用NPU推理模型需要安装pytorchCANNtorch_npu

先安装CANN,参考:https://www.hiascend.com/zh/developer/download/community/result?module=cann

torch_npu的安装参考:https://github.com/Ascend/pytorch/blob/master/README.zh.md

下载模型和之前在cpu上步骤相同。

(2)获取代码:

首先下载GitHub上的项目代码(git clone https://github.com/facebookresearch/sam2.git)。

sam2npu上推理的代码官方没有直接给出,我参考:https://gitee.com/guanhaoyu621/ailia-models/tree/master/image_segmentation/segment-anything-2,自己创建空白python代码文件,复制sam_image_predictor.pysegment-anything-2.py文件,在此基础上修改代码至运行成功,代码已提交至gitcode项目(https://gitcode.com/m0_56308334/sam2/overview)。之后获取gitcode项目中的代码,参考此项目说明运行。

注:numpy版本建议安装1.23左右的,不要安装2.0及以上的,会有兼容问题。

(3)涉及修改的部分

将从gitcode下载的segment-anything-2.py打开,修改以下图片的地址,修改为您存放util目录的路径。

修改segment-anythong-2.PNG

运行命令修改,修改输入图片的路径为您保存的图片路径,修改图片的输出路径为您指定的。

运行命令修改.PNG


1       验收材料

1.1       交付件清单

  • DEMO仓库地址: https://gitcode.com/m0_56308334/sam2/overview
  • 博客的地址: https://bbs.huaweicloud.com/blogs/440181

 

验收细则

评分说明

是否为验收必选项

结果(通过/不通过)

功能开发:完成与华为三大根技术生态(鲲鹏云、昇腾云、鸿蒙)适配的功能开发

基于鲲鹏、昇腾和Euler系统完成验证

 

代码质量:适配华为三大根技术生态的代码质量经过工具检测达标

推送给开源社区的代码符合开源社区关于代码风格、功能、自动化测试等要求。

 

提供相关文档,比如部署文档、使用文档、配置文档等

根据社区要求,完善相关的开发指南和部署指导

 

合入到开源项目主仓:代码推送上游社区

代码合并到当前主干分支。

 

Deomo设计&开发:完成功能演示Demo的开发

提供DEMO仓库地址。

 

Demo部署&验证:完成功能演示DEMO基于华为云鲲鹏环境的部署和功能验证

提供DEMO部署验证结果的关键截图进行举证。提供DEMO运行环境和资源的截图举证。

 

发布博客:发布博客介绍适配心得。

提供博客的地址。

 

制作单机版无高危开源镜像。

上架云商店。

 

单机版镜像上架时支持模板部署。

 

 

制作集群版无高危开源镜像

上架云商店。

 

集群版镜像上架时支持模板部署

 

 

2       资源清单

产品名称

CPU架构

实例类型

公共镜像

镜像版本

备注

弹性云服务器

鲲鹏计算

Kunpeng-920

鲲鹏通用计算增强型kc1

Huawei Cloud EulerOS

Huawei Cloud EulerOS 2.0 Arm 64bit sdi5 for ECS BareMetal With Uniagent(150GiB)

推荐

 

 

产品名称

NPU架构

CPU架构

操作系统

云堡垒机

Ascend 910B3

 

鲲鹏计算

Kunpeng-920

Huawei Cloud EulerOS 2.0 (aarch64)

 

 

3       测试结果

3.1       Cpu推理

运行脚本后输出:

cpu运行.PNG

3.2       Npu推理

运行程序前

运行前.PNG

运行程序后

运行后.PNG

运行命令:

运行.PNG

运行成功后输出:

运行成功.JPG

这个分割任务是分割图像中的汽车,特别是汽车的车窗(带有星星标志的部分),模型根据提供的正样本点来识别并分割出感兴趣的区域,图片分割结果:

结果.png


 

 

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。