番外篇-YOLOV10尝鲜

一、 番外篇-YOLOV10尝鲜

最近由清华大学的研究团队研发的最新的YOLOV10模型。这一新一代的YOLO模型专注于实时端到端的目标检测。YOLOv10在多个方面进行了改进,包括优化模型架构、消除非极大值抑制(NMS)后处理步骤,并引入了高效的模型设计策略,从而在提高检测精度的同时显著降低了计算开销和推理延迟。
具体来说,YOLOv10的研发团队包括Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han和Guiguang Ding。这些研究人员通过广泛的实验,证明了YOLOv10在不同模型规模上实现了最先进的性能和效率。例如,与YOLOv9-C相比,YOLOv10-B在相同性能下延迟减少了46%,参数减少了25%。
通过这些改进,YOLOv10在实时性和精度方面都达到了新的高度,适用于各种实时目标检测应用,如自动驾驶、视频监控和智能安防等。

好奇心驱使尝试一下v10模型的效果。下载了yolov10s.pt版本,进行实时视频监控测试。
各版本下载和介绍如下:
模型下载:

YOLOv10-N:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10n.pt
YOLOv10-S:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10s.pt
YOLOv10-M:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10m.pt
YOLOv10-B:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10b.pt
YOLOv10-L:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10l.pt
YOLOv10-X:https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10x.pt

模型介绍:
在这里插入图片描述

二、YOLOv10实战:

1.实时检测

30行左右代码构建基于YOLOv10的实时视频监控**
代码如下:运行后电脑摄像头自动开启,实时检测摄像头内的目标。

import cv2
from ultralytics import YOLOv10

model = YOLOv10("yolov10s.pt")
cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if not ret:
        break  # 如果没有读取到帧,退出循环
    results = model.predict(frame)
    # 遍历每个预测结果
    for result in results:
        # 结果中的每个元素对应一张图片的预测
        boxes = result.boxes  # 获取边界框信息
        for box in boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])
            cls = int(box.cls[0])
            conf = float(box.conf[0])
            cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)
            cv2.putText(frame, f'{model.names[cls]} {conf:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
                        (255, 0, 0), 2)
    # 显示带有检测结果的帧
    cv2.imshow('YOLOv10实时检测', frame)
    # 按'q'键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

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

检测结果:
在这里插入图片描述
检测效果确实很赞!
参考:基于YOLOv10实现你的第一个视觉AI大模型
另附:基于YOLOv8的实时视频监控写法如下:
代码如下:运行后电脑摄像头自动开启,实时检测摄像头内的目标。
完整代码:

import cv2
from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # 

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break  # 如果没有读取到帧,退出循环

    results = model.predict(frame)
    class_counts = {}

    for result in results:
        boxes = result.boxes
        for box in boxes:
            x1, y1, x2, y2 = map(int, box.xyxy[0])
            cls = int(box.cls[0])
            conf = float(box.conf[0])
            class_name = model.names[cls]

            # 统计每种类别的数量
            if class_name in class_counts:
                class_counts[class_name] += 1
            else:
                class_counts[class_name] = 1

            # 在图像上绘制边界框和标签
            cv2.rectangle(frame, (x1, y1), (x2, y2), (255, 0, 0), 2)
            cv2.putText(frame, f'{class_name} {conf:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
                        (255, 0, 0), 2)

    # 在图像上绘制类别数量
    y_offset = 30
    for class_name, count in class_counts.items():
        cv2.putText(frame, f'{class_name}: {count}', (10, y_offset), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)
        y_offset += 30

    # 显示带有检测结果的帧
    cv2.imshow('YOLO实时检测', frame)

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

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

检测效果如下:
在这里插入图片描述

2.YOLOV10图片推理:

完整代码如下:


from ultralytics import YOLOv10
import supervision as sv
import cv2

MODEL_PATH = 'yolov10s.pt'
IMAGE_PATH = 'test_images_1/veh2.jpg'

model = YOLOv10(MODEL_PATH)
image  = cv2.imread(IMAGE_PATH)
results = model(source=image, conf=0.25, verbose=False)[0]
detections = sv.Detections.from_ultralytics(results)
box_annotator = sv.BoxAnnotator()

category_dict = {
    0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus',
    6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant',
    11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat',
    16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear',
    22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag',
    27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard',
    32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove',
    36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle',
    40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl',
    46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli',
    51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake',
    56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table',
    61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard',
    67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink',
    72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors',
    77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'
}

labels = [
    f"{category_dict[class_id]} {confidence:.2f}"
    for class_id, confidence in zip(detections.class_id, detections.confidence)
]
annotated_image = box_annotator.annotate(
    image.copy(), detections=detections, labels=labels
)

# cv2.imwrite('result.jpg', annotated_image)

cv2.imshow("res",annotated_image)
cv2.waitKey()
cv2.destroyAllWindows()

检测结果如下:
在这里插入图片描述
参考链接:https://github.com/THU-MIG/yolov10
下载权重:https://github.com/THU-MIG/yolov10/releases/download/v1.0/yolov10n.pt
参考:YOLOv10尝鲜测试五分钟极简配置

三、 YOLO版本简史

YOLO(You Only Look Once)系列目标检测模型的发展历程中,不同版本是由不同的研究团队研发的。以下是各个版本的研发团队简介:

YOLOv1

研发团队:Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

  • 机构:华盛顿大学和Facebook AI Research (FAIR)
  • 发布时间:2016年
  • 简介:YOLOv1是YOLO系列的第一个版本,提出了一种统一的目标检测方法,能够在单次前向传递中预测物体边界和类别。

YOLOv2 (YOLO9000)

研发团队:Joseph Redmon, Ali Farhadi

  • 机构:华盛顿大学
  • 发布时间:2017年
  • 简介:YOLOv2在YOLOv1的基础上进行了改进,引入了多尺度训练和Batch Normalization等技术,并扩展了模型的检测能力(YOLO9000)来识别9000种类别。

YOLOv3

研发团队:Joseph Redmon, Ali Farhadi

  • 机构:华盛顿大学
  • 发布时间:2018年
  • 简介:YOLOv3进一步改进了网络结构,引入了残差网络和多尺度特征金字塔,使其在精度和速度上有显著提升。

YOLOv4

研发团队:Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao

  • 机构:Alexey Bochkovskiy的独立研究与台湾国立中山大学
  • 发布时间:2020年
  • 简介:YOLOv4在YOLOv3的基础上,结合了许多新技术如CSPNet、Mish激活函数和SAM,进一步提高了性能。

YOLOv5

研发团队:Glenn Jocher

  • 机构:Ultralytics LLC
  • 发布时间:2020年
  • 简介:YOLOv5由Ultralytics团队开发,注重易用性和快速部署,提供了多种预训练模型和丰富的工具,便于在各种应用中使用。

YOLOv6

研发团队:Meituan-Dianping

  • 机构:美团
  • 发布时间:2022年
  • 简介:YOLOv6专注于工业应用中的高效目标检测,优化了模型的推理速度和精度,适合在生产环境中部署。

YOLOv7

研发团队:Wong Kin-Yiu, Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao

  • 机构:台湾国立中山大学
  • 发布时间:2022年
  • 简介:YOLOv7进一步优化了网络架构和训练策略,使得模型在速度和精度上都达到了新的高度。

YOLOv8

研发团队:Ultralytics LLC

  • 机构:Ultralytics LLC
  • 发布时间:2023年
  • 简介:YOLOv8延续了YOLOv5的开发理念,通过改进的架构和训练方法,进一步提升了目标检测的性能和效率。

YOLOv9

研发团队:Ultralytics LLC

  • 机构:Ultralytics LLC
  • 发布时间:2024年
  • 简介:YOLOv9在YOLOv8的基础上,针对大规模数据集和复杂场景进行了优化,提供了更高的检测精度和速度。

YOLOv10

研发团队:Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han, Guiguang Ding

  • 机构:清华大学
  • 发布时间:2024年
  • 简介:YOLOv10通过优化模型架构和消除非极大值抑制(NMS),显著提升了实时目标检测的性能和效率。

这些不同版本的YOLO模型在各自的时代都对目标检测技术做出了重要贡献,推动了这一领域的发展。各个版本在精度、速度和易用性上都有不同的侧重点,以满足不同应用场景的需求。

相关推荐

  1. React

    2024-06-12 02:04:01       38 阅读
  2. 【实践】Filebeats的

    2024-06-12 02:04:01       5 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 02:04:01       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 02:04:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 02:04:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 02:04:01       18 阅读

热门阅读

  1. 2024年,计算机相关专业还值得选择吗?

    2024-06-12 02:04:01       12 阅读
  2. YDT .netcore学习笔记

    2024-06-12 02:04:01       8 阅读
  3. Android应用图标到应用显示过程

    2024-06-12 02:04:01       11 阅读
  4. element-plus ui的使用说明

    2024-06-12 02:04:01       14 阅读
  5. 数据分析------统计学知识点(四)

    2024-06-12 02:04:01       11 阅读
  6. C++构建MVC学生信息管理系统

    2024-06-12 02:04:01       8 阅读
  7. GIT生成SSH公钥图文教程

    2024-06-12 02:04:01       12 阅读