当前位置: 首页 > news >正文

【从视频到数据集:焦糖玛奇朵的魔法工具使用说明】

焦糖玛奇朵的魔法工具使用说明

焦糖玛奇朵的魔法工具,实现了从视频到高质量数据的半自动流水生产线工程。
其开发初衷是为了高效清洗数据集以快速迭代模型。
如果使用中发现有任何可以改进的地方欢迎留言或私信我。
小白如果需要可以找我要打包的exe,有自己环境的可以参考前文代码一键运行。

目前主要适配YOLO框架。

本文档说明3 个数据集工具的用途、启动方式、使用流程、依赖环境和常见问题。

工具概览

工具入口脚本推荐启动方式用途
VideoToYolovideo_to_yolo_tool.pyrun_video_to_yolo_yolov8.bat视频抽帧、ONNX 自动标注、生成 YOLO 数据集、类别统计与数据平衡
DatasetCleanerdataset_clean_tool.pyrun_dataset_cleaner_yolov8.bat逐目标查看裁剪图,快速修正类别、移动脏图、移出需重标图片
QuickModelViewerquick_model_viewer.pyrun_quick_model_viewer_yolov8.bat快速加载 ONNX 模型和图片,直接可视化检测框

推荐使用桌面快捷方式启动:

  • VideoToYolo
  • DatasetCleaner-yolov8
  • QuickModelViewer

如果快捷方式失效,可以直接双击项目目录中的.bat文件。

依赖环境

当前最稳定的启动方式是使用已有 conda 环境:

C:\Users\zhang\.conda\envs\yolov8

主要依赖:

python opencv-python numpy Pillow PyYAML onnxruntime / onnxruntime-gpu tkinter

启动脚本会先激活yolov8环境,再补充 ONNX Runtime、CUDA、torch 相关 DLL 搜索路径。

不要直接双击.py文件,尤其是涉及 ONNX 推理的工具。直接双击可能会用到系统默认 Python,导致动态链接库加载失败。

1. VideoToYolo

用途

VideoToYolo 是数据集前置工具,用于把视频转换成 YOLO 检测数据集。

它可以完成:

  • 选择视频目录
  • 按固定帧间隔抽帧
  • 生成images
  • 整理/保留videos
  • 使用 ONNX 模型自动标注
  • 生成labels
  • 生成dataset.yaml
  • 把模型没有检出任何目标的图片移到empty_images
  • 统计各类别数量
  • 随机移出某一类的纯类别图片,用于数据平衡

输出目录结构

选择一个数据集目录后,工具会生成或使用:

dataset_root/ videos/ images/ labels/ empty_images/ class_balance_removed/ dataset.yaml

说明:

  • videos:原始视频目录。
  • images:抽帧后、参与训练的图片。
  • labels:YOLO txt 标签。
  • empty_images:模型没有检出任何目标的图片,会从images移到这里,不生成 txt。
  • class_balance_removed:类别平衡时被移出的图片和标签,不会物理删除。
  • dataset.yaml:YOLO 训练配置。

视频抽帧

  1. 点击选择视频/数据集目录
  2. 设置图片名前缀
  3. 设置每多少帧抽一帧
  4. 选择图片格式,一般用jpg
  5. 点击开始抽帧生成 images

抽帧命名规则:

图片名前缀_视频序号_帧序号.jpg

示例:

efall_0520_3_24.jpg

注意:图片名会避免中文和特殊字符,尽量保证训练和跨平台迁移稳定。

自动标注

  1. 点击选择 ONNX 模型
  2. 设置置信度NMS IoU输入尺寸
  3. 如果模型没有类别 metadata,在类别框中手动填写类别名。
  4. 点击开始自动标注 images

类别名可以写成:

standing fall bending

也可以用逗号分隔:

standing,fall,bending

自动标注完成后:

  • 有目标的图片保留在images,生成对应 txt 到labels
  • 没有目标的图片移到empty_images
  • 自动生成或刷新dataset.yaml
  • 日志中会输出类别统计。

类别统计

点击统计 labels 类别数量后,日志会显示:

类别统计: label文件数: 145,空txt: 0 0: standing | 目标数 220 | 出现图片数 121 | 仅含该类图片数 43 1: fall | 目标数 3 | 出现图片数 3 2: bending | 目标数 141 | 出现图片数 102

含义:

  • 目标数:该类别框的总数量。
  • 出现图片数:有该类别的图片数量。
  • 仅含该类图片数:整张图只包含该类别,不包含其他类别。

随机移出单类别图片

用于处理某个类别严重过多的问题。

例如 Standing 太多,希望随机移出 90% 的“仅包含 Standing 的图片”:

  1. 类别ID0
  2. 移出百分比90
  3. 随机种子可保持默认。
  4. 点击随机移出仅包含该类别的图片

工具只会移出“标签中全部目标都是该类别”的图片。只要图片包含其他类别,就会保留。

移出的数据会放到:

class_balance_removed/class_0_standing_90pct/ images/ labels/ manifest.csv

这不是物理删除,可以手动恢复。

效果图区域

VideoToYolo 主界面

抽帧与自动标注日志



类别统计与随机移出


2. DatasetCleaner

用途

DatasetCleaner 是人工快速清洗工具,用于逐个查看 YOLO 标注目标。

它可以完成:

  • 加载 YOLO 数据集
  • 加载训练 yaml 中的类别名
  • 显示原图场景
  • 显示当前目标 20% 扩框裁剪图
  • 在裁剪图右侧用大色块显示类别号和类别名
  • 快速修改当前目标类别
  • 把脏图移到_delete_
  • 把缺漏标图片移到relabel
  • 跨图片连续切换目标

输入数据结构

默认读取:

dataset/ images/ train/ val/ test/ labels/ train/ val/ test/ dataset.yaml

也支持没有train/val/test的简单结构:

dataset/ images/ labels/ dataset.yaml

图片和标签按相对路径对应:

images/a.jpg -> labels/a.txt images/train/a.jpg -> labels/train/a.txt

使用流程

  1. 点击选择 dataset
  2. 点击选择 yaml
  3. 左侧选择图片,或用上一张/下一张切换。
  4. 查看原图场景和当前目标裁剪图。
  5. 如果类别错误,点击右侧类别按钮。
  6. 如果整张图不适合训练,点击删除原图
  7. 如果图片目标有漏标,点击需重新标

类别修正

类别按钮显示真实 YOLO 类别号:

0: standing 1: fall 2: bending

点击后会立即修改当前图片对应的.txt文件。

修改的是当前目标所在行的第一个字段,也就是 class id。bbox 坐标不变。

图片移动规则

删除原图不是真的删除,会移动到:

dataset/_delete_/images/ dataset/_delete_/labels/

需重新标会移动到:

dataset/relabel/images/ dataset/relabel/labels/

目录层级会尽量保持原来的相对路径。

目标切换逻辑

  • 当前图最后一个目标点下一个:跳到下一张图第一个目标。
  • 当前图第一个目标点上一个:跳到上一张图最后一个目标。
  • 当前图没有目标时:上一个/下一个会直接切图。

快捷键:

1-5: 分配类别 0-4 Left / Right: 切换目标 PageUp / PageDown: 切换图片

效果图区域

DatasetCleaner 主界面


目标裁剪与类别色块


3. QuickModelViewer

用途

QuickModelViewer 是快速验证 ONNX 模型效果的小工具。

它可以完成:

  • 选择 ONNX 模型
  • 选择单张图片
  • 选择图片文件夹
  • 快速推理并画框
  • 显示类别号、类别名、置信度
  • 调整 conf、iou、imgsz
  • 上一张/下一张快速浏览

使用流程

  1. 点击选择 ONNX 模型
  2. 点击选择图片选择图片文件夹
  3. 设置confiouimgsz
  4. 点击重新推理或切换图片查看效果。

如果 ONNX 模型带有类别 metadata,工具会自动读取类别名。

如果没读到,可以手动填写:

standing,fall,bending

推理方式

QuickModelViewer 的界面进程只负责显示。

真正的 ONNX 推理会通过独立子进程执行,这样可以绕开onnxruntime-gpu在 Tkinter 进程中偶发的 DLL 初始化问题。

效果图区域

QuickModelViewer 主界面

模型推理结果

常见问题与注意事项

1. onnxruntime 动态链接库初始化失败

常见报错:

DLL load failed while importing onnxruntime_pybind11_state 动态链接库(DLL)初始化例程失败

建议:

  • 不要直接双击.py
  • 使用对应.bat或桌面快捷方式启动。
  • 确认启动窗口中 Python 是:
C:\Users\zhang\.conda\envs\yolov8\python.exe

VideoToYolo 和 QuickModelViewer 已经采用子进程推理方式,正常情况下可以绕过这个问题。

2. 打开的是旧窗口

如果刚修改过工具,但效果没有变化,很可能旧窗口还开着。

建议:

  1. 关闭所有旧工具窗口。
  2. 重新双击桌面快捷方式。
  3. 再测试新功能。

3. 图片名不要包含中文

视频原名经常包含中文、括号、空格等字符。

训练集图片建议使用 ASCII 命名,例如:

efall_0521_1_0.jpg efall_0521_1_15.jpg

VideoToYolo 抽帧时已经默认使用:

图片名前缀_视频序号_帧序号.jpg

4. 空图片是否参与训练

当前策略是不参与。

自动标注时,如果模型没有检出任何目标,图片会移动到:

empty_images/

并且不会生成空 txt。

5. 随机移出不是物理删除

类别平衡时移出的数据会保存在:

class_balance_removed/

可以手动恢复。

6. DatasetCleaner 修改类别是立即写入

点击类别按钮后,.txt会立即被改写。

如果误点,可以再次点正确类别改回来。

7. dataset.yaml 的 train/val

VideoToYolo 默认生成:

train:imagesval:images

这是为了快速验证和小数据集制作方便。

正式训练前,如果需要 train/val/test 拆分,可以后续再拆目录并修改 yaml。

8. ONNX 输出格式兼容性

当前自动标注和快速验证主要兼容常见 YOLOv8 ONNX 输出:

[1, 4 + num_classes, N]

也兼容部分已带 NMS 的输出:

[x1, y1, x2, y2, score, class]

如果某个模型可加载但结果明显不对,优先检查:

  • 输入尺寸是否正确。
  • 类别名数量是否正确。
  • 模型是否是 YOLO 检测模型。
  • 导出 ONNX 时是否带了特殊后处理。

推荐工作流

从视频到训练集

  1. 使用 VideoToYolo 抽帧。
  2. 使用 VideoToYolo 自动标注。
  3. 使用 VideoToYolo 统计类别。
  4. 必要时随机移出过多类别。
  5. 使用 QuickModelViewer 抽查模型标注效果。
  6. 使用 DatasetCleaner 人工清洗类别和脏图。
  7. 训练 YOLO 模型。

快速验证模型

  1. 使用 QuickModelViewer 选择模型。
  2. 选择几张典型图片。
  3. 调整 conf/iou。
  4. 判断模型是否适合作为自动标注模型。
http://www.jsqmd.com/news/871011/

相关文章:

  • 如何快速部署大麦自动抢票工具:面向开发者的完整技术指南
  • 上海婚纱摄影口碑排名2026:在营十家实查 - eee888
  • 使用Nodejs和Taotoken为前端应用集成AI对话能力
  • 还在为歌词同步烦恼吗?5分钟学会用LRC Maker制作专业级滚动歌词
  • 如何用BetterNCM安装器3分钟打造个性化网易云音乐:终极指南
  • OHIF医学影像查看器架构解析:构建零足迹DICOM解决方案的技术实现
  • Spotify-Downloader:一键搞定Spotify音乐永久收藏的终极方案
  • 2026版最新AWVS安装使用教程(非常详细)零基础入门到精通,收藏这一篇就够了
  • 如何高效安装HS2-HF Patch:HoneySelect2专业级汉化与MOD整合完整指南
  • 苏州婚纱摄影哪家好?本地人选3个硬标准 - eee888
  • Online3DViewer完整实战:浏览器端3D模型可视化解决方案深度解析
  • res-downloader终极配置指南:轻松实现跨平台资源嗅探与下载
  • 黑苹果配置终极简化:OpCore Simplify三步搞定OpenCore EFI
  • Win11Debloat:彻底解放Windows性能的智能优化革命
  • Faster-Whisper-GUI中文简繁体转换的3种解决方案深度解析
  • 震惊!原来论文还能这样搞定?2026降AIGC平台推荐合集
  • VutronMusic:如何打造你的跨平台高颜值音乐中心
  • 单片机串口实验
  • 戴森球计划工厂蓝图:革命性工厂配置架构的5大技术突破
  • 十七、MYSQL MGR高可用
  • 揭秘TTS播客爆款背后的声学密码:从WAV采样率到情感韵律建模的7层技术栈
  • 洛雪音乐音源:免费打造你的全网音乐图书馆,告别平台割裂
  • 终极指南:如何用calendar.js轻松实现农历公历智能转换
  • Windows系统res-downloader HTTPS证书配置实战:从原理到高级优化的专业指南
  • 如何在电脑上免费畅玩Switch游戏:Ryujinx模拟器完全指南
  • 硬核教程:用Gemini境像站构建端到端自动化办公工作流,告别重复操作(国内免费镜像实测)
  • KMS智能激活终极教程:三步永久激活Windows与Office的完整指南
  • TryOPC社区平台
  • 2026免费AI搜索工具爆发元年(仅3款支持RAG实时知识注入,附配置教程)
  • AI科技日报-2026年5月23日