【数据集】【YOLO】【目标检测】yolo数据集,yolo视觉检测系统详细实战训练步骤!

该文章已生成可运行项目,

博客内容概述

  • 包括YOLO格式数据集和Pascal VOC格式数据集,含图像原文件和标注文件,几百张到几千张不等,含有国内外图片数据。

  • 针对目标检测,YOLO系列模型训练,分类训练等。

  • 目标检测算法集研发,含有目标检测yolo完整代码,QT界面完整代码

  • yolo目标检测,完整标注数据集+项目代码

  • 目前完整数据集目录如下文所示!

一、数据集列表

文章底部名片或主页私信获取数据集~

部分数据集目录如下:

数据集数据集
道路积水识别数据集道路积水识别数据集(分割)
道路裂缝识别数据集道路结冰识别数据集
道路油污识别数据集道路垃圾识别数据集
交通事故识别数据集水面垃圾识别数据集
电动车头盔佩戴识别数据集安全帽识别数据集
抽烟识别数据集口罩佩戴识别数据集
火灾和烟雾识别数据集树木倒塌识别数据集
摔跤识别数据集水面船只识别数据集
水面船只识别数据集 (卫星遥感图像)行人车辆识别数据集
车辆分类识别数据集 (vehicle 分类,含 person 类别)无人机车辆分类识别数据集
红绿灯识别数据集人群密集识别数据集
游泳识别数据集井盖开启、破损识别数据集
牛、羊、马分类识别数据集人员睡岗、玩手机识别数据集
无人机行人识别数据集_1无人机行人识别数据集_2
牛只识别数据集道路积雪结冰识别数据集
羊识别数据集光伏识别数据集
光伏板缺陷识别数据集病虫害识别数据集
害虫识别数据集灭火器识别数据集
垃圾分类识别数据集反光衣识别数据集
水藻识别数据集施工地工人安全穿戴识别数据集(安全帽反光衣安全鞋)
猫狗识别数据集食品分类识别数据集
海洋垃圾识别数据集水面船舶分类识别数据集
挖掘机识别数据集工地工程车识别数据集
救生衣穿戴识别数据集人员行为识别数据集(站、坐、躺、摔倒)
家具识别数据集水果分类识别数据集(分割)
水果分类识别数据集(目标检测)航拍水面漂浮物识别数据集
无人机设备检测数据集垂钓识别数据集
手势监测数据集垃圾是否可回收识别数据集
监控吸烟玩手机识别数据集明厨亮灶鼠患识别数据集
航拍车辆识别数据集航拍树木识别数据集
氧气瓶识别数据集电线杆杂物识别数据集
电动车进电梯识别数据集自行车识别数据集
航拍光伏识别数据集航拍船舶识别数据集
衣服分类识别数据集玉米作物识别数据集
占道经营摆摊识别数据集建筑垃圾识别数据集
猪检测数据集猪行为动作识别数据集
农作物病害识别数据集(多分类)电力塔识别数据集
纸箱识别数据集共享单车识别数据集
马行为状态识别数据集水稻病害识别数据集
蓝莓成熟度识别数据集草莓成熟度识别数据集
人员高空作业识别数据集

学生课堂行为识别数据集

汽车车牌识别数据集武器刀具识别数据集
路面病害识别数据集海洋生物识别数据集
花卉分类识别数据集中药材识别数据集

    注:部分数据集还没有发布文章,但是博主已经整理完成 !!!!!

    二、基于深度学习的检测系统

    优质视觉检测系统:

    检测系统检测系统
    基于深度学习的道路积水检测系统道路积水识别数据集(分割)
    基于深度学习的道路裂缝检测系统基于深度学习的道路结冰检测系统
    道路油污识别数据集基于深度学习的道路垃圾检测系统
    基于深度学习的交通事故检测系统基于深度学习的水面垃圾检测系统
    基于深度学习的电动车头盔佩戴检测系统基于深度学习的安全帽检测系统
    基于深度学习的人员吸烟检测系统基于深度学习的口罩佩戴检测系统
    基于深度学习的火灾烟雾检测系统基于深度学习的树木倒塌检测系统
    基于深度学习的人员摔倒检测系统基于深度学习的水面船只检测系统
    基于深度学习的遥感船舶检测系统基于深度学习的行人车辆检测系统
    基于深度学习的车辆分类检测系统基于深度学习的多分类车辆检测系统
    基于深度学习的交通信号灯检测系统基于深度学习的人员密集聚众检测系统
    基于深度学习的人员游泳溺水检测系统基于深度学习的井盖丢失破损检测系统
    基于深度学习的动物分类检测系统基于深度学习的人员睡岗玩手机检测系统
    基于深度学习的航拍行人检测系统基于深度学习的航拍行人检测系统2
    基于深度学习的牛只计数与检测系统基于深度学习的道路积雪结冰检测系统
    基于深度学习的羊只计数与检测系统基于深度学习的光伏板检测系统
    基于深度学习的光伏板缺陷检测系统基于深度学习的农业病虫害检测系统
    基于深度学习的害虫检测系统基于深度学习的消防灭火器检测系统
    基于深度学习的垃圾分类检测系统基于深度学习的反光衣穿戴检测系统
    基于深度学习的水面水藻检测系统基于深度学习的工地安全穿戴检测系统(安全帽反光衣安全鞋)
    基于深度学习的猫狗分类检测系统基于深度学习的食品分类检测系统
    基于深度学习的海洋垃圾检测系统基于深度学习的水面船舶分类检测系统
    基于深度学习的工地挖掘机检测系统基于深度学习的工地工程车检测系统
    基于深度学习的救生衣穿戴检测系统基于深度学习的人员姿势检测系统(站坐躺摔倒)
    基于深度学习的家具分类检测系统水果分类识别数据集(分割)
    基于深度学习的水果分类检测系统基于深度学习的航拍水面漂浮物检测系统
    基于深度学习的无人机设备检测系统基于深度学习的水面垂钓检测系统
    基于深度学习的人体手势检测系统基于深度学习的可回收/不可回收垃圾检测系统
    基于深度学习的吸烟玩手机行为检测系统基于深度学习的明厨亮灶鼠患检测系统
    基于深度学习的航拍车辆分类检测系统基于深度学习的航拍树木检测系统
    基于深度学习的氧气瓶检测系统基于深度学习的电线杆杂物检测系统
    基于深度学习的电动车进电梯检测系统基于深度学习的车道自行车检测系统
    基于深度学习的航拍光伏板检测系统基于深度学习的航拍船舶检测系统
    基于深度学习的服饰分类检测系统基于深度学习的玉米作物检测系统
    基于深度学习的摆摊占道经营检测系统基于深度学习的建筑垃圾废料检测系统
    基于深度学习的猪计数与检测系统基于深度学习的猪只行为动作检测系统
    基于深度学习的农作物病害检测系统(最全植物种类)基于深度学习的电力塔检测系统
    基于深度学习的纸箱检测系统基于深度学习的共享单车检测系统
    基于深度学习的马行为状态检测系统基于深度学习的水稻病害检测系统
    基于深度学习的蓝莓成熟度检测系统基于深度学习的草莓成熟度检测系统
    基于深度学习的人员高空作业检测系统基于深度学习的学生课堂行为检测系统
    基于深度学习的汽车车牌检测系统基于深度学习的武器刀具检测系统
    基于深度学习的路面病害检测系统基于深度学习的海洋生物检测系统
    基于深度学习的花卉分类检测系统基于深度学习的中药材检测系统

    三、视觉检测系统实战训练过程

    1、导入训练数据

    下载YOLOv8项目压缩包,解压在任意本地workspace文件夹中。

    下载YOLOv8预训练模型,导入到ultralytics-main项目根目录下。

    ​​​​​

    ultralytics-main项目根目录下,创建data文件夹,并在data文件夹下创建子文件夹:Annotations、images、imageSets、labels,其中,将文件夹下所有pascal VOC格式的XML文件手动导入到Annotations文件夹中,将文件夹下所有JPG格式的图像数据导入到images文件夹中,imageSets和labels两个文件夹不导入数据。

    data目录结构如下:

    data/

    ——Annotations/   //存放xml文件

    ——images/          //存放jpg图像

    ——imageSets/

    ——labels/

    整体项目结构如下所示:

    ​​

    2、数据分割

    首先在ultralytics-main目录下创建一个split_train_val.py文件,运行文件之后会在imageSets文件夹下将数据集划分为训练集train.txt、验证集val.txt、测试集test.txt,里面存放的就是用于训练、验证、测试的图片名称。

    import os
    import random
    
    trainval_percent = 0.9
    train_percent = 0.9
    xmlfilepath = 'data/Annotations'
    txtsavepath = 'data/ImageSets'
    total_xml = os.listdir(xmlfilepath)
    
    num = len(total_xml)
    list = range(num)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(list, tv)
    train = random.sample(trainval, tr)
    
    ftrainval = open('data/ImageSets/trainval.txt', 'w')
    ftest = open('data/ImageSets/test.txt', 'w')
    ftrain = open('data/ImageSets/train.txt', 'w')
    fval = open('data/ImageSets/val.txt', 'w')
    
    for i in list:
        name = total_xml[i][:-4] + '\n'
        if i in trainval:
            ftrainval.write(name)
            if i in train:
                ftrain.write(name)
            else:
                fval.write(name)
        else:
            ftest.write(name)
    
    ftrainval.close()
    ftrain.close()
    fval.close()
    ftest.close()

    3、数据集格式化处理

    在ultralytics-main目录下创建一个voc_label.py文件,这段代码是用于处理图像标注数据,将其从XML格式(通常用于Pascal VOC数据集)转换为YOLO格式。

    convert_annotation函数

    • 这个函数读取一个图像的XML标注文件,将其转换为YOLO格式的文本文件。

    • 它打开XML文件,解析树结构,提取图像的宽度和高度。

    • 然后,它遍历每个目标对象(object),检查其类别是否在classes列表中,并忽略标注为困难(difficult)的对象。

    • 对于每个有效的对象,它提取边界框坐标,进行必要的越界修正,然后调用convert函数将坐标转换为YOLO格式。

    • 最后,它将类别ID和归一化后的边界框坐标写入一个新的文本文件。

    import xml.etree.ElementTree as ET
    import os
    from os import getcwd
    
    sets = ['train', 'val', 'test']
    classes = ['labels'] # 根据标签名称填写类别
    abs_path = os.getcwd()
    print(abs_path)
    
    
    def convert(size, box):
        dw = 1. / (size[0])
        dh = 1. / (size[1])
        x = (box[0] + box[1]) / 2.0 - 1
        y = (box[2] + box[3]) / 2.0 - 1
        w = box[1] - box[0]
        h = box[3] - box[2]
        x = x * dw
        w = w * dw
        y = y * dh
        h = h * dh
        return x, y, w, h
    
    
    def convert_annotation(image_id):
        in_file = open('data/Annotations/%s.xml' % (image_id), encoding='UTF-8')
        out_file = open('data/labels/%s.txt' % (image_id), 'w')
        tree = ET.parse(in_file)
        root = tree.getroot()
        size = root.find('size')
        w = int(size.find('width').text)
        h = int(size.find('height').text)
        for obj in root.iter('object'):
            difficult = obj.find('difficult').text
            cls = obj.find('name').text
            if cls not in classes or int(difficult) == 1:
                continue
            cls_id = classes.index(cls)
            xmlbox = obj.find('bndbox')
            b = (float(xmlbox.find('xmin').text),
                 float(xmlbox.find('xmax').text),
                 float(xmlbox.find('ymin').text),
                 float(xmlbox.find('ymax').text))
            b1, b2, b3, b4 = b
            # 标注越界修正
            if b2 > w:
                b2 = w
            if b4 > h:
                b4 = h
            b = (b1, b2, b3, b4)
            bb = convert((w, h), b)
            out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
    
    
    wd = getcwd()
    for image_set in sets:
        if not os.path.exists('data/labels/'):
            os.makedirs('data/labels/')
        image_ids = open('data/ImageSets/%s.txt' % (image_set)).read().strip().split()
        list_file = open('data/%s.txt' % (image_set), 'w')
        for image_id in image_ids:
            list_file.write(abs_path + '/data/images/%s.jpg\n' % (image_id))
            convert_annotation(image_id)
        list_file.close()

    4、修改数据集配置文件

    在ultralytics-main目录下创建一个data.yaml文件

    train: data/train.txt
    val: data/val.txt
    test: data/test.txt
    
    nc: 1 # 填写类别数
    
    names: ['labels']  # 要和voc_label.py中的类别数目顺序一模一样

    5、执行命令

    执行train.py

    model = YOLO('yolov8s.pt')
    results = model.train(data='data.yaml', epochs=200, imgsz=640, batch=16, workers=0)

    也可以在终端执行下述命令:

    yolo train data=data.yaml model=yolov8s.pt epochs=200 imgsz=640 batch=16 workers=0 device=0

    6、模型预测 

    你可以选择新建predict.py预测脚本文件,输入视频流或者图像进行预测。

    代码如下:

    import cv2
    from ultralytics import YOLO
    
    # Load the YOLOv8 model
    model = YOLO("./best.pt") # 自定义预测模型加载路径
    
    # Open the video file
    video_path = "./demo.mp4" # 自定义预测视频路径
    cap = cv2.VideoCapture(video_path) 
    
    # Get the video properties
    frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fps = cap.get(cv2.CAP_PROP_FPS)
    
    # Define the codec and create VideoWriter object
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')  # Be sure to use lower case
    out = cv2.VideoWriter('./outputs.mp4', fourcc, fps, (frame_width, frame_height)) # 自定义输出视频路径
    
    # Loop through the video frames
    while cap.isOpened():
        # Read a frame from the video
        success, frame = cap.read()
    
        if success:
            # Run YOLOv8 inference on the frame
            # results = model(frame)
            results = model.predict(source=frame, save=True, imgsz=640, conf=0.5)
    
            results[0].names[0] = "道路积水"
            # Visualize the results on the frame
            annotated_frame = results[0].plot()
    
            # Write the annotated frame to the output file
            out.write(annotated_frame)
    
            # Display the annotated frame (optional)
            cv2.imshow("YOLOv8 Inference", annotated_frame)
    
            # Break the loop if 'q' is pressed
            if cv2.waitKey(1) & 0xFF == ord("q"):
                break
        else:
            # Break the loop if the end of the video is reached
            break
    
    # Release the video capture and writer objects
    cap.release()
    out.release()
    cv2.destroyAllWindows()

    也可以直接在命令行窗口或者Annoconda终端输入以下命令进行模型预测:

    yolo predict model="best.pt" source='demo.jpg'

    文章底部或主页私信获取数据集~

    四、YOLO视觉检测系统

    1、功能介绍

    1. 模型管理

    支持自定义上传模型文件,一键加载所选模型,基于 YOLO 框架进行推理。

    2. 图片检测

        - 支持上传本地图片文件,自动完成格式校验。

        - 对上传图片进行目标检测,检测结果以带有边框和标签的图片形式返回并展示。

        - 检测结果可下载保存。

    3. 视频检测与实时流

        - 支持上传本地视频文件,自动完成格式校验。

        - 对视频逐帧检测,检测结果通过 MJPEG 流实时推送到前端页面,用户可边看边等。

        - 支持摄像头实时检测(如有接入摄像头)。

    4. 置信度阈值调节

        - 前端可实时调整检测置信度阈值,动态影响检测结果。

        - 阈值调整后,后端推理自动应用新阈值,无需重启。

    5. 日志与状态反馈

        - 前端集成日志区,实时显示模型加载、推理、文件上传等操作的进度与结果。

        - 检测异常、错误信息及时反馈,便于排查。

        - 一键清空日志,笔面长期占用内存。

    2、创建环境并安装依赖:

    conda create -n ultralytics-env python=3.10
    conda activate ultralytics-env
    pip install -r requirements.txt

    3、启动项目

    python app.py

    打开浏览器访问:http://localhost:5000

    4、效果展示

    4.1、推理效果

    以红绿灯为例:(详情效果如下)

    4.2、日志文本框

    4.3、摄像头检测

    以海洋生物检测为例,效果如下:

    5、前端核心页面代码

    <!doctype html>
    <html lang="zh-CN">
    
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width,initial-scale=1">
        <title>视觉检测系统 - Web UI</title>
        <link rel="stylesheet" href="/static/style.css">
        <link rel="icon" href="/favicon.ico">
    </head>
    
    <body>
        <div class="container main-flex">
            <!-- 左侧内容区 -->
            <div class="left-content">
                <header>
                    <h1>YOLO电线杆检测系统</h1>
                    <div id="currentModelDisplay" class="modelDisplay" title="当前模型">当前模型:未上传模型</div>
                </header>
                <main>
                    <div class="videoPanel">
                        <div class="pane">
                            <h3>原图 / 视频</h3>
                            <div class="preview" id="srcPreview">预览区</div>
                        </div>
                        <div class="pane">
                            <h3>检测结果</h3>
                            <div class="preview" id="detPreview">检测结果</div>
                        </div>
                    </div>
                    <section class="logArea">
                        <div class="logHeader">
                            <h3>日志</h3>
                        </div>
                        <div class="logInner">
                            <div id="logs" class="logs"></div>
                        </div>
                    </section>
                </main>
            </div>
            <!-- 右侧按钮栏 -->
            <aside class="right-bar">
                <!-- 1. 模型上传/加载区 -->
                <section class="model-section">
                    <button id="uploadModelBtn" class="ghost">上传模型
                        <input id="modelFileInput" type="file" accept=".pt" title="选择 .pt 模型文件">
                    </button>
                    <button id="loadModel">加载模型</button>
                </section>
    
                <!-- 2. 检测方式选择区 -->
                <section class="detect-mode-section">
                    <div class="detect-mode-title">请选择检测方式</div>
                    <div class="detect-mode-radio-group">
                        <label><input type="radio" name="detectMode" value="upload" checked> 图片/视频</label>
                        <label><input type="radio" name="detectMode" value="camera"> 摄像头</label>
                    </div>
                    <div id="detectModeUpload" class="detect-mode-panel">
                        <div class="uploaded-file-name">
                            <span id="uploadedFileName" class="placeholder">未选择文件</span>
                        </div>
                        <div style="height: 22px;"></div>
                        <button id="uploadBtn">上传文件
                            <input id="fileInput" type="file" accept="image/*,video/*" title="上传图片或视频" aria-label="上传图片或视频">
                        </button>
                    </div>
                    <div id="detectModeCamera" class="detect-mode-panel" style="display:none;">
                        <button id="cameraDetectBtn" class="ghost">开启摄像头</button>
                        <div id="cameraPreview" class="camera-preview">
                            <video id="localCameraVideo" autoplay muted playsinline></video>
                            <div class="camera-controls">
                                <button id="stopCameraBtn" class="ghost">关闭摄像头</button>
                            </div>
                        </div>
                    </div>
                    <div class="confWrap">
                        <label class="conf">置信度
                            <input id="confRange" type="range" min="0.01" max="0.99" step="0.01" value="0.5">
                            <input id="confValue" type="number" min="0.01" max="0.99" step="0.01" value="0.5">
                        </label>
                    </div>
                </section>
    
                <!-- 3. 操作按钮区 -->
                <section class="action-btn-section">
                    <button id="startBtn" disabled class="start">开始检测</button>
                    <button id="stopBtn" disabled class="stop">停止</button>
                    <button id="clearLogs" class="ghost">清空日志</button>
                </section>
            </aside>
        </div>
        <script src="/static/app.js"></script>
    </body>
    
    </html>

    6、代码获取

    文章底部名片或私信获取系统源码和数据集~

    更多数据集请查看

    以上内容均为原创。

    本文章已经生成可运行项目
    ### YOLO 数据集 下载 和 示例 YOLO(You Only Look Once)是一种高效的目标检测算法,广泛应用于各种领域。为了训练和测试基于 YOLO 的模型,通常需要准备相应的数据集。以下是关于 YOLO 数据集的相关信息以及如何获取这些数据集。 #### 1. 常见的 YOLO 数据集 - **COCO 数据集**: COCO 是目前最常用的大规模目标检测数据集之一,包含超过 200K 张图像和 80 类对象标注[^3]。该数据集可以转换为 YOLO 格式并用于训练。 - **Pascal VOC 数据集**: Pascal VOC 提供了多种类别的物体标注,并支持 VGG 组织的标准格式。通过简单的脚本处理,可将其转化为 YOLO 所需的数据结构[^4]。 - **自定义数据集 (如鲜花数据集)**: 用户提到的一个具体例子是鲜花检测数据集,它包含了桃花、梨花和玫瑰花三种类别,由 LabelImg 工具完成标注工作。此数据集中既有 JPG 图像又有对应的标签文件,分为 VOC 和 YOLO 两种格式存储[^1]。 #### 2. 如何下载 YOLO 数据集? 对于公开可用的数据集,可以通过官方链接或者第三方平台进行访问: - COCO 数据集可以从其官网 https://cocodataset.org/#home 获取完整的版本; - Pascal VOC 则有多个年份的选择,在 http://host.robots.ox.ac.uk/pascal/VOC/ 上提供不同版本的历史存档; - 自定义的小型项目专用数据集可能托管于个人博客、GitHub 库或是学术论文附录里——比如前述提及到的那个花卉样本集合即发布在 优快云 平台上[^1]。 #### 3. 使用 Python 脚本来加载预训练模型并对新图片做预测 当已经准备好合适的数据源之后,则可以根据实际需求调用相应框架实现功能扩展。例如下面展示了一段利用 Ultralytics 开发团队维护下的 PyTorch 实现版 YOLO 进行推理操作的基础代码片段[^2]: ```python from ultralytics import YOLO # 加载已有的最佳权重参数构成的新实例化对象 model = YOLO("runs/train/exp2/weights/best.pt") # 对指定路径中的单张或多张输入图像执行前向传播计算过程, # 同时设置额外选项控制输出行为 results = model.predict( source="test_images/", # 输入待测目录或单独文件名字符串形式表示 save=True, # 是否保留绘制边界框后的可视化结果副本 imgsz=640, # 推理阶段调整分辨率大小,默认正方形裁剪填充模式 conf=0.25 # 只显示置信度得分高于阈值的对象候选区域 ) ``` 以上述方式快速搭建起基础应用环境后即可进一步探索更复杂的应用场景。 ---
    评论 11
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    CV小涵

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值