Jetson Nano实战:CSI相机配置与YOLOv物体检测全流程指南

Jetson Nano实战:CSI相机配置与YOLOv物体检测全流程指南

一、引言

Jetson Nano是NVIDIA推出的嵌入式AI开发套件,凭借其低功耗、高性能和丰富的接口,成为计算机视觉与边缘AI开发的理想平台。本文将围绕Jetson Nano套件,详细介绍如何配置CSI相机并运行YOLOv物体检测模型,帮助开发者快速实现从硬件搭建到算法部署的全流程。

二、硬件准备与系统初始化

1. Jetson Nano套件组成

Jetson Nano开发者套件包含以下核心组件:

  • Jetson Nano模块(4GB/2GB内存版本)
  • 电源适配器(5V/4A)
  • 散热器与风扇
  • 40针GPIO扩展头
  • CSI摄像头接口(支持MIPI CSI-2协议)

2. 系统安装与初始化

推荐使用JetPack SDK(NVIDIA官方SDK)进行系统安装,步骤如下:

  1. 下载JetPack镜像(L4T版本,如R32.x或R35.x)
  2. 使用balenaEtcher等工具将镜像写入MicroSD卡(建议16GB以上)
  3. 插入SD卡并启动Jetson Nano,完成初始设置(语言、时区、用户密码等)
  4. 通过sudo apt update && sudo apt upgrade更新系统包

关键点

  • 选择与CSI相机兼容的L4T版本(如R32.7.1支持多数Raspberry Pi Camera)
  • 启用硬件加速:在/etc/nv_tegra_release中确认CUDA和TensorRT版本

三、CSI相机配置与测试

1. CSI相机类型与兼容性

Jetson Nano的CSI接口支持以下常见摄像头:

  • Raspberry Pi Camera V2(IMX219传感器,8MP)
  • Lepton FLIR热成像相机(需额外驱动)
  • Arducam系列多镜头模组

兼容性验证
通过ls /dev/video*检查设备节点,若出现/dev/video0则表示相机被识别。

2. 安装GStreamer与V4L2工具

CSI相机通常通过V4L2(Video4Linux2)驱动工作,需安装以下工具:

  1. sudo apt install v4l-utils gstreamer1.0-tools gstreamer1.0-plugins-bad gstreamer1.0-plugins-good

3. 相机参数配置

使用v4l2-ctl调整分辨率、帧率等参数:

  1. # 列出支持的格式与分辨率
  2. v4l2-ctl --list-formats-ext
  3. # 设置分辨率(如1280x720)
  4. v4l2-ctl --set-fmt-video=width=1280,height=720,pixelformat=NV12
  5. # 设置帧率(如30FPS)
  6. v4l2-ctl --set-parm=30

4. 实时预览测试

通过GStreamer管道验证相机流:

  1. gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! videoconvert ! autovideosink

若画面正常显示,则CSI配置成功。

四、YOLOv物体检测部署

1. 环境准备

安装YOLOv依赖库(PyTorch/TensorRT):

  1. # 安装PyTorch(官方预编译版本)
  2. wget https://nvidia.jetson.com/assets/files/torch-1.10.0-cp36-cp36m-linux_aarch64.whl
  3. pip3 install torch-1.10.0-cp36-cp36m-linux_aarch64.whl
  4. # 安装TensorRT(通过JetPack自动安装)
  5. sudo apt install tensorrt

2. YOLOv模型选择与转换

推荐使用YOLOv5YOLOv8(Ultralytics官方实现):

  1. 从GitHub克隆代码:
    1. git clone https://github.com/ultralytics/ultralytics.git
    2. cd ultralytics
    3. pip install -r requirements.txt
  2. 下载预训练权重(如yolov5s.pt
  3. 转换为TensorRT引擎(优化推理速度):
    1. from ultralytics.yolo.engine.exporter import export_model
    2. export_model(model='yolov5s.pt', format='engine') # 生成yolov5s.engine

3. 实时检测脚本

编写Python脚本调用CSI相机并运行YOLOv检测:

  1. import cv2
  2. import torch
  3. from ultralytics.yolo.v8.detect import DetectionPredictor
  4. # 初始化YOLOv模型
  5. model = DetectionPredictor(model='yolov5s.engine') # 或.pt文件
  6. # 打开CSI相机
  7. cap = cv2.VideoCapture(0, cv2.CAP_V4L2)
  8. cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
  9. cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
  10. while True:
  11. ret, frame = cap.read()
  12. if not ret:
  13. break
  14. # 推理
  15. results = model(frame)
  16. # 绘制检测框
  17. annotated_frame = results[0].plot()
  18. cv2.imshow('YOLOv Detection', annotated_frame)
  19. if cv2.waitKey(1) & 0xFF == ord('q'):
  20. break
  21. cap.release()
  22. cv2.destroyAllWindows()

4. 性能优化技巧

  • 分辨率调整:降低输入分辨率(如320x320)以提升FPS
  • 半精度推理:在TensorRT引擎中启用FP16模式
  • 多线程处理:使用cv2.VideoCapture的异步模式或分离采集/推理线程

五、常见问题与解决方案

1. CSI相机无法识别

  • 原因:驱动未加载或电源不足
  • 解决
    1. sudo modprobe bcm2835-v4l2 # 加载RPi Camera驱动
    2. dmesg | grep video # 检查内核日志

2. YOLOv推理速度慢

  • 原因:未启用TensorRT或模型过大
  • 解决
    • 使用yolov5s.trt(TensorRT优化版)
    • 量化模型至INT8(需校准数据集)

3. 系统过热

  • 原因:长时间高负载运行
  • 解决
    • 安装主动散热风扇
    • 限制CPU/GPU频率:
      1. sudo nvpmodel -m 0 # 设置为MAX-N模式(默认)
      2. sudo jetson_clocks # 最大化性能

六、总结与扩展应用

通过本文步骤,开发者可在Jetson Nano上实现:

  1. CSI相机无缝集成:支持多种MIPI摄像头
  2. 高性能YOLOv检测:帧率达10+FPS(640x480输入)
  3. 低功耗边缘部署:适合机器人、智能监控等场景

扩展方向

  • 多摄像头同步检测
  • 结合ROS实现机器人视觉导航
  • 部署自定义训练的YOLOv模型(如工业缺陷检测)

Jetson Nano套件为AIoT开发提供了高性价比的解决方案,掌握CSI相机与YOLOv的集成技术,将极大提升项目开发效率。