YOLO-Worldv2两分钟快速部署

本次部署使用的框架基于ultralytics, 并且已经集成最新版本的YOLOv8框架:

一键环境配置

pip install ultralytics

基础使用

  • 训练
from ultralytics import YOLOWorld
model = YOLOWorld('yolov8x-worldv2.pt')
results = model.train(data='coco8.yaml', epochs=100, imgsz=640)
results = model('path/to/bus.jpg')
  • 推理
from ultralytics import YOLOWorld
model = YOLOWorld('yolov8s-worldv2.pt')
results = model.predict('path/to/image.jpg')
results[0].show()
  • 自定义标签
    • 我们定义了保温杯,马克杯,纸杯,抽纸,笔记本,屏幕等标签。均不被包含在COCO类别定义中。
model = YOLOWorld('yolov8s-worldv2.pt')
model.set_classes(['Insulated_cup','mug','paper_cup','drawing_paper','laptop', 'screen', 'woman', 'wirless_earphone', 'Shoulder_bag'])
model.save("elephant_camel_world.pt")
  • 导出onnx
model = YOLO('cup_mug_world.pt')
model.export(format="onnx", opset=11)

实时推理

简单修改代码,使得opencv调用网络摄像头并介入yolo-world。代码如下:

from ultralytics import YOLOWorld
import cv2
import numpy as np

model = YOLOWorld('yolov8x-worldv2.pt') 
model.set_classes(['Insulated_cup','mug','paper_cup','drawing_paper','laptop', 'screen', 'woman', 'wirless_earphone', 'Shoulder_bag'])
model.save("elephant_camel_world.pt")


capture = cv2.VideoCapture(2)

# while True:
ret, frame = capture.read()
# cv2.imshow("result", frame)
# cv2.waitKey(0)

while True:
    ret, frame = capture.read()
    results = model.predict(np.array(frame))
    cv2.imshow("result", results[0].plot(False))
    cv2.waitKey(1)

具体效果如下。从图中我们可以看到,yolo-world确实可以扩展类别到一些细分、甚至是类似的其他类别。但是存在类别识别错误,以及同物体重识别的情况。
在这里插入图片描述

### 改进 YOLO-World 项目或模型的方法 #### 提升模型性能 为了提升YOLO-World模型的性能,可以考虑采用数据增强技术来扩充训练集。通过引入更多的变换方式如随机裁剪、颜色抖动等,可以使模型更加鲁棒[^1]。 另外一种有效的方式是对现有网络结构做微调,在保持原有架构优势的基础上增加一些新的层或者改变某些超参数设置,比如调整卷积核大小、通道数以及激活函数的选择等。 #### 增加新特性支持 对于想要给YOLO-World加入额外特性的需求来说,可以从以下几个方面入手: - **多尺度输入处理**:实现不同分辨率下的目标检测能力,使得单次推理能够适应多种尺寸的目标物体。 - **实时跟踪模块集成**:结合SORT算法或其他先进的追踪机制,让YOLO-World不仅限于静态图像中的对象识别,还能应用于视频流场景下连续帧之间的运动目标关联分析。 - **轻量化部署优化**:针对边缘计算设备的特点,研究如何减少模型体积并加快预测速度而不明显牺牲精度,这可能涉及到量化感知训练或是剪枝操作[^3]。 ```python import torch.nn as nn class CustomizedYOLO(nn.Module): def __init__(self, base_model='yolov8'): super(CustomizedYOLO, self).__init__() # Load pretrained model based on specified size (l,m,s) if 'large' in base_model.lower(): from ultralytics import YOLO self.model = YOLO('yolo_world/l') elif 'medium' in base_model.lower() or 'small' in base_model.lower(): raise NotImplementedError("Only large models are currently supported.") def forward(self,x): return self.model(x) # Example usage of customized class with added features like multi-scale input support. def detect_objects(image_paths, scales=[0.75, 1., 1.25]): results = [] for scale_factor in scales: scaled_images = [cv2.resize(cv2.imread(path), None, fx=scale_factor, fy=scale_factor) for path in image_paths] result = custom_yolo(scaled_images) results.append(result) final_result = aggregate_results(results) return final_result ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值