在开发者空间使用YOLOV9_for_PyTorch实现物体检测

举报
chenyunliang 发表于 2025/12/13 10:48:09 2025/12/13
【摘要】 本文详细介绍了如何在华为云开发者空间的 AI Notebook 平台上,利用 NPU 910B 环境高效部署并运行 YOLOv9_for_PyTorch 目标检测模型。整个流程分为五个关键步骤:环境初始化、依赖安装、模型权重准备、测试数据准备和推理执行,最终实现了对测试图片的实时目标检测并可视化结果。

开启Notebook

开发平台-AI Notebook-选择“NPU环境”,点击“立即启动”

预装镜像:euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook

关联模型:YOLOV9_for_PyTorch


1.png

等待环境启动完成点击“查看Notebook”,进入Notebook开发环境

点击“+”,选择“笔记本”


2.png

执行代码

# 安装依赖
!pip install -r /mnt/workspace/model/YOLOV9_for_PyTorch/requirements.txt


步骤 1:初始化环境与路径

首先,我们需要进入代码目录,并确认 NPU 是否正常工作。

import os
import torch
import torch_npu  # 关键:导入华为 NPU 适配库
from IPython.display import Image, display

# 1. 定位到您的 YOLOv9 项目路径
# 根据您提供的 ls 信息,这是绝对路径
project_path = "/mnt/workspace/model/YOLOV9_for_PyTorch"

if os.path.exists(project_path):
    os.chdir(project_path)
    print(f"✅ 已切换工作目录至: {os.getcwd()}")
else:
    print(f"❌ 路径不存在,请检查: {project_path}")

# 2. 检查 NPU 状态
# 910B 应该显示为可用
if torch.npu.is_available():
    npu_name = torch.npu.get_device_name(0)
    print(f"🚀 NPU 状态: 正常 | 设备型号: {npu_name}")
    device_arg = "npu" # 用于后续命令的参数
else:
    print("⚠️ 未检测到 NPU,将使用 CPU(速度较慢)")
    device_arg = "cpu"


运行结果:


3.png





步骤 2:准备模型权重

checkpoints 目录可能为空。我们需要下载官方的 YOLOv9 权重文件(例如 yolov9-c.pt)来进行测试。

# 检查是否有权重文件,如果没有则下载
weights_path = "checkpoints/yolov9-c-converted.pt"

if not os.path.exists(weights_path):
    print("📥 正在下载 yolov9-c.pt 权重文件...")
    # 使用 wget 下载官方权重到 checkpoints 文件夹
    !wget -P checkpoints https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt
    print("✅ 下载完成")
else:
    print(f"✅ 权重文件已存在: {weights_path}")


运行结果:


4.png




步骤 3:准备测试图片

我们需要一张图片来测试。YOLO 项目通常在 data/images 下自带图片(如 horses.jpg 或 bus.jpg)。如果没有,我们手动下载一张。

test_image = "data/images/horses.jpeg"

# 如果自带图片不存在,下载一张测试图
if not os.path.exists(test_image):
    if not os.path.exists("data/images"):
        os.makedirs("data/images")
    !wget -O {test_image} https://github.com/WongKinYiu/yolov9/raw/main/data/images/horses.jpg
    print("📥 已下载测试图片")

print("👀 原始图片预览:")
display(Image(filename=test_image, width=400))

运行结果:


5.png




步骤 4:开始推理

执行下面的代码开始推理

# 运行检测脚本
# --weights: 权重文件路径
# --source: 测试图片路径
# --device: 指定使用 'npu' (如果是 0 号设备通常也可以写 0)
# --project: 结果保存的主目录
# --name: 结果保存的子目录

print(f"🔥 开始在 {device_arg} 上进行推理...")

!python detect.py \
    --weights checkpoints/yolov9-c-converted.pt \
    --source data/images/horses.jpeg \
    --device 0 \
    --project runs/detect \
    --name exp_demo \
    --exist-ok

print("✅ 推理结束!")

运行结果:


6.png





步骤 5:查看结果

推理完成后,YOLO 会把画好框的

图片保存在 runs/detect/exp_demo 目录下。我们来显示它。

import glob

# 查找生成的图片(文件名可能不变)
# runs/detect/exp_demo/horses.jpg
result_image_path = f"runs/detect/exp_demo/{os.path.basename(test_image)}"

if os.path.exists(result_image_path):
    print("🎉 检测结果如下 (YOLOv9 + NPU 910B):")
    display(Image(filename=result_image_path, width=600))
else:
    print("⚠️ 未找到结果图片,请检查步骤 4 的输出日志是否有报错。")

运行结果:


7.png


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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