YOLO目标检测代码移植到服务器、Jetson Nano或树莓派上 并进行实时检测 速度等性能的优化

YOLOv7移植经验分享 YOLOv7在5 FPS到160 FPS范围内的速度和准确度都超过了所有已知的目标检测器,并且在GPU V100上30 FPS或更高的所有已知实时目标检测器中,具有最高的准确度56.8% AP。此外,YOLOv7基于MS COCO数据集上从零开始训练,未使用任何其他数据集或预训练的权重。 阅读详情

将YOLO目标检测代码移植到Jetson Nano或树莓派上,主要分为以下几个步骤:

  1. 硬件与软件准备:确保你有合适的硬件设备(如Jetson Nano或树莓派),并安装相应的操作系统(如JetPack for Jetson Nano或Raspberry Pi OS for 树莓派)。
  2. 环境搭建:在设备上安装Python、pip等基础工具,创建虚拟环境(可选),并安装YOLO所需的依赖库,如OpenCV、NumPy、PyTorch或TensorFlow。
  3. 下载YOLO模型和权重:从YOLO的官方GitHub仓库克隆代码,并下载预训练的权重文件。
  4. 运行检测脚本:使用YOLO提供的检测脚本,指定权重文件、图像尺寸、置信度阈值和数据源(如摄像头或图像文件),运行目标检测。
  5. 优化性能:根据设备类型,启用GPU加速(如Jetson Nano的CUDA或树莓派的OpenCV GPU加速),并选择合适的轻量级YOLO模型以提高性能。

通过这些步骤,你可以在Jetson Nano或树莓派上成功部署YOLO目标检测系统,实现实时的目标识别和分析。

  边缘计算可以让这些小型、低功耗的设备具备强大的目标检测能力,适用于各种边缘计算场景。以下是一个详细的步骤指南,帮助你完成移植过程。

一、准备工作

软件代码准备 首先以行人监测为例子说明

为了实现实时获取视频流并使用 YOLO 目标检测算法监测行人,我们可以使用 Python 和 OpenCV 库。以下是一个完整的示例代码,展示了如何从摄像头获取实时视频流,并使用 YOLOv5 模型检测行人。

环境准备

  1. 安装依赖库

     

    bash

    pip install opencv-python numpy torch torchvision
  2. 克隆 YOLOv5 仓库并安装依赖

     

    bash

    git clone https://github.com/ultralytics/yolov5.git
    cd yolov5
    pip install -r requirements.txt
  3. 下载预训练权重

     

    bash

    wget https://github.com/ultralytics/yolov5/releases/download/v1.0/yolov5s.pt

代码实现

 

python

import cv2
import torch
from yolov5.models.experimental import attempt_load
from yolov5.utils.datasets import letterbox
from yolov5.utils.general import non_max_suppression, scale_coords
from yolov5.utils.torch_utils import select_device

# 加载 YOLOv5 模型
weights = 'yolov5s.pt'  # 模型权重文件
device = select_device('')  # 选择设备,'' 表示自动选择
model = attempt_load(weights, map_location=device)  # 加载模型
stride = int(model.stride.max())  # 模型的步长

# 设置摄像头
cap = cv2.VideoCapture(0)  # 0 表示默认摄像头

# 循环读取视频帧
while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 图像预处理
    img = letterbox(frame, new_shape=640, stride=stride)[0]
    img = img.transpose((2, 0, 1))[::-1]  # HWC to CHW, BGR to RGB
    img = np.ascontiguousarray(img)
    img = torch.from_numpy(img).to(device)
    img = img.float()  # uint8 to fp16/32
    img /= 255.0  # 图像归一化
    if img.ndimension() == 3:
        img = img.unsqueeze(0)

    # 模型推理
    pred = model(img, augment=False, visualize=False)[0]

    # 应用 NMS
    pred = non_max_suppression(pred, 0.25, 0.45, classes=None, agnostic=False)

    # 处理检测结果
    for i, det in enumerate(pred):  # 遍历每个检测结果
        s = ''
        s += '%gx%g ' % img.shape[2:]  # 打印图像尺寸
        gn = torch.tensor(frame.shape)[[1, 0, 1, 0]]  # 归一化增益

        if len(det):
            # 将坐标从 [0, 1] 转换为像素坐标
            det[:, :4] = scale_coords(img.shape[2:], det[:, :4], frame.shape).round()

            # 遍历每个检测到的目标
            for *xyxy, conf, cls in reversed(det):
                if int(cls) == 0:  # 0 表示行人
                    x1, y1, x2, y2 = map(int, xyxy)  # 坐标转换为整数
                    label = f'Pedestrian {conf:.2f}'
                    cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
                    cv2.putText(frame, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)

    # 显示结果
    cv2.imshow('Pedestrian Detection', frame)

    # 按 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放摄像头资源
cap.release()
cv2.destroyAllWindows()

代码说明

  1. 加载模型:使用 attempt_load 函数加载预训练的 YOLOv5 模型。
  2. 设置摄像头:使用 cv2.VideoCapture(0) 获取默认摄像头的视频流。
  3. 图像预处理:使用 letterbox 函数将图像调整为模型输入的尺寸,并进行归一化处理。
  4. 模型推理:将预处理后的图像输入模型进行推理,获取检测结果。
  5. NMS 处理:使用 non_max_suppression 函数进行非极大值抑制,去除重叠的检测框。
  6. 处理检测结果:遍历检测结果,筛选出类别为行人的检测框,并在图像上绘制矩形框和标签。
  7. 显示结果:使用 cv2.imshow 显示处理后的图像。
  8. 退出条件:按 'q' 键退出循环,释放摄像头资源并关闭窗口

(一)硬件准备

  1. Jetson Nano:
    • NVIDIA Jetson Nano 开发者套件
    • 电源适配器
    • 微型 HDMI 到 HDMI 转换器(如果需要连接显示器)
    • 键盘和鼠标(如果需要连接显示器)
    • 网络连接(有线或无线)
  2. 树莓派:
    • 树莓派 4B(推荐)
    • 电源适配器
    • 微型 HDMI 到 HDMI 转换器(如果需要连接显示器)
    • 键盘和鼠标(如果需要连接显示器)
    • 网络连接(有线或无线)

(二)软件准备

  1. 操作系统:
    • Jetson Nano:推荐使用 JetPack 安装的 Ubuntu 18.04 或 20.04
    • 树莓派:推荐使用 Raspberry Pi OS(基于 Debian 的操作系统)
  2. 开发工具:
    • Python 3
    • pip(Python 包管理器)
    • Git(版本控制工具)
  3. 依赖库:
    • OpenCV
    • NumPy
    • PyTorch 或 TensorFlow(根据 YOLO 版本选择)
    • CUDA(Jetson Nano 需要)

二、环境搭建

(一)Jetson Nano

  1. 安装 JetPack

    • 下载并安装 JetPack:NVIDIA JetPack
    • 通过 JetPack 安装 Ubuntu 18.04 或 20.04 操作系统
    • 安装 CUDA 和 cuDNN
  2. 安装 Python 和依赖库

     

    bash

    sudo apt update
    sudo apt install python3 python3-pip python3-virtualenv
  3. 创建虚拟环境(可选)

     

    bash

    python3 -m virtualenv venv
    source venv/bin/activate
  4. 安装 OpenCV 和 NumPy

     

    bash

    pip install opencv-python numpy
  5. 安装 PyTorch(如果使用 PyTorch 版本的 YOLO)

     

    bash

    pip install torch torchvision

(二)树莓派

  1. 安装 Raspberry Pi OS

    • 下载并安装 Raspberry Pi OS:Raspberry Pi OS
    • 通过 Raspberry Pi Imager 工具将 OS 写入 SD 卡
  2. 安装 Python 和依赖库

     

    bash

    sudo apt update
    sudo apt install python3 python3-pip python3-virtualenv
  3. 创建虚拟环境(可选)

     

    bash

    python3 -m virtualenv venv
    source venv/bin/activate
  4. 安装 OpenCV 和 NumPy

     

    bash

    pip install opencv-python numpy
  5. 安装 TensorFlow(如果使用 TensorFlow 版本的 YOLO)

     

    bash

    pip install tensorflow

三、移植 YOLO 目标检测代码

(一)下载 YOLO 模型和权重

  1. 下载 YOLO 模型文件

  2. 克隆仓库

     

    bash

    git clone https://github.com/ultralytics/yolov5.git
    cd yolov5
  3. 下载预训练权重

     

    bash

    wget https://github.com/ultralytics/yolov5/releases/download/v1.0/yolov5s.pt

(二)运行 YOLO 目标检测

  1. 安装 YOLO 依赖库

     

    bash

    pip install -r requirements.txt
  2. 运行检测脚本

    • 使用摄像头进行实时检测:
       

      bash

      python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source 0
    • 使用图像文件进行检测:
       

      bash

      python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source path/to/image.jpg

(三)优化性能

  1. 使用 Jetson Nano 的 CUDA 加速

    • 确保 CUDA 环境配置正确,运行以下命令检查 CUDA 版本:
       

      bash

      nvcc --version
    • 在运行检测脚本时,确保使用 CUDA 加速:
       

      bash

      python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source 0 --device 0
  2. 使用树莓派的 GPU 加速

    • 安装 OpenCV 的 GPU 加速版本:
       

      bash

      pip install opencv-python-headless
    • 在运行检测脚本时,确保使用 GPU 加速:
       

      bash

      python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source 0 --device 0

四、代码示例

(一)Jetson Nano 上的 YOLOv5 检测

  1. 安装依赖库

     

    bash

    sudo apt update
    sudo apt install python3 python3-pip python3-virtualenv
    python3 -m virtualenv venv
    source venv/bin/activate
    pip install opencv-python numpy torch torchvision
  2. 克隆 YOLOv5 仓库

     

    bash

    git clone https://github.com/ultralytics/yolov5.git
    cd yolov5
    pip install -r requirements.txt
  3. 下载预训练权重

     

    bash

    wget https://github.com/ultralytics/yolov5/releases/download/v1.0/yolov5s.pt
  4. 运行检测脚本

     

    bash

    python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source 0 --device 0

(二)树莓派上的 YOLOv5 检测

  1. 安装依赖库

     

    bash

    sudo apt update
    sudo apt install python3 python3-pip python3-virtualenv
    python3 -m virtualenv venv
    source venv/bin/activate
    pip install opencv-python numpy tensorflow
  2. 克隆 YOLOv5 仓库

     

    bash

    git clone https://github.com/ultralytics/yolov5.git
    cd yolov5
    pip install -r requirements.txt
  3. 下载预训练权重

     

    bash

    wget https://github.com/ultralytics/yolov5/releases/download/v1.0/yolov5s.pt
  4. 运行检测脚本

     

    bash

    python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source 0 --device 0

五、常见问题及解决方案

(一)性能问题

  • Jetson Nano:确保 CUDA 环境配置正确,使用 --device 0 参数启用 GPU 加速。
  • 树莓派:安装 OpenCV 的 GPU 加速版本,使用 --device 0 参数启用 GPU 加速。

(二)内存不足问题

  • Jetson Nano:减少模型大小,使用轻量级模型(如 YOLOv5s 或 YOLOv8n)。
  • 树莓派:减少模型大小,使用轻量级模型(如 YOLOv5s 或 YOLOv8n),并确保系统有足够的内存。

(三)兼容性问题

  • Jetson Nano:确保所有依赖库与 CUDA 版本兼容。
  • 树莓派:确保所有依赖库与 Raspberry Pi OS 兼容。

将 YOLO 目标检测代码移植到服务器和边缘计算终端上

将 YOLO 目标检测代码移植到服务器和边缘计算终端上,可以分为以下几个主要步骤:

一、环境搭建
  1. 服务器环境搭建

    • 选择服务器:根据需求选择合适的云服务器或物理服务器。例如,可以使用 AutoDL 服务器。
    • 连接服务器:使用 SSH 连接服务器,推荐使用 PyCharm 专业版进行连接。
    • 安装依赖库:在服务器上安装 Python、pip 和其他必要的依赖库。可以使用以下命令:
       

      bash

      sudo apt update
      sudo apt install python3 python3-pip
      pip install -r requirements.txt
  2. 边缘计算终端环境搭建

    • 选择边缘计算终端:例如,使用 Jetson Nano 或树莓派。
    • 安装操作系统:为 Jetson Nano 安装 JetPack,为树莓派安装 Raspberry Pi OS。
    • 安装依赖库:安装 Python、pip 和其他必要的依赖库。可以使用以下命令:
       

      bash

      sudo apt update
      sudo apt install python3 python3-pip
      pip install opencv-python numpy torch torchvision
二、模型转换
  1. 将 YOLO 模型转换为 ONNX 格式

    • 下载 YOLO 模型:从官方 GitHub 仓库下载 YOLO 模型和权重文件。
    • 转换模型:使用 YOLO 提供的 export.py 脚本将模型转换为 ONNX 格式。例如,对于 YOLOv5:
       

      bash

      python export.py --weights yolov5s.pt --include onnx
  2. 将 ONNX 模型转换为边缘计算终端支持的格式

    • 使用 RKNN-Toolkit2:将 ONNX 模型转换为 RKNN 格式,适用于 RK3588 边缘盒子。
       

      bash

      ONNX_MODEL = 'yolov5s_relu.onnx'
      RKNN_MODEL = 'yolov5s_relu.rknn'
      IMG_PATH = './bus.jpg'
      DATASET = './dataset.txt'
      QUANTIZE_ON = True
      
      rknn = RKNN(verbose=True)
      print('--> Config model')
      rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')
      print('done')
      print('--> Loading model')
      ret = rknn.load_onnx(model=ONNX_MODEL)
      if ret != 0:
          print('Load model failed!')
          exit(ret)
      print('done')
      print('--> Building model')
      ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
      if ret != 0:
          print('Build model failed!')
          exit(ret)
      print('done')
      print('--> Export rknn model')
      ret = rknn.export_rknn(RKNN_MODEL)
      if ret != 0:
          print('Export rknn model failed!')
          exit(ret)
      print('done')
      rknn.release()
三、模型优化
  1. 模型量化:根据需要进行模型量化,以提高推理速度和减少模型大小。

     

    bash

    rknn = RKNN()
    if not os.path.exists(ONNX_MODEL):
        print('model not exist')
        exit(-1)
    print('--> Config model')
    rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], optimization_level=2, quantized_algorithm='mmse', target_platform='rk3588',)
    print('done')
    print('--> Loading model')
    ret = rknn.load_onnx(model=ONNX_MODEL)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')
    ret = rknn.hybrid_quantization_step1(dataset=DATASET)
    rknn.release()
  2. 精度分析:使用 accuracy_analysis 方法分析量化后的模型精度。

     

    bash

    print('--> Accuracy analysis')
    ret = rknn.accuracy_analysis(inputs=['./dog_bike_car_300x300.jpg'], output_dir=None)
    if ret != 0:
        print('Accuracy analysis failed!')
        exit(ret)
    print('done')
四、模型部署
  1. 服务器部署

    • 训练模型:在服务器上使用 YOLO 提供的 train.py 脚本进行模型训练。
       

      bash

      from ultralytics import YOLO
      import warnings
      warnings.filterwarnings("ignore")
      # 训练模型
      model = YOLO("yolov5s.pt")  # 模型文件
      model.train(data="data.yaml", epochs=200, batch=64, device=0)
    • 模型预测:使用训练好的模型进行预测。
       

      bash

      from ultralytics import YOLO
      import warnings
      warnings.filterwarnings("ignore")
      # 预测
      model = YOLO("runs/detect/train/weights/best.pt")  # 训练好的模型
      image_path = r'/path/to/image.jpg'
      model.predict(image_path, device=0, save=True)
  2. 边缘计算终端部署

    • 加载 RKNN 模型:在边缘计算终端上加载转换后的 RKNN 模型。
       

      bash

      from rknnlite.api import RKNNLite
      
      rknn_lite = RKNNLite()
      ret = rknn_lite.load_rknn('yolov5s_relu.rknn')
      if ret != 0:
          print('Load RKNN model failed')
          exit(ret)
    • 实时推理:使用摄像头获取实时视频流,并进行目标检测。
       

      python

      import cv2
      import numpy as np
      
      cap = cv2.VideoCapture(0)
      while True:
          ret, frame = cap.read()
          if not ret:
              break
      
          # 图像预处理
          img = cv2.resize(frame, (640, 640))
          img = img.astype(np.float32)
          img /= 255.0
          img = img.transpose((2, 0, 1))
          img = np.expand_dims(img, axis=0)
      
          # 模型推理
          outputs = rknn_lite.inference(inputs=[img])
      
          # 处理检测结果
          # ... (处理检测结果的代码)
      
          # 显示结果
          cv2.imshow('Pedestrian Detection', frame)
          if cv2.waitKey(1) & 0xFF == ord('q'):
              break
      
      cap.release()
      cv2.destroyAllWindows()

六、结语

通过以上步骤,你可以将 YOLO 目标检测代码成功移植到 Jetson Nano 或树莓派上,实现边缘计算中的实时目标检测。这些小型设备在资源受限的情况下,依然能够提供强大的

YOLO模型在边缘计算终端上的推理速度优化

在边缘计算终端上部署YOLO模型时,优化推理速度是关键。以下是一些有效的优化方法:

1. 模型量化

模型量化是将模型的权重和激活从浮点数转换为低精度格式(如INT8或FP16),以减少模型大小并提高推理速度。具体步骤如下:

  1. 正常训练模型:首先在不考虑量化的情况下训练YOLO模型。
  2. 应用训练后量化(PTQ):训练完成后,使用PyTorch的torch.quantization模块将模型转换为量化版本。
  3. 评估量化后的模型:评估量化后的模型性能,测量模型体积和推理时间的减少。

例如,使用PyTorch进行模型量化:

 

python

import torch
import torch.quantization

# 假设模型名称为model,准备进行量化
model.qconfig = torch.quantization.QConfig(
    activation=torch.quantization.default_activation_qconfig,
    weight=torch.quantization.default_weight_qconfig
)
torch.quantization.prepare(model, inplace=True)
torch.quantization.convert(model, inplace=True)

2. 使用高效的推理引擎

使用高效的推理引擎如TensorRT可以显著提高推理速度。TensorRT通过优化模型结构和使用GPU加速来提高性能。具体步骤如下:

  1. 将模型转换为ONNX格式:
     

    python

    import torch
    import torchvision.transforms as transforms
    
    # 假设模型名为yolov8_model,已经完成了训练
    model = yolov8_model.eval()
    dummy_input = torch.randn(1, 3, 640, 640)  # 使用一个典型的输入尺寸进行追踪
    torch.onnx.export(model, dummy_input, "yolov8.onnx", opset_version=11)
  2. 将ONNX模型转换为TensorRT引擎:
     

    python

    import tensorrt as trt
    
    TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
    trt_runtime = trt.Runtime(TRT_LOGGER)
    
    # 加载ONNX模型
    with open("yolov8.onnx", "rb") as model:
        onnx_data = model.read()
    
    # 创建TensorRT引擎
    engine = trt_runtime.deserialize_cuda_engine(onnx_data)

3. 选择合适的模型架构

选择轻量级的模型架构可以显著减少计算量和模型大小。例如,YOLOv5s和YOLOv8n等轻量级模型在边缘设备上表现出色。这些模型在保持较高精度的同时,显著减少了参数数量和计算复杂度。

4. 使用数据增强和损失函数优化

数据增强和损失函数的优化可以提高模型的泛化能力和检测精度,同时减少推理时间。例如,EdgeYOLO提出了一种增强的数据增强方法和混合随机损失函数,显著提高了小目标的检测精度。

5. 剪枝和知识蒸馏

剪枝技术可以通过去除模型中不必要的参数来减少模型的存储和计算复杂度。知识蒸馏则通过训练一个较小的模型来模仿较大模型的行为,进一步提高模型的效率。

6. 优化内存使用

优化内存使用可以减少数据传输开销,提高推理速度。例如,通过优化缓存中参数的空间和时间局部性,可以减少内存访问次数,进一步改善性能。

7. 使用混合精度训练

混合精度训练结合了FP32和FP16的精度,可以在保持精度的同时显著提高训练和推理速度。使用PyTorch的torch.cuda.amp模块可以轻松实现混合精度训练。

总结

通过模型量化、使用高效的推理引擎、选择合适的模型架构、数据增强和损失函数优化、剪枝和知识蒸馏、优化内存使用以及混合精度训练等方法,可以显著提高YOLO模型在边缘计算终端上的推理速度。这些优化方法不仅提高了模型的运行效率,还保持了较高的检测精度,适用于各种实时应用。

树莓派AI HAT+部署YOLO模型:实现边缘实时目标检测全流程 目标检测是计算机视觉的核心任务之一,它通过识别图像中的物体并定位其位置,为机器赋予“看懂”世界的能力。其原理通常基于深度学习模型,如YOLO(You Only Look Once),这类模型在精度和速度间取得了良好平衡。在边缘计算场景下,将目标检测模型部署到资源受限的设备上,能显著降低延迟、节省带宽并保护数据隐私,这对于安防监控、工业质检等实时性要求高的应用至关重要。通过专用硬件加速器(如NPU)对模型推理进行优化,是实现边缘实时智能的关键。本文以树莓派结合AI HAT+加速卡为例,详细解析了将YOLO模型 阅读详情

相关推荐

基于Jetson Nano的边缘计算项目实战案例解析

通过具体项目案例,深入剖析Jetson Nano如何高效实现边缘计算任务,展现其在实时数据处理与智能推理中的优势,为边缘计算落地提供可行路径。

weixin_42613018的博客 887

基于树莓派4B的YOLOv5-Lite目标检测的移植与部署(含训练教程)

基于树莓派4B的YOLOv5-Lite目标检测的移植与部署(含训练教程),手把手教学级别,博客全篇代码开源!!!

black_sneak的博客 7万+

电子墨水屏跨平台驱动指南:从树莓派到STM32的SPI通信与低功耗显示实战

电子墨水屏(e-Paper)是一种基于微胶囊电泳显示技术的低功耗显示方案,其核心原理是通过电压控制黑白带电粒子的位置来形成图像,断电后图像仍可长期保持。这项技术的关键价值在于实现了超低功耗和强光下的清晰可视性,特别适合嵌入式系统和物联网设备中需要长时间静态显示的场景。在工程实践中,通过SPI通信协议与SSD1680等专用驱动芯片交互,开发者可以在树莓派、Arduino、Jetson Nano和STM32等多种硬件平台上实现驱动。本文聚焦于2.15英寸电子墨水屏HAT+模块,详细解析其硬件设计、SPI通信流程

weixin_34090562的博客 560

关于Android如何移植Yolov5模型并且部署

重点要注意一下,对于更改图像分辨率后可能会有索引越界的错误,这个只能你们自己解决了,后期有什么问题可以加我微信交流微信号:zz2003093737。然后,请把你训练好的Yolov5模型转成tflite的模型格式。首先:创建一个新的工程,大家应该都会我就不过多介绍。然后把你的Yolov模型的标签文件一起放到这里来,移植到这里也就结束了,有什么问题可以加我微信交流。将工程中这两个文件粘贴复制到你自己的工程之中。如果你的命名名字跟我不一样,记得改一下这里。要是有问题可以看我例程修改即可。然后新建一个Java类,

行为就是答案,所以我从来不问为什么 1644

基于行空板与YOLO的嵌入式车牌识别:从模型训练到NPU部署全流程

目标检测是计算机视觉的核心任务之一,旨在从图像中定位并识别出特定物体。YOLO(You Only Look Once)作为单阶段检测算法的代表,以其速度快、精度高的特点,成为工业界部署的热门选择。其技术价值在于实现了端到端的实时检测,极大推动了智能监控、自动驾驶等领域的应用落地。在嵌入式边缘计算场景中,如何在资源受限的设备上高效运行YOLO模型成为关键挑战。这便引入了**NPU(神经网络处理单元)** 和**模型部署**的概念。NPU作为专用AI加速硬件,通过针对性的架构设计,在执行卷积等神经网络操作时能效

weixin_30709061的博客 413

树莓派5+Hailo AI加速帽部署自定义YOLO模型实战

YOLO目标检测是边缘AI落地最常用的技术范式,其核心在于模型轻量化、硬件适配与端到端工程闭环。Hailo-8L作为专为边缘优化的ASIC加速器,凭借INT8/INT4混合量化、2MB片上SRAM及PCIe低延迟通信,在树莓派5等资源受限平台实现高能效推理。相比原生NPU或USB加速棒,Hailo在custom dataset校准兼容性、NMS硬件卸载与驱动一致性方面具备显著优势;结合Docker容器化,可系统性解决内核模块冲突、Python环境隔离与OTA热更新等产线级难题。本文聚焦YOLOv8在Hail

weixin_30924239的博客 382

Yolov5移植树莓派实现目标检测

Hallo,大家好啊!之前写了几篇Yolov5相关项目的博客,然后学习了树莓派之后,更新了几篇树莓派的博客,我的最终目的是将Yolov5移植到树莓派,通过树莓派上面的摄像头实现目标检测。你想啊,在工厂里面,你不可能用笔记本电脑作为上位机给下位机传达指令,所以树莓派作为一个小型pc,有着独天独厚的优势。接下来,以项目为驱动,介绍一下整个流程,包括Yolov5数据集获取、模型的训练、识别效果、树莓派环境的搭建、移植树莓派、模型在树莓派上的检测效果!

weixin_63866037的博客 1万+

星上AI实战:纳米卫星航空器检测的生成式数据增强与边缘推理

边缘计算和嵌入式AI的核心挑战在于如何在资源受限的设备上实现高效、实时的智能处理。其基本原理是通过模型轻量化、硬件加速和算法优化,在有限的算力、内存和功耗预算内完成推理任务。这项技术的价值在于将AI能力从云端下沉至终端,实现低延迟、高隐私和离线可用的自主决策。在航天遥感、物联网、自动驾驶等场景中,它对于处理传感器数据、实现设备智能化至关重要。本文聚焦于一个典型应用:在算力与能源极端受限的纳米卫星上,实现航空器的实时自主检测。项目通过集成生成式数据增强技术来应对太空标注数据稀缺的困境,并利用星上推理引擎在Cu

weixin_30448603的博客 357

YOLOv5的FPGA移植:算法优化与硬件适配技巧

YOLOv5是一个基于深度学习的卷积神经网络(CNN),用于目标检测。其核心计算包括卷积层、激活函数(如SiLU)和非极大值抑制(NMS)。FPGA是可编程硬件,支持并行处理和低延迟,但需要定制化设计。移植时,目标是在保持模型精度(如mAP)的前提下,减少计算量和内存占用,以适应FPGA的资源限制(如LUT、BRAM和DSP单元)。例如,YOLOv5的输入尺寸通常为$640 \times 640$,输出为边界框和置信度得分。

2501_93894276的博客 989

YOLOv11模型C++部署实战:从ONNX转换到ONNX Runtime推理优化

目标检测是计算机视觉的核心任务之一,旨在识别图像中的物体并定位其位置。其原理通常基于深度学习模型,通过卷积神经网络提取特征并预测边界框与类别。这项技术的价值在于为自动驾驶、安防监控、工业质检等场景提供自动化视觉感知能力。在实际应用中,训练好的模型常需部署到生产环境,而C++因其高性能和资源控制优势成为服务器端和嵌入式设备的首选。ONNX作为一种开放的模型交换格式,能有效连接PyTorch等训练框架与多种推理后端。本文聚焦于将YOLOv11模型通过ONNX转换,并利用ONNX Runtime在C++环境中实现

congsong2560的博客 448

基于YOLOv5的番茄成熟度检测与计数系统:从数据工程到边缘部署全流程实践

目标检测是计算机视觉的核心任务之一,旨在从图像或视频中定位并识别出感兴趣的目标物体。其基本原理是通过深度学习模型学习图像特征,生成目标的边界框和类别概率。这项技术在工业自动化、智能安防、自动驾驶等领域具有极高的技术价值,能够替代或辅助人力完成重复性、高精度的视觉任务。在农业自动化这一具体应用场景中,目标检测技术正被用于解决作物识别、成熟度判断和产量统计等关键问题。本文聚焦于番茄采摘场景,深入探讨了如何利用YOLOv5模型,结合针对性的数据采集、标注与增强策略,构建一个鲁棒的成熟番茄检测与计数系统。文中详细分

weixin_29041767的博客 254

基于Jetson Nano嵌入式平台的YOLOV3-tiny模型部署

目前,人工智能算法可以部署在云端和终端。在终端上运行检测算法有很多优点,比如只传输有价值的信息,而不是原始的大容量视频,可以有效降低后端部署服务器的传输带宽和计算存储量,使系统的整体架构更具可移植性。在模型推理阶段,可以适当降低了模型参数的精度,加快模型推理的速度,对模型推理结果影响不大。TensorRT是NVIDIA公司推出的GIE(GPU Inference Engine)C++库,其主要目的是要提高深度神经网络在其公司硬件产品上的推理速度,主要方式是通过更低精度的运算、神经网络计算结构的调整优化等。

张伟的专栏 1160

基于轮廓分析与边缘计算的电梯乘客无感计数系统实践

计算机视觉作为人工智能的核心分支,通过算法让机器“看懂”图像与视频。其基础原理涉及图像处理、特征提取与模式识别,在安防、交通、零售等领域具有广泛应用价值。边缘计算则将数据处理从云端下沉至设备端,有效降低了延迟、带宽消耗与隐私风险,是物联网与实时感知场景的关键技术。结合两者,在电梯这类对隐私敏感、环境复杂且需实时反馈的狭小空间内,传统的目标检测方案面临成本、隐私与算力三重挑战。本文聚焦的“电梯里的黑胶人”项目,正是这一技术结合的典型实践。它运用背景减除与轮廓分析技术,在树莓派等边缘设备上实现了乘客的无感计数与

weixin_30619101的博客 376

基于YOLOv12的智能车辆检测系统开发实践

目标检测是计算机视觉的核心技术之一,通过深度学习模型实现对图像中特定物体的识别与定位。YOLO系列算法因其出色的实时性能,在智能交通、安防监控等领域广泛应用。最新YOLOv12通过改进的特征金字塔网络和轻量化设计,进一步提升了小目标检测精度和推理速度。本文以车辆类型识别为切入点,详细介绍了基于YOLOv12构建完整检测系统的技术方案,包括数据集构建、模型训练优化、系统架构设计等关键环节。该系统支持7类车辆识别,在RTX 3060显卡上达到45FPS的实时性能,并提供了从预训练模型到交互界面的完整解决方案,可

weixin_30565327的博客 433

yolo v2的android移植

darknet yolo v2的android移植

STM32F103单片机驱动TM1637数码管显示模块

最近项目中需要用到数码管显示,于是买了一个TM1637芯片驱动的四位数码显示模块,现将调试过程记录一下,方便以后参考。 使用的单片机是STM32F103C8T6最小系统 使用的数码管模块是TM1637四位数码管显示模块 实际运行效果 下面先看一下TM1637和数码管连接的具体线路图 实际使用的模块没有带按键,只用了4个数码管,模块和单片机连接只需要4根线VCC、GND、CLK、DIO。芯片和单片机通信使用的是I2C总线,下面就来说一下如何...

HXYDJ的博客 1万+

YOLOv5全系列模型在番茄成熟度检测与采摘系统中的实战应用与性能对比

目标检测是计算机视觉的核心任务之一,旨在从图像或视频中定位并识别出感兴趣的目标物体。其基本原理是通过深度学习模型,如基于锚框的单阶段检测器,直接预测目标的边界框位置和类别概率。这项技术的核心价值在于实现了对视觉信息的结构化理解,极大地提升了自动化系统的感知能力。在工业自动化、智能安防、自动驾驶等众多领域,高效精准的目标检测都是实现智能决策与控制的关键前提。特别是在农业自动化场景中,面对光照多变、遮挡严重、目标尺度不一等复杂环境,如何选择合适的模型在精度、速度和资源消耗之间取得平衡,是技术落地的核心挑战。本文

weixin_30607125的博客 304

Dify 深度进阶:从入门到精通AI应用构建

《Dify进阶指南:从基础到高阶的AI应用开发技巧》 本文深入探讨Dify平台的高级功能与应用开发技巧。首先强调核心概念的深化,包括提示词工程进阶、知识库高效管理和模型参数优化。重点介绍智能体应用的开发方法,如何让AI具备自主规划与执行能力。同时讲解工作流编排、前端集成等实用技术,并分享应用运营优化、成本控制等实践经验。文章还展望了Dify生态的发展趋势,为开发者提供从基础到进阶的完整学习路径,助力打造更智能高效的AI应用。

同名公众号:dify实验室 1952

TensorFlow Lite嵌入式AI部署实战:从模型量化到树莓派推理全流程

模型轻量化是解决深度学习算法在资源受限设备上部署的关键技术。其核心原理是通过量化、剪枝、知识蒸馏等方法,在保持模型精度的同时,大幅减少计算量和内存占用。这项技术的价值在于能够将AI能力延伸至边缘计算场景,实现低延迟、高隐私保护的实时推理。在嵌入式AI和边缘计算领域,TensorFlow Lite作为轻量化部署的主流框架,提供了完整的工具链支持。通过模型转换、优化和硬件加速委托机制,开发者可以将训练好的模型高效部署到树莓派、安卓设备等嵌入式平台。本文以MobileNetV2图像分类模型为例,详细拆解了从模型准

weixin_30394669的博客 416

comsol 多物理场仿真流程-以开关柜为例

1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于...

健忘16的博客 7020

基于51单片机+SYN6288语音播报

51单片机控制SYN6288语音播报资料SYN6288模块原理图语音合成命令接线如何接线实现原理程序代码main.csyn6288.cuart.cdelay.c基于 51单片机的其他项目基于51单片机+遥控灯基于51单片机+LCD1602显示基于51单片机+红外遥控解码+LCD1602显示基于51单片机+DHT11温湿度+LCD1602显示基于51单片机+DS18B20温度测温器+LCD1602显示尾声 资料 我用的是绿深电子技术的模块,资料也挺齐全的。也有相关例程。 SYN6288模块原理图 语音合成

weixin_47457689的博客 3万+

基于YOLOv5与无人机航拍的农田杂草智能检测系统实战

目标检测是计算机视觉的核心任务之一,旨在识别图像中的特定物体并定位其位置。其原理通常基于深度学习模型,通过卷积神经网络提取特征,并预测目标的边界框和类别。这项技术在自动化与智能化领域具有极高的技术价值,能够替代人眼完成高效、精准的视觉分析任务。其应用场景广泛,尤其在智慧农业中,用于作物监测、病虫害识别等。本文聚焦于一个具体的工程实践:结合无人机航拍技术,利用YOLOv5这一高效的目标检测模型,构建一套完整的农田杂草检测系统。该系统涉及从数据采集、模型训练到边缘部署的全流程,旨在解决传统农业植保中人工巡查效率

weixin_30952479的博客 251

Web渗/透/攻/击实战(1)—成功渗/透台湾某净化设备公司官网

写在前面 作为一个防御型白帽黑客​ 你一定要知道黑客的进攻套路 才能有相应的防御措施 声明:只做测试,发现对方的漏洞,并不进行破坏性操作 1、 网站分析 地址:http://www.xxx.com.tw/ 这是一家中国台湾地区的网站,看着满屏的繁体字,就不是很舒服 网站首页包括:关于我们、资料下载、联络方式等等。 这些对我们进行sql注入用处并不大 我们需要的是可以进行参数传入的页面,这样我们就可以在参数里做文章 找一下 有没有新闻列表相关的页面 页...

信息安全领域优质创作者|操作系统领域专家 1808
上一篇: 机器视觉算法与边缘计算:打造移动终端上的智能“慧眼”
下一篇: 不同场景下的检测算法应用和分析 实例
交通上的硅基思维
博客等级 码龄4年 2763粉丝 913原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交通上的硅基思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值