实战精选|英特尔开发板 - 哪吒套件部署 YOLOv5:完成透明物体目标检测

2024/12/02 12:45
阅读数 10

点击蓝字

关注我们,让开发变得更有趣


OpenVINO™


哪吒套件简介


英特尔的哪吒(Nezha)开发套件是一款专为边缘 AI 和物联网应用设计的高性能计算平台,搭载了英特尔® N97处理器、内置英特尔® UHD Graphics GPU,并提供高达 8GB LPDDR5 内存与32GB至 64GB eMMC 存储选项。它支持 Windows 和 Linux 操作系统,具备丰富的接口如千兆以太网、HDMI 1.4、USB 3.0/2.0 以及 GPIO 等,兼容树莓派扩展板。此外,该套件采用无风扇设计并集成了 TPM 2.0 安全模块,适用于自动化、物联网网关、数字标牌及机器人等多种场景,结合 OpenVINO™ 工具包可加速深度学习模型推理,便于开发者快速构建高效且安全的解决方案。



OpenVINO™


YOLOv5 简介


YOLOv5 是 YOLO(You Only Look Once)系列中的一种实时对象检测系统,它以速度快、准确性高而闻名。对于开发者来说,YOLOv5 提供了一种简单易用的方法来创建高效的对象检测模型。官方 GitHub 仓库提供了丰富的资源和示例代码,可以帮助用户快速入门并开始构建自己的检测器。


GitHub: https://github.com/ultralytics/yolov5


OpenVINO™


哪吒套件部署 YOLOv5


YOLOv5 以其出色的实时性能和高准确性而受到广泛欢迎,并且官方提供了详尽的文档和支持,与其他设备相同,在哪吒套件上部署 YOLOv5 进行透明物体目标检测时,用户仍需注意一些关键步骤。首先,确保开发环境已正确配置,包括安装所有必要的依赖项如 Python、PyTorch 等。接着,准备训练数据集是至关重要的一步,这通常涉及将图像及其标注信息按照特定格式整理好。对于透明物体检测这样的特定任务,可能还需要对模型做一些微调以优化其识别能力。整个过程虽然需要一定的技术背景支持,但借助于丰富的在线资源和社区帮助,即使是初次尝试者也能顺利完成部署。下面的步骤可以让你在搭载在哪吒套件的 windows 平台快速上手训练自己的模型。


OpenVINO™


搭配环境与安装依赖


在 win+R 中打开 cmd,输入以下代码创建并进入一个名为 yolov5s, python3.8 版本的虚拟环境。

conda create -n yolov5s python=3.8conda activate yolov5s


克隆仓库:从官方 GitHub 仓库克隆 YOLOv5 项目到本地机器。

git clone https://github.com/ultralytics/yolov5cd yolov5


然后输入以下代码,即可自动下载安装所有需要的库。

pip install -r requirements.txt


如果下载速度过慢,可能会导致报错,可以复制下面代码(清华源)到 cmd 中运行,然后在重新进行上面下载库的步骤。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda config --adconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/conda config --set show_channel_urls yes


OpenVINO™


Trans10k 数据集准备


5.1 数据集下载

Trans10K 是一个公开的大规模透明物体分割数据集,包含10,428张真实场景图像,每张都经过手动标注。它提供了多样化的透明物体样本,如杯子、瓶子和窗户等。数据集分为训练(5,000张)、验证(1,000张)和测试(4,428张)三部分,并进一步细分为简单和困难类别,整个数据集大小约为10.6GB。


可以使用相应的 SDK 进行下载:

pip install openxlab #安装pip install -U openxlab #版本升级import openxlabopenxlab.login(ak=<Access Key>, sk=<Secret Key>) #进行登录,输入对应的AK/SKfrom openxlab.dataset import infoinfo(dataset_repo='OpenDataLab/Trans10K') #数据集信息及文件列表查看from openxlab.dataset import getget(dataset_repo='OpenDataLab/Trans10K', target_path='/path/to/local/folder/')  # 数据集下载from openxlab.dataset import downloaddownload(dataset_repo='OpenDataLab/Trans10K',source_path='/README.md', target_path='/path/to/local/folder') #数据集文件下载


下载后解压即可。


5.2 格式化数据

Trans10K 数据集通常包含图像及其对应的标注文件。为了与 YOLOv5 兼容,您需要确保每个图像都有一个对应的.txt文件,其中包含目标框的位置信息。格式如下:

class_index x_center y_center width height


所有坐标都是相对于图像尺寸的归一化值(0.0到1.0之间)。然而 Trans10K 的标注格式不是 YOLO 格式。


这就需要编写一个脚本来将标注转换为 YOLO 格式。转换脚本如下:

   import cv2    import numpy as np    import os    from pathlib import Path    path_to_masks = 'path/to/mask'    path_to_save_yolo_labels = ' path/to/mask/label'    def convert_mask_to_bbox(mask_path, save_path):        # 创建保存路径        Path(save_path).mkdir(parents=True, exist_ok=True)                # 遍历 mask 文件        for mask_file in os.listdir(mask_path):            if mask_file.endswith(".png"):  # mask 以 .png 格式保存                mask = cv2.imread(os.path.join(mask_path, mask_file), cv2.IMREAD_GRAYSCALE)                contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)                                # 获取文件名,无扩展名                filename = os.path.splitext(mask_file)[0]                bbox_file = open(os.path.join(save_path, filename + ".txt"), 'w')                                for contour in contours:                    x, y, w, h = cv2.boundingRect(contour)                    # YOLO 格式:class x_center y_center width height (归一化到[0,1]范围)                    img_height, img_width = mask.shape                    x_center = (x + w / 2) / img_width                    y_center = (y + h / 2) / img_height                    width = w / img_width                    height = h / img_height                    # 假设所有目标都是同一类 (class = 0)                    bbox_file.write(f"0 {x_center} {y_center} {width} {height}\n")                                bbox_file.close()    # 使用示例    convert_mask_to_bbox(path_to_masks, path_to_save_yolo_labels)


5.3 组织文件结构

按照 YOLOv5 的要求组织文件结构。需要以下目录结构:

/path/to/dataset/


├── images/

│   ├── train/

│   └── val/

└── labels/

    ├── train/

    └── val/

images/ 目录下存放图像文件。

labels/ 目录下存放相应的标注文件(.txt)。


5.4 配置data.yaml文件

编辑 YOLOv5 项目中的 data.yaml 文件或者新建一个 trans10k_data.yaml,指定数据集路径及类别信息,如下所示:

train: /path/to/dataset/images/train  # 训练图片路径val: /path/to/dataset/images/val      # 验证图片路径nc: 1  # 类别数量,假设只有一个类别names: ['transparent_object']  # 类别名称列表


OpenVINO™


启动训练


使用以下命令启动训练过程,您可以根据硬件性能调整图片大小(--img)、批量大小(--batch)等选项。

python train.py --img 640 --batch 16 --epochs 50 --data data/trans10k_data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt


训练完成后,就得到了一个能够检测透明目标的模型。



OpenVINO™


总结


通过遵循上述步骤,即使是初学者也能迅速掌握 YOLOv5 的训练方法并在英特尔的哪吒(Nezha)开发套件上成功运行。哪吒套件凭借其高性能的英特尔® N97处理器、内置的英特尔® UHD Graphics GPU 以及高达 8GB 的 LPDDR5 内存,为实时目标检测提供了强大的计算支持。


借助 YOLOv5 的强大功能以及个性化的 Trans10K 数据集,用户能够快速开发出针对透明物体的高度精确的对象检测模型。哪吒套件的无风扇设计和丰富的接口选项比如千兆以太网、HDMI 1.4、USB 3.0/2.0等,使其非常适合部署在各种边缘计算环境中,无论是智能监控、工业自动化还是其他物联网应用,都能提供可靠且高效的解决方案。


OpenVINO™


---------------------------------------

*OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries.

-----------------------------

 OpenVINO 中文社区 

微信号 : openvinodev

B站:OpenVINO中文社区

“开放、开源、共创”

致力于通过定期举办线上与线下的沙龙、动手实践及开发者交流大会等活动,促进人工智能开发者之间的交流学习。



 点击 “ 在看 让更多人看见

本文分享自微信公众号 - OpenVINO 中文社区(openvinodev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部