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

保姆级教程:用LabelImg和YOLOv5 v6.0搞定你的第一个自定义目标检测模型(附完整代码)

从零开始构建YOLOv5自定义目标检测模型实战指南与避坑手册在计算机视觉领域目标检测技术正以前所未有的速度改变着我们与数字世界的交互方式。作为当前最受欢迎的实时目标检测框架之一YOLOv5以其卓越的速度-精度平衡和开发者友好特性成为工业界和学术界的首选解决方案。本文将带你完整走通自定义目标检测模型的构建全流程从数据标注到模型部署每个环节都配有可直接复用的代码片段和实战技巧。1. 环境配置与项目初始化构建目标检测模型的第一步是搭建合适的开发环境。YOLOv5对硬件要求相对友好即使使用CPU也能完成训练但拥有NVIDIA GPU将大幅提升效率。以下是经过验证的环境配置方案基础环境要求Python 3.8或更高版本推荐3.9PyTorch 1.10需与CUDA版本匹配CUDA 10.2如需GPU加速至少16GB内存处理中等规模数据集# 创建并激活conda环境推荐 conda create -n yolov5 python3.9 conda activate yolov5 # 安装PyTorch根据CUDA版本选择对应命令 pip install torch1.10.0cu113 torchvision0.11.1cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html项目目录结构对后续流程至关重要合理的组织能避免许多路径问题。建议采用如下结构yolov5-project/ ├── datasets/ # 数据集目录 │ ├── images/ # 原始图像 │ └── labels/ # 标注文件 ├── models/ # 模型配置文件 ├── utils/ # 工具脚本 └── runs/ # 训练结果自动生成重要提示所有路径务必避免使用中文和特殊字符这是许多错误的根源。Windows用户特别注意路径分隔符应使用/或双反斜杠\\2. 数据标注实战LabelImg高效使用技巧优质的数据标注是模型性能的基石。LabelImg作为最流行的图像标注工具之一支持Pascal VOC和YOLO格式输出。以下是优化后的安装与使用流程跨平台安装方案# Python通用安装方式推荐 pip install labelImg labelImg # 启动程序标注过程中的专业技巧标注质量把控边界框应紧密贴合目标边缘保留约1-2像素缓冲对遮挡目标进行合理推断标注完整轮廓保持类别标签的一致性如car不应有时大写有时小写效率提升技巧使用快捷键加速流程W创建框A/D切换图像预设标签列表保存为data/predefined_classes.txt对相似场景使用复制粘贴标注功能常见问题解决方案# 修复LabelImg保存时的编码问题Windows常见 import sys sys.setdefaultencoding(utf-8)标注完成后你将得到如下结构的数据集dataset/ ├── images/ │ ├── train/ # 训练集图像 │ └── val/ # 验证集图像 └── labels/ ├── train/ # 对应标注文件 └── val/3. 数据预处理与增强策略原始数据需要经过精心处理才能发挥最大价值。YOLOv5支持自动数据增强但合理的预处理能进一步提升模型鲁棒性。数据集划分最佳实践# 智能数据集划分脚本保持类别分布均衡 from sklearn.model_selection import train_test_split def split_dataset(image_paths, test_size0.2, val_size0.1, random_state42): # 初次分割训练临时集 train_img, temp_img train_test_split(image_paths, test_sizetest_sizeval_size, random_staterandom_state) # 二次分割验证集和测试集 val_img, test_img train_test_split(temp_img, test_sizetest_size/(test_sizeval_size), random_staterandom_state) return train_img, val_img, test_img格式转换关键代码Pascal VOC转YOLOdef convert(size, box): 将VOC格式坐标转换为YOLO格式相对坐标 dw 1./size[0] dh 1./size[1] x (box[0] box[1])/2.0 y (box[2] box[3])/2.0 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)数据增强配置建议修改data/hyps/hyp.scratch-low.yaml# 针对小数据集的增强配置 hsv_h: 0.015 # 色调增强幅度 hsv_s: 0.7 # 饱和度增强 hsv_v: 0.4 # 明度增强 degrees: 5.0 # 旋转角度范围 translate: 0.1 # 平移范围 scale: 0.5 # 缩放范围 shear: 0.0 # 剪切变换4. 模型配置与训练优化YOLOv5提供了多种预定义模型尺寸n/s/m/l/x选择取决于你的精度与速度需求。以下是各型号在COCO数据集上的表现对比模型mAP0.5参数量(M)GPU速度(ms)适用场景YOLOv5n28.41.96.3移动端/嵌入式YOLOv5s37.27.26.4平衡型首选YOLOv5m45.221.28.2中等精度需求YOLOv5l48.646.510.1高性能服务器YOLOv5x50.786.712.1极致精度自定义模型配置要点修改models/yolov5s.yaml# 关键参数调整 nc: 2 # 你的类别数 anchors: # 建议使用自动anchor计算 - [10,13, 16,30, 33,23] # P3/8 - [30,61, 62,45, 59,119] # P4/16 - [116,90, 156,198, 373,326] # P5/32高级训练技巧渐进式图像尺寸训练python train.py --img 320 --epochs 50 python train.py --img 640 --epochs 100 --weights runs/train/exp/weights/last.pt冻结骨干网络小数据集适用python train.py --freeze 10 # 冻结前10层多GPU训练python -m torch.distributed.launch --nproc_per_node 2 train.py --device 0,1训练监控与调优使用TensorBoard实时监控指标tensorboard --logdirruns/train关键指标解读mAP0.5IoU阈值为0.5时的平均精度Precision-Recall曲线平衡查准与查全Confusion Matrix分析分类错误模式5. 模型部署与性能优化训练完成的模型需要经过优化才能在实际应用中发挥价值。YOLOv5提供了多种导出选项模型导出选项对比格式优点缺点适用场景PyTorch .pt保留全部功能依赖PyTorch环境继续训练/研究TorchScript独立于Python略大C集成ONNX跨框架通用需额外优化多平台部署TensorRT极致性能复杂转换NVIDIA硬件ONNX导出示例python export.py --weights runs/train/exp/weights/best.pt --include onnx --img 640 --dynamic推理性能优化技巧半精度推理FP16model torch.load(best.pt, map_locationcuda)[model].half()批处理优化# 适当增大批处理尺寸 pred model(imgs, size640, augmentFalse, visualizeFalse)后处理优化# 调整置信度和NMS阈值 pred non_max_suppression(pred, 0.4, 0.5, agnosticFalse)6. 实战案例安全帽检测系统构建通过一个完整案例展示如何将YOLOv5应用到实际场景中。我们以建筑工地安全帽检测为例演示从数据收集到部署的全流程。数据集特色处理针对小目标优化# 修改anchors以适应小目标 anchors: - [5,6, 8,8, 10,13] - [13,15, 16,16, 19,19] - [22,22, 25,25, 30,30]处理类别不平衡# 在loss计算中加入类别权重 class_weight torch.tensor([1.0, 2.0]) # 安全帽类权重更高 criterion nn.BCEWithLogitsLoss(pos_weightclass_weight)部署方案对比方案延迟(ms)硬件成本开发难度适用场景本地服务器15-30高中固定监控点边缘设备50-100中中移动巡检云端API100-200低低多终端访问浏览器端200-500极低高实时演示性能优化前后对比优化措施mAP0.5推理速度(FPS)显存占用(MB)原始模型0.78451200 FP160.7768800 TensorRT0.7695600 剪枝量化0.72120400在实际部署中发现通过OpenVINO优化可在Intel CPU上实现30FPS的实时检测满足大多数工业场景需求。对于 Jetson Nano 等边缘设备建议使用TensorRT加速并结合模型蒸馏技术。

相关文章:

保姆级教程:用LabelImg和YOLOv5 v6.0搞定你的第一个自定义目标检测模型(附完整代码)

从零开始构建YOLOv5自定义目标检测模型:实战指南与避坑手册 在计算机视觉领域,目标检测技术正以前所未有的速度改变着我们与数字世界的交互方式。作为当前最受欢迎的实时目标检测框架之一,YOLOv5以其卓越的速度-精度平衡和开发者友好特性&…...

深入Shader变体:解决Unity CrossSection插件‘Maximum number of shader global keywords exceeded’报错

深入解析Unity Shader变体管理:从CrossSection插件报错到全局/本地关键字优化 当你在Unity项目中整合CrossSection剖切插件时,控制台突然弹出"Maximum number of shader global keywords exceeded"的红色警告,这绝非偶然。这个看似…...

5秒极速转换:让B站缓存视频重获新生的开源神器

5秒极速转换:让B站缓存视频重获新生的开源神器 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经为那些"消失"的B…...

Tiled地图编辑器终极指南:从零开始构建专业级2D游戏场景

Tiled地图编辑器终极指南:从零开始构建专业级2D游戏场景 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled Tiled是一款专为游戏开发者设计的开源2D地图编辑器,以其灵活的图块系统、无限地图编辑…...

代码生成率提升300%,发布回滚率却飙升210%?这才是2024最紧急的DevSecOps盲区!

第一章:智能代码生成 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成正从辅助编程工具演进为开发流程的核心引擎。现代大语言模型(LLM)通过理解上下文语义、项目结构和领域约束,可直接产出符合生产规范的函数级乃至模…...

别再手动处理.mat文件了!用Python+TensorFlow 1.x搞定西储大学轴承数据预处理(附完整代码)

工业设备故障诊断实战:Python高效处理西储大学轴承数据集 轴承故障诊断是工业设备预测性维护的核心环节,而西储大学轴承数据集作为该领域的基准数据集,常被用于验证各类诊断算法。但许多工程师在初次接触这个数据集时,往往会被.m…...

别再死记MobileNet结构了!用PyTorch手撕V1/V2/V3的深度可分离卷积(附代码对比)

从零实现MobileNet系列:深度可分离卷积的PyTorch实战解析 在移动端和嵌入式设备上部署神经网络模型时,我们常常面临计算资源有限的挑战。传统卷积神经网络如VGG、ResNet虽然性能优异,但其庞大的参数量和计算量使得它们难以在资源受限的环境中…...

Z-Image-GGUF提示词入门:‘主体+风格+光照+质量’四步法详解

Z-Image-GGUF提示词入门:‘主体风格光照质量’四步法详解 你是不是也遇到过这种情况:看到别人用AI生成的图片惊艳无比,自己上手一试,出来的却总是不尽人意?要么是画面模糊,要么是风格跑偏,要么…...

掌控系统散热:FanControl智能风扇控制完全指南

掌控系统散热:FanControl智能风扇控制完全指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

vLLM-v0.17.1惊艳效果:多LoRA动态切换支持千人千面模型服务

vLLM-v0.17.1惊艳效果:多LoRA动态切换支持千人千面模型服务 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一个由学术界和工业界共同维护的社区…...

用 ABAP gCTS 给自定义代码留一条可回退的路

在很多 SAP ERP 转 SAP S/4HANA 的项目里,真正让团队迟迟下不了手的,往往不是代码扫描结果本身,而是删掉以后心里没底。生产系统里确实有一大批自定义对象长期没有被执行,SAP 也明确建议通过 usage data 做 scoping,用 Custom Code Migration app 识别无用代码,并在转换阶…...

Visual C++运行库终极解决方案:告别DLL缺失的完整指南

Visual C运行库终极解决方案:告别DLL缺失的完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为"应用程序无法正常启动"的弹窗而…...

ngx_set_environment

1 定义 ngx_set_environment 函数 定义在 ./nginx-1.24.0/src/core/nginx.cchar ** ngx_set_environment(ngx_cycle_t *cycle, ngx_uint_t *last) {char **p, **env;ngx_str_t *var;ngx_uint_t i, n;ngx_core_conf_t *ccf;ngx_pool_…...

抖音批量下载器:5分钟打造你的专属素材库

抖音批量下载器:5分钟打造你的专属素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量…...

Xournal++ 终极指南:如何让手写笔记在高分辨率屏幕上清晰如纸 ✨

Xournal 终极指南:如何让手写笔记在高分辨率屏幕上清晰如纸 ✨ 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and …...

代码生成结果一致性验证难?深度解析LLM输出版本漂移的7类特征指纹,附开源比对工具链

第一章:智能代码生成代码版本对比 2026奇点智能技术大会(https://ml-summit.org) 随着大语言模型在软件开发流程中的深度集成,智能代码生成工具已从辅助补全演进为具备多轮上下文感知、跨文件推理与版本协同能力的工程级组件。不同版本的代码生成模型在…...

5个简单步骤:用Win10BloatRemover让你的Windows 10重获新生

5个简单步骤:用Win10BloatRemover让你的Windows 10重获新生 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the…...

D3KeyHelper:5分钟掌握暗黑3自动化技能连点,告别手酸提升刷图效率

D3KeyHelper:5分钟掌握暗黑3自动化技能连点,告别手酸提升刷图效率 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑…...

**发散创新:过度依赖单一编程语言导致的架构风险与重构实践**在现代软件开发中,**选择一种编程语言并深度

发散创新:过度依赖单一编程语言导致的架构风险与重构实践 在现代软件开发中,选择一种编程语言并深度绑定其生态已成为许多团队的默认策略。然而,这种“技术栈锁定”现象正悄然埋下隐患——一旦该语言在特定场景下表现乏力、维护成本飙升或社区…...

**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发

发散创新:基于Python与ROS的机器人运动控制实战解析 在现代机器人系统开发中,运动控制是实现精准操作的核心环节。本文将以 Python ROS(Robot Operating System) 为技术栈,深入剖析如何通过编程语言完成对差速驱动机器…...

如何用imFile下载工具提升你的下载效率:开源下载工具的完整使用秘籍

如何用imFile下载工具提升你的下载效率:开源下载工具的完整使用秘籍 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop 还在为下载速度慢、文件管理混乱而烦恼吗?…...

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation(以65nm PDK为例)

手把手教你用Cadence仿真验证Charge Pump的current mismatch与deviation(以65nm PDK为例) 电荷泵(Charge Pump)作为锁相环(PLL)中的关键模块,其电流匹配性能直接影响整个系统的相位噪声和杂散水…...

DS4Android:如何通过可视化学习让数据结构从抽象概念变为直观体验?

DS4Android:如何通过可视化学习让数据结构从抽象概念变为直观体验? 【免费下载链接】DS4Android 看得见的数据结构Android版---Show the Data_Structure power by Android View 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Android 你是否曾…...

告别命令行恐惧:用Stegdetect GUI版一键检测图片隐写(附敏感度调优技巧)

告别命令行恐惧:用Stegdetect GUI版一键检测图片隐写(附敏感度调优技巧) 在数字取证和信息安全领域,图片隐写分析一直是个令人头疼的问题。传统方法往往需要记忆复杂的命令行参数,对新手极不友好。今天要介绍的Stegdet…...

告别点击跳转烦恼:给Zotero+Word/WPS添加文献引用超链接的两种方法

科研写作效率革命:Zotero文献引用超链接的终极解决方案 每次修改论文时,最让人抓狂的莫过于在几十页的文档中来回翻找参考文献。明明Zotero已经帮我们自动生成了完美的引用格式,却还要手动在正文和参考文献列表之间来回切换——这种低效的操作…...

JAX自动微分超快

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 JAX自动微分:解锁AI训练的超高速引擎目录JAX自动微分:解锁AI训练的超高速引擎 引言 一、技术原理&#x…...

告别重复劳动:5分钟掌握Python剪映自动化,视频剪辑效率提升10倍!

告别重复劳动:5分钟掌握Python剪映自动化,视频剪辑效率提升10倍! 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 你是否厌倦了每天重复同样的视频剪…...

从零构建Unity NavMesh:烘焙、代理与动态寻路实战

1. 从零开始理解Unity NavMesh 如果你玩过RPG或者策略游戏,一定对NPC自动寻路的功能不陌生。想象一下,当你在游戏中点击某个位置,角色会自动绕过障碍物走到目的地——这就是导航寻路系统的魔力。Unity内置的NavMesh系统,正是实现这…...

你的LoRA微调为什么效果差?可能是这5个参数没调对(LLaMA-Factory实战避坑)

你的LoRA微调为什么效果差?可能是这5个参数没调对(LLaMA-Factory实战避坑) 当你在LLaMA-Factory中进行LoRA微调时,是否遇到过模型表现不如预期的情况?许多开发者在使用LoRA这种高效的参数高效微调方法时,常…...

深入VS编译后台:从cl.exe到link.exe,一次C++代码的完整‘旅程’都发生了什么?

深入VS编译后台:从cl.exe到link.exe,一次C代码的完整‘旅程’都发生了什么? 当你在Visual Studio中点击"生成"按钮时,背后其实隐藏着一系列精密的工序。这就像把一块原石雕琢成精美的艺术品,需要经过多道工序…...