【“星睿O6”AI PC开发套件评测】图像分割
本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 YOLO 算法模型实现图像分割的项目设计,包括环境搭建、预训练模型、工程代码和效果演示等。
项目介绍
- 准备工作:OpenCV 安装、Ultralytics 软件包安装、预训练模型下载等;
- 图像分割:采用 YOLOv8 算法及预训练模型实现图像分割;
准备工作
包括 硬件连接、虚拟环境创建、OpenCV 安装、Ultralytics 库部署等。
硬件连接
- 使用 HDMI 数据线连接显示屏(也可使用 VNC 或 SSH 远程登录);
- USB 接口连接鼠标键盘;
- 网线连接 LAN 接口和路由器(或 WiFi 模块连接无线网);
- 使用 PD 电源供电(或 ATX 电源供电);
OpenCV 安装
为了避免影响系统 Python,这里采用创建虚拟环境的方案
- 创建并激活虚拟环境
mkdir ~/cv && cd ~/cv # 创建 cv 文件夹,便于管理
python3 -m venv venv # 创建虚拟环境 venv
source venv/bin/activate # 激活虚拟环境 venv- 升级 pip 并安装 NumPy + OpenCV 全家桶
pip install -U pip numpy # 安装 numpy
pip install opencv-python opencv-contrib-python # opencv 主模块及 contrib- 验证安装
python3 -c "import cv2,sys,numpy;print('OpenCV:',cv2.__version__,'NumPy:',numpy.__version__)"- 输出版本号
详见:OpenCV .
Ultralytics 部署
Ultralytics 基于多年在计算机视觉和人工智能领域的基础研究,在目标检测、跟踪、实例分割、图像分类和姿态估计等任务中表现出色。
- 使用系统或第三方轮子,安装 ultralytics 软件包
sudo apt update && sudo apt install -y python3-dev python3-pip libopenblas-dev
pip install ultralytics- 验证安装
python3 -c "import ultralytics, sys, torch; print('ultralytics', ultralytics.__version__, '| torch', torch.__version__, '| Python', sys.version.split()[0])"- 输出相应版本号
详见:ultralytics .
图像分割
图像切割算法是计算机视觉中的核心技术,旨在将图像划分为具有相似特征的区域或对象,以便进一步分析和处理。常见的图像切割方法包括基于阈值、区域、边缘以及深度学习的算法。
模型
获取目标模型(这里使用 YOLO 预训练模型 yolov8n-seg.pt 权重文件);
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n-seg.pt将其放置于 model 文件夹。
代码
终端执行 source ~/cv/venv/bin/activate 激活虚拟环境;
修改蒙版透明度,获得更清晰的图像分割效果,代码如下
import cv2
import numpy as np
from ultralytics import YOLO
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image', default='./img/road.jpg')
args = parser.parse_args()
IMG_FILE = args.image
model = YOLO('./model/yolov8n-seg.pt')
img = cv2.imread(IMG_FILE)
h, w = img.shape[:2]
results = model(img, imgsz=640, conf=0.25)
# 复制原图
annotated = img.copy()
# mask 叠加
alpha = 0.6 # 填充透明度(值越小越透明)
for r in results:
for mask, cls in zip(r.masks.xy, r.boxes.cls):
color = (int(cls)*30, 255-int(cls)*30, 255)
pts = np.int32(mask)
# 填充内部
overlay = annotated.copy()
cv2.fillPoly(overlay, [pts], color=color)
annotated = cv2.addWeighted(annotated, 1-alpha, overlay, alpha, 0)
# 加粗轮廓
cv2.polylines(annotated, [pts], isClosed=True,
color=color, thickness=2, lineType=cv2.LINE_AA)
# 画框和标签
annotated = results[0].plot(img=annotated, masks=False)
cv2.namedWindow("Image Segmentation", cv2.WINDOW_NORMAL) # 自定义缩放画面
cv2.imshow("Image Segmentation", annotated)
cv2.waitKey(0)
cv2.destroyAllWindows()可实现更清晰的图像分割轮廓显示。
效果
- 终端执行
python seg_yolo.py指令; 终端打印图像分割结果;
- 弹窗显示结果
更多效果演示
总结
本文介绍了瑞莎星睿 O6 (Radxa Orion O6) 开发板结合 YOLO 算法模型实现图像分割的项目设计,包括环境搭建、预训练模型、工程代码和效果演示等,为相关产品在边缘 AI 视觉领域的开发设计和快速应用提供了参考。