首页 > 其他分享 >基于YOLO8的目标检测系统:开启智能视觉识别之旅

基于YOLO8的目标检测系统:开启智能视觉识别之旅

时间:2024-07-21 08:59:22浏览次数:10  
标签:gr 之旅 scan 检测 img 目标 YOLO8 视觉

文章目录

在线体验



  • 基于opencv的摄像头实时目标检测

快速开始

  1. 创建anaconda环境
conda create -n XXX python=3.10
  1. pytorch安装
# 查看cuda版本(示例为:11.8)
nvcc -V

# 安装对应版本的pytorch
# 官网:https://pytorch.org/

# pip安装
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# conda安装,建议配置conda国内镜像源
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

  1. 其他依赖包安装
pip install -r ./requirements-target-dec.txt
  1. 网页界面如下,可在示例图片中快速进行试验

一、项目介绍篇

在人工智能和机器学习的浪潮中,YOLO8作为目标检测领域的一颗新星,以其卓越的性能和灵活性,受到了广泛关注。本项目基于YOLO8算法,构建了一个高效、易用的目标检测系统,旨在为用户提供一个强大的本地部署解决方案。通过精心设计的界面和丰富的功能,用户可以轻松实现目标检测任务,无论是在网页端还是本地计算机上。

1.1 YOLO8

  • YOLO8是新一代的目标检测算法,由YOLO(You Only Look Once)系列发展而来。它继承了YOLO算法快速、高效的特点,并在此基础上进行了改进和优化,以适应更复杂的目标检测任务。YOLO8通过引入新的网络结构和训练策略,提高了检测的准确性和鲁棒性,尤其是在小目标和遮挡目标的检测上表现出色。
  • YOLO8算法的关键创新包括:
    1. 改进的网络结构:YOLO8采用了更深层次的卷积神经网络,增强了特征提取的能力,使得模型能够更准确地识别和定位目标。
    2. 优化的锚框机制:通过优化锚框的设计,YOLO8能够更好地适应不同形状和大小的目标,减少了误检和漏检的情况。
    3. 增强的数据增强技术:YOLO8使用了更先进的数据增强方法,提高了模型对不同环境和条件的泛化能力。
    4. 高效的训练策略:YOLO8引入了新的损失函数和训练技巧,加快了模型的收敛速度,同时保持了检测性能。
  • YOLO8的这些改进使得它在实时性要求高的应用场景中,如视频监控、自动驾驶等领域,具有广泛的应用前景。尽管YOLO8的具体细节和性能指标尚未完全公开,但其在目标检测领域的潜力已经引起了业界的广泛关注。

1.2 ultralytics

  • Ultraalytics是一家专注于计算机视觉和人工智能技术的公司,以其开发的高性能目标检测模型YOLO(You Only Look Once)而闻名。YOLO模型以其快速和准确的目标检测能力在业界获得了广泛认可,特别是在需要实时处理的场合,如视频监控、自动驾驶和工业自动化等领域。
  • Ultraalytics的YOLO算法通过单次前向传播即可预测图像中的物体位置和类别,与传统的多步骤检测方法相比,大大提高了检测速度。随着YOLO算法的迭代发展,Ultraalytics不断推出新版本,如YOLOv3、YOLOv4、YOLOv5等,每个版本都在准确性、速度和易用性方面进行了优化。
  • 除了目标检测,Ultraalytics还提供其他AI解决方案,包括图像分割、数据标注工具和模型部署服务。公司致力于推动AI技术的创新和应用,帮助企业实现智能化转型。Ultraalytics的技术和产品因其高效性和可靠性,在全球范围内拥有众多用户和合作伙伴。

1.3 模块介绍

image.png

1.3.1 scan_task

  • 构建了执行的任务,用于为scan_taskflow提供可执行对象

1.3.2 scan_taskflow.py

  • 基于open-cv2的本地界面系统

1.3.3 target_dec_app.py

  • gradio页面代码

二、核心代码介绍篇

2.1 target_dec_app.py

import cv2
import gradio as gr
from scan_task import ScanTargetDec

scan_model = ScanTargetDec(version='YOLOv8n', use_gpu=False)


def target_scan(frame):
    frame, _ = scan_model.run(frame, text_size=50)
    '''run方法其他可传参数
    text_color: 显示文字颜色 默认:(0, 0, 255)
    text_size: 显示文字大小 默认:20
    y_pos: y轴位置偏移量 默认:0
    '''
    return frame


if __name__ == '__main__':
    examples = [
        [cv2.imread('./examples/image_detection.jpg')]]
    with gr.Blocks() as demo:
        with gr.Tabs():
            # 图片目标检测
            with gr.Tab(label='图片目标检测') as tab1:
                gr.Markdown(value="# 图片目标检测")
                with gr.Row(variant="panel"):
                    with gr.Column():
                        img_input1 = gr.Image(label="上传图片输入", mirror_webcam=False)
                        with gr.Row(variant="panel"):
                            submit_bn1 = gr.Button(value='上传')
                            clear_bn1 = gr.ClearButton(value='清除')
                    img_out1 = gr.Image(label="目标检测输出", mirror_webcam=False)

                # 添加演示用例
                gr.Examples(label='上传示例图片', examples=examples, fn=target_scan,
                            inputs=[img_input1],
                            outputs=[img_out1],
                            cache_examples=False)

            submit_bn1.click(fn=target_scan, inputs=img_input1, outputs=img_out1)
            clear_bn1.add([img_input1, img_out1])

            # 摄像头实时目标检测
            with gr.Tab(label='摄像头实时目标检测') as tab3:
                gr.Markdown(value="# 摄像头实时目标检测")
                with gr.Column(variant='panel') as demo_scan:
                    with gr.Row(variant="panel"):
                        img_input3 = gr.Image(label="实时输入", sources=["webcam"],
                                              mirror_webcam=False, streaming=True)
                        img_out3 = gr.Image(label="目标检测输出", sources=["webcam"],
                                            mirror_webcam=False, streaming=True)
            img_input3.stream(fn=target_scan, inputs=img_input3, outputs=img_out3)

    demo.launch()

  1. 此段代码主要是用于生成前端页面,以及配置按钮点击事件触发时的回调函数
  2. 可配置参数包括:use_gputext_colortext_sizey_pos
    1. use_gpu: 是否使用gpu
    2. text_color:定位的二维码,显示文字颜色 默认:(0, 0, 255)
    3. text_size:定位的二维码,显示文字大小 默认:20
    4. y_pos:y轴位置偏移量 默认:0

2.2 scan_taskflow.py

class ScanTaskflow:
    def __init__(self, task: str, video_index=0, win_name='Scan XXX', win_width=800, win_height=600, **kwargs):
        ..初始化摄像头扫描对象,设置窗口尺寸等属性..

    def run(self, **kwargs):
        ..开启摄像头,进行检测任务..


if __name__ == '__main__':
    # 启动默认的目标检测系统
    scanTaskflow = ScanTaskflow(task='scan_target_dec',
                                version='YOLOv8n', use_gpu=True,
                                video_index=0, win_name='target_dec',
                                win_width=640, win_height=480)
    scanTaskflow.run(text_color=(0, 255, 0), y_pos=0)

  1. __init__ 用于预加载项目所需模型
  2. run 是检测系统的核心方法,用于将视频的实时帧进行检测

三、结语

  • 本项目提供了一个基于YOLO8算法的目标检测系统,它不仅易于部署和使用,而且具备高性能和高灵活性。我们相信,随着技术的不断进步和社区的积极参与,本项目将能够为更多用户提供价值,推动目标检测技术的发展。如果您在使用过程中遇到任何问题,欢迎在ModelScope创空间-基于YOLO8的目标检测系统上提出issue,我们会及时为您解答。
  • 希望本项目能够成为您在目标检测领域的得力助手。如果您觉得本项目对您有帮助,请给项目点个star,并持续关注我的个人主页ModelBulider的个人主页

标签:gr,之旅,scan,检测,img,目标,YOLO8,视觉
From: https://blog.csdn.net/weixin_44063529/article/details/140307418

相关文章

  • BRAVE:扩展视觉编码能力,推动视觉-语言模型发展
    视觉-语言模型(VLMs)在理解和生成涉及视觉与文本的任务上取得了显著进展,它们在理解和生成结合视觉与文本信息的任务中扮演着重要角色。然而,这些模型的性能往往受限于其视觉编码器的能力。例如,现有的一些模型可能对某些图像特征视而不见,或者在处理图像时产生视觉幻觉,这些局限严重......
  • 走进数组的奇妙之旅
    引言:在前几篇文章中,我们深入探讨了函数的奥秘。在讲述函数知识的过程中,我们邂逅了一个新的概念,你或许还记得在演示strcpy函数时,出现的这行代码:char1[20]={0};。当时,你是否感到好奇,心中是否升起了疑问:这是什么呢?没错,这正是我们本篇文章的主角——数组!在数字的世界里,数组就......
  • 视觉探秘:sklearn中聚类标签的可视化之道
    视觉探秘:sklearn中聚类标签的可视化之道在数据科学领域,聚类分析是一种无监督学习方法,用于将数据集中的样本划分为若干个组或“簇”,使得同一组内的样本相似度高,而不同组之间的样本相似度低。Scikit-Learn(简称sklearn),作为Python中广受欢迎的机器学习库,不仅提供了多种聚类算法......
  • 《白话机器学习的数学》第1章——开始二人之旅
    1.1对机器学习的兴趣1.2机器学习的重要性    1.无论是过去还是现在,计算机都特别擅长处理重复的任务。所以计算机能够比人类更高效地读取大量的数据、学习数据的特征并从中找出数据的模式。这样的任务也被称为机器学习或者模式识别,以前人们就有用计算机处理这种任......
  • 【Linux】Linux进程揭秘:从理论到实践的深度探索之旅
    目录前言:操作系统简介概念设计目的理解进程:程序的执行之魂进程和程序的联系与区别 描述进程-PCB进程的标识符 进程状态 状态转换僵尸进程孤儿进程前言:操作系统简介概念操作系统(英语:OperatingSystem,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软......
  • Facebook 开源 C++ 框架 Ocean:用于计算机视觉和增强现实
    Facebook开源C++框架Ocean:用于计算机视觉和增强现实来源:OSCHINA编辑: 局2024-07-1211:05:00 0Facebook开源了其内部用于计算机视觉(CV)和增强现实(AR) 应用程序的框架Ocean,用于执行各种任务,包括计算机视觉、几何、媒体处理、网络和渲染。Ocean......
  • 微调 Florence-2 - 微软的尖端视觉语言模型
    微调Florence-2-微软的尖端视觉语言模型 Florence-2是微软于2024年6月发布的一个基础视觉语言模型。该模型极具吸引力,因为它尺寸很小(0.2B及0.7B)且在各种计算机视觉和视觉语言任务上表现出色。Florence开箱即用支持多种类型的任务,包括:看图说话、目标检测、O......
  • 开源 C++ 框架 Ocean:用于计算机视觉和增强现实
    Facebook开源了其内部用于计算机视觉(CV)和增强现实(AR) 应用程序的框架Ocean,用于执行各种任务,包括计算机视觉、几何、媒体处理、网络和渲染。Ocean主要使用C++编写,且不依赖于特定平台:Ocean是一个独立于平台的框架,支持所有主要操作系统,包括iOS、Android、Quest......
  • 【草履虫都能学会】03 单目视觉
    目录前言一、坐标系1.笛卡尔坐标系2.图像坐标系3.线阵相机坐标系4.相机坐标系5.平台传感器二、普通光学相机的成像模型1.平面相机2.线阵相机3.鱼眼相机4.通用几何成像模型三、其他补充1.空间后方交会2.正算和反算3.灭点和灭线4.相机检校小结前言  ......
  • 自动填充验证码,懒人福音,对视觉障碍的朋友太友善了
    自动填充验证码,懒人福音,对视觉障碍的朋友太友善了一、安装插件Tampermonkey油猴(篡改侯)脚本插件https://www.tampermonkey.net/这个怎么安装就不详细介绍了二、安装验证码解析脚本https://greasyfork.org/zh-CN/scripts/418942-万能验证码自动输入-升级版点击进去直接点......