【详细教程】如何使用YOLOv10进行图片与视频的目标检测

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【车辆检测追踪与流量计数系统】
49.【行人检测追踪与双向流量计数系统】50.【基于YOLOv8深度学习的反光衣检测与预警系统】
51.【危险区域人员闯入检测与报警系统】52.【高压输电线绝缘子缺陷智能检测系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

简介

在这里插入图片描述

继 YOLOv8 和 YOLOv9 之后,YOLOv10也相继推出。这一突破性的迭代有望在目标检测领域实现重大飞跃。让我们深入研究细节,了解 YOLOv10 如何赋能计算机视觉的未来。

YOLOv10 擅长精确定位和识别图像和视频中的物体。这种能力构成了众多应用的支柱,包括自动驾驶汽车、先进的安全系统和强大的图像搜索引擎。然而,YOLOv10 在这些基础上引入了超越 YOLOv8 和 YOLOv9 的突破性创新。

YOLOv10 性能的关键创新:

  • 无 NMS 训练:YOLOv10 通过采用一种称为一致双重分配的新技术,消除了训练期间对非最大抑制 (NMS) 的需求。这简化了推理过程,从而显著减少了延迟,使实时对象检测速度更快。
  • 整体模型设计:YOLOv10 的架构师精心优化了模型的各个组件,将效率和准确性放在首位。这种整体方法包括轻量级分类头、独特的空间通道解耦下采样技术和秩引导块设计。其结果是一个在不牺牲计算效率的情况下实现卓越性能的模型。
  • 增强的模型能力:YOLOv10 集成了大核卷积和部分自注意力模块等尖端功能。这些改进提高了模型的性能,而不会产生大量的计算成本。这种功耗和效率之间的平衡使 YOLOv10 成为适用于更广泛计算机视觉任务的多功能工具。

通过结合这些创新,YOLOv10 将自己定位为实时对象检测的强大引擎。它能够提供卓越的准确性和效率,为各种计算机视觉应用带来令人兴奋的可能性。请继续关注 YOLOv10 如何塑造这个充满活力的领域的未来!

使用 YOLOv10 处理图像和视频

步骤 1:安装必要的库

pip install opencv-python ultralytics

第 2 步:导入库

import cv2
from ultralytics import YOLO

第 3 步:选择模型尺寸

model = YOLO("yolov10x.pt")

可以比较不同的型号并权衡它们各自的优缺点。在这种情况下,我们选择了 yolov10x.pt。

第 4 步:编写一个函数来检测图像和视频中的对象

def predict(chosen_model, img, classes=[], conf=0.5):
    if classes:
        results = chosen_model.predict(img, classes=classes, conf=conf)
    else:
        results = chosen_model.predict(img, conf=conf)

    return results

def predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1):
    results = predict(chosen_model, img, classes, conf=conf)
    for result in results:
        for box in result.boxes:
            cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])),
                          (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness)
            cv2.putText(img, f"{result.names[int(box.cls[0])]}",
                        (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10),
                        cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness)
    return img, results

predict() 功能

此函数采用三个参数:

  • chosen_model :用于预测的训练模型
  • img :要进行预测的图像
  • classes :(可选)要将预测筛选到的类名列表
  • conf :(可选)要考虑的预测的最小置信度阈值

该函数首先检查是否提供了 classes 参数。如果是,则使用 classes 参数调用该 chosen_model.predict() 方法,该参数仅将预测筛选为这些类。否则,将调用该 chosen_model.predict() 方法时不带 classes 参数,该参数将返回所有预测。

conf 参数用于筛选出置信度分数低于指定阈值的预测。这对于消除误报很有用。

该函数返回预测结果列表,其中每个结果都包含以下信息:

  • name :预测类的名称
  • conf :预测的置信度分数
  • box :预测对象的边界框

predict_and_detect() 功能

此函数采用与 predict() 函数相同的参数,但除了预测结果外,它还返回带注释的图像。

该函数首先调用该 predict() 函数以获取预测结果。然后,它循环访问预测结果,并在每个预测对象周围绘制一个边界框。预测类的名称也写在边界框上方。

该函数返回一个包含带注释的图像和预测结果的元组。

以下是这两个函数之间差异的摘要:

  • predict() 函数仅返回预测结果,而该 predict_and_detect() 函数还返回带注释的图像。
  • predict_and_detect() 函数是 predict() 函数的包装器,这意味着它在内部调用函数 predict()

第 5 步:使用 YOLOv10 检测图像中的对象

# read the image
image = cv2.imread("YourImagePath")
result_img, _ = predict_and_detect(model, image, classes=[], conf=0.5)

如果要检测特定类(可在此处找到),只需在类列表中输入对象的 ID 号即可。

第 6 步:保存并绘制结果图像

cv2.imshow("Image", result_img)
cv2.imwrite("YourSavePath", result_img)
cv2.waitKey(0)

第 7 步:使用 YOLOv10 检测视频中的对象

video_path = r"YourVideoPath"
cap = cv2.VideoCapture(video_path)
while True:
    success, img = cap.read()
    if not success:
        break
    result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)
    cv2.imshow("Image", result_img)
    
    cv2.waitKey(1)

第 8 步:保存结果视频

# defining function for creating a writer (for mp4 videos)
def create_video_writer(video_cap, output_filename):
    # grab the width, height, and fps of the frames in the video stream.
    frame_width = int(video_cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    frame_height = int(video_cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = int(video_cap.get(cv2.CAP_PROP_FPS))
    # initialize the FourCC and a video writer object
    fourcc = cv2.VideoWriter_fourcc(*'MP4V')
    writer = cv2.VideoWriter(output_filename, fourcc, fps,
                             (frame_width, frame_height))
    return writer

只需使用上面的函数和代码即可

output_filename = "YourFilename"
writer = create_video_writer(cap, output_filename)

video_path = r"YourVideoPath"
cap = cv2.VideoCapture(video_path)
while True:
    success, img = cap.read()
    if not success:
        break
    result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)
    writer.write(result_img)
    cv2.imshow("Image", result_img)
    
    cv2.waitKey(1)
writer.release()

结论

在本教程中,我们学习了如何使用 YOLOv10 检测图像和视频中的对象。如果您觉得此代码有用,感谢点赞关注。

引用

YOLOv10源码:https://github.com/THU-MIG/yolov10


好了,这篇文章就介绍到这里,感谢点赞关注,更多精彩内容持续更新中~

关注文末名片G-Z-H:【阿旭算法与机器学习】,可获取更多干货学习资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/755938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是DEQ?

DEQ (Delivered Ex Quay, Duty Paid) 是指目的港码头交货 (……指定目的港)。 这种术语规定卖方在指定目的港码头将货物交给买方处置,并且不办理进口清关手续。 DEQ适用范围 DEQ术语仅适用于海运、内河运输或多式联运,并且在目的港码头卸货时使用。如…

uniapp,uni-fab组件拖动属性,替代方案

文章目录 1. 背景2. 替代方案2.1 方案一2.2 方案二参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,其中有使用到悬浮按钮,快速开发阶段,为了能尽快上线,直接使用了uni-ui的扩展组件uni-fab,参考【1】,效果如下图: 后期,相应的界面内容增多,由于uni-fab是…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT(全名:Chat Generative Pre-trained Transformer),是OpenAI研发的一款聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够基于在预训练阶段所见…

通天星CMSV6车载监控平台CompanyList信息泄露漏洞

1 漏洞描述 通天星CMSV6车载视频监控平台是东莞市通天星软件科技有限公司研发的监控平台,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。通天星科技应用于公交车车载、校车车载、大巴车车载、物流车载、油品运输车载、警车车…

昇思25天学习打卡营第5天|MindSpore-ResNet50图像分类

MindSpore-ResNet50图像分类 CIFAR-10数据集 CIFAR-10数据集是一个广泛使用的图像分类数据集,它包含了60,000张32x32的RGB彩色图像,分为10个类别,每个类别有6,000张图像。这些类别包括飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog…

最新测评!不可错过的三款网络代理服务商

在如今数字化高速发展的时代,网络代理服务已经成为许多企业和个人在进行网络活动时不可或缺的工具。为了给大家提供更具参考价值的推荐,我们的测评团队经过深入研究和实际测试,精心挑选了三款表现出色的网络代理服务商——极光HTTP、全民HTTP…

软件工程 例题

用例图 1. 某个学生成绩管理系统的部分参与者和用例总结如下。 教务管理人员: 登录系统教师、学生名单管理学期教学计划管理成绩管理。课程分配,每次课程分配时都必须打印任课通知书 学生: 登录系统选课。 教师: 登录系统成绩管理,并…

昇思25天学习打卡营第3天|网络构建

学习目标:熟练掌握网络构建方法 了解mindspore.nn 实例构建简单的神经网络 网络模型中各层参数 昇思大模型平台 AI实验室 学习记录: 一、关于mindspore.nn 在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。cell…

如何集成CppCheck到visual studio中

1.CPPCheck安装 在Cppcheck官方网站下载最新版本1.70,官网链接:http://cppcheck.sourceforge.net/ 安装Cppcheck 2.集成步骤 打开VS,菜单栏工具->外部工具->添加,按照下图设置,记得勾选“使用输出窗口” 2.…

高效数据采集监控平台 一体化平台 数据可视化!

提高工作效率,一直是各种厂家在寻找的方法。任何一种有效且实用的方法都值得去尝试。数据采集监控平台是一种能高效处理数据的方式,其主要工作内容是从各个产生数据的仪器设备传感器中采集数据、对数据进行集中整理整合、分析、显示、绘制图表、存储、传…

ubuntu22.04速装中文输入法

附送ubuntu安装chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb

如何做互联网项目需求评估?

关于互联网项目需求评估,我们可以按照以下步骤进行: 一、确定项目主题和目标受众:这篇文章首先要明确你要评估的互联网项目的主题是什么,你的目标受众是谁?你需要对项目的背景和目的有清晰的了解。 二、项目规模和内…

将TensorFlow嵌入到Jupyter Notebook中,个人学习记录

起因是学习吴恩达机器学习过程中,在神经网络tensorflow的部分,需要在Jupyter Notebook中跑相关的代码,于是在网上找了很多资料,终于跑成功了。该笔记仅为个人学习记录,如有任何问题请见谅。 import numpy as np impor…

如何3分钟上手传得神乎其神的AI绘画!一篇文章带你搞懂!

前言 今年 AI 绘画绝对是大火的概念之一,这次加入了生财 AI 绘画小航海的船,今天是体验的第1天,那么 AI 绘画是什么呢? 简单来说就是利用 AI 实现绘画,在特定的软件或者程序中,输入一定的关键词或者指令&…

【地理库 Turf.js】

非常全面的地理库 , 这里枚举一些比较常用,重点的功能, 重点功能 提供地理相关的类:包括点,线,面等类。 测量功能:点到线段的距离,点和线的关系等。 判断功能: 点是否在…

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收,标志着这一技术在教育领域的应用取得了新的突破。项目旨在开发一个数字孪生可视化系统平台,用于哈尔滨高校大学智能制造实验室的设备模拟、监测与数据分析。项目的主要目标包括&#xff1…

【Sklearn-驯化】sklearn中决策树cart的用法,看这篇就够了

【Sklearn-驯化】sklearn中决策树cart的用法,看这篇就够了 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容文档…

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(3)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督继续为大家带来系列——小学生都能玩的语音模块,帮你一周内快速学会语音模块的使用方式,打造一个可用于智能家居、物联网领域的语音助…

算法设计与分析--随机算法作业

随机算法作业1. 顶点覆盖问题问题描述参考答案解答 2. 负载均衡算法问题描述参考答案解答 3. MAX 3-SAT题目描述参考答案解答 随机算法–徐小华 随机算法作业 1. 顶点覆盖问题 问题描述 考虑下述 顶点覆盖问题 的简单随机算法: 开始时 S ∅ While S 不是一个顶…

基于Pico和MicroPython点亮ws2812彩色灯带

基于Pico和MicroPython点亮ws2812彩色灯带 文章目录 基于Pico和MicroPython点亮ws2812彩色灯带IntroductionPracticeConclusion Introduction 点亮发光的LED灯是简单有趣的实验,点亮多个ws2812小灯串联起来的灯带,可对多个彩色小灯进行编程,…