Roboflow YOLO11 自定义
本教程将指导您如何在 Synaptics Astra™ Machina™ 上运行自定义 YOLO11 模型。本教程将指导您在 PPE 数据集上微调 YOLO11 small 模型,为 Astra 优化它,然后在 Astra Machina 开发板上运行它。
在工业和建筑环境中,佩戴个人防护装备(PPE)如头盔、夹克和鞋子对安全至关重要。使用计算机视觉自动化 PPE 检测可以提高合规性并确保更安全的工作环境。
您可以使用 Ultralytics 的预训练 YOLO 模型,这是一个快速、准确且易于使用的流行目标检测模型。我们将使用的数据集包含 PPE 的标注图像,模型将被微调以检测它们。

步骤 1:在 PPE 数据集上微调 YOLO11 模型
本教程设计为在 Google Colab 中运行,但只需最小调整,这些步骤也可以在本地 Jupyter Notebook 环境中运行。
安装所需库
您需要安装必要的依赖项,包括 Ultralytics 和 OpenCV。
!pip install ultralytics
!pip install opencv-python-headless matplotlib
下载 PPE 数据集
您可以从 Roboflow 下载 PPE 数据集。该数据集已经为多个 YOLO 模型格式化,选择 v4 版本,YOLOv11 格式。这是下载数据集的直接链接:PPE 数据集。
from ultralytics import YOLO
import os
import zipfile
import requests
import matplotlib.pyplot as plt
import cv2
dataset_url = "https://universe.roboflow.com/ds/7nvWqmKXi7?key=Y3UrCkPmxF"
dataset_zip = "dataset.zip"
response = requests.get(dataset_url)
with open(dataset_zip, 'wb') as file:
file.write(response.content)
with zipfile.ZipFile(dataset_zip, 'r') as zip_ref:
zip_ref.extractall('dataset')
这将下载数据集并将其解压到 dataset 文件夹中。确保您的目录结构如下:
├── dataset/
│ ├── train/
│ ├── valid/
│ ├── test/
│ └── data.yaml
data.yaml 文件应包含有关数据集的信息,包括训练、验证和测试数据集的路径。
检查 data.yaml 文件是否包含正确的数据集路径以及您想要微调模型的类别 names 和 nc 计数。
您可以在 data.yaml 中将类别重命名为英文。
train: ../train/images
val: ../valid/images
test: ../test/images
nc: 4
names: ['Helmet', 'Shoes', 'Person', 'Jacket']
roboflow:
workspace: menara
project: personal-protection-detetction
version: 4
license: Public Domain
url: https://universe.roboflow.com/menara/personal-protection-detetction/dataset/4
微调 YOLO11 模型
接下来,从 Ultralytics 加载预训练的 YOLO11 small 目标检测模型并在 PPE 数据集上训练它。这里,图像分辨率选择为 320x320,您可以根据需要配置它。
# 加载预训练的 YOLO11 small 模型
model = YOLO('yolo11s.pt')
model.train(data='/content/dataset/data.yaml', epochs=100, imgsz=(320,320), name='ppe_yolo', augment=True )
关键参数:
data:数据集配置文件(data.yaml)的路径。epochs:训练轮数(根据您的需求调整)。imgsz:图像大小(默认为 640x640)。name:训练运行的名称。
评估和测试模型
训练完成后,您可以在验证集或测试集上评估模型:
metrics = model.val()
这将输出评估指标,如精确率、召回率和 mAP。
模型训练完成后,让我们在测试集中的一张图像上测试它。
test_image = '/content/dataset/test/images/KakaoTalk_20221018_001312059_02_jpg.rf.6d2847ebe3ed5ba086853613b775d41b.jpg'
results = model(test_image)
detected_image = results[0].plot()
# 将检测到的图像从 BGR 转换为 RGB 以正确显示颜色
detected_image_rgb = cv2.cvtColor(detected_image, cv2.COLOR_BGR2RGB)
plt.imshow(detected_image_rgb)
plt.axis('off')
plt.show()

太好了,看起来您的目标检测模型已经成功微调用于 PPE 检测。
保存和导出模型
您可以保存模型并将其导出为 TensorFlow lite float32 位。
model.export(format='tflite', opset=12)
从 runs/detect/ppe_yolo/weights/best_saved_model/best_float32.tflite 下载 tflite float32 模型。
步骤 2:为 Astra Machina 优化模型
一旦您的模型准备就绪,让我们使用 SyNAP 工具包为 SL1680 的 NPU 优化它。这将优化并将我们的模型量化为可以在 NPU 上高效运行的 .synap 格式。
如果您想在本地机器上设置环境和优化模型,可以按照这个教程。
为了节省环境设置的时间,您可以在新的 Google Colab Notebook 上按照以下步骤操作并在此处上传您的模型。
在优化过程中,最佳实践是在 meta yaml 中提供与模型相同分辨率的数据集。因此,获取一个 320x320 的图像或下载并调整 bus.jpg 的大小
另外,请确保模型分辨率与 meta yaml 中的 shape 和 format 值匹配。
!pip install "https://github.com/synaptics-synap/toolkit/releases/download/v3.1.1/synap-3.1.1rc20240910203155-cp310-cp310-linux_x86_64.whl" --extra-index-url https://download.pytorch.org/whl/cpu
synap_yaml = """
inputs:
- format: rgb keep_proportions=1
name: inputs_0
scale: 255
shape: [1, 320, 320, 3]
outputs:
- dequantize: true
format: yolov8 w_scale=320 h_scale=320 bb_normalized=1
quantization:
data_type: uint8
dataset:
- /content/bus320x320.jpg
scheme: asymmetric_affine"""
with open('./synap.yaml', 'w') as file:
file.write(synap_yaml)
!synap_convert --model /content/best_float32.tflite --target SL1680 --meta /content/synap.yaml --out-dir yolo
步骤 3:在 Machina 上运行视频推理
现在要在 Machina 上运行这个模型,复制您刚刚为 Astra 的 NPU 编译的 模型。
另外,由于我们微调的模型有 4 个标签,创建一个 label.json 并将其也复制到 Machina 开发板。
{
"labels": ["Helmet","Shoes","Person","Jacket"]
}
adb push ~/Downloads/model.synap /home/weston/model.synap
adb push ~/Downloads/label.json /home/weston/label.json
现在在 Machina 终端上,从我们的 Synap GitHub 仓库 克隆视频推理示例仓库。
git clone https://github.com/synaptics-synap/examples.git
要在某些视频上运行视频推理,复制视频 video.mp4 并使用命令:
root@sl1680:/home/weston/examples/video_inference# python3 -m examples.infer_video -m /home/weston/model.synap -i /home/weston/video.mp4 /home/weston/label.json --fullscreen
Validating input...
Input OK
Validating model...
Model OK
Running pipeline...
恭喜!
通过遵循本教程,您已经微调了 YOLO11 small 模型以检测 PPE 并在 Astra Machina 的 NPU 上运行它。对于更高级的配置,您可以尝试超参数并探索不同的数据增强方法以进一步提高性能。