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

YOLOv5实战:从零开始训练自定义数据集(附完整代码和数据集)

YOLOv5实战从零构建自定义数据集训练全流程指南1. 为什么选择YOLOv5进行目标检测在计算机视觉领域目标检测一直是最具挑战性的任务之一。传统方法需要复杂的多阶段处理流程而YOLOYou Only Look Once系列算法彻底改变了这一局面。作为该系列的最新工业级实现YOLOv5在保持实时性的同时提供了令人惊艳的检测精度。与早期版本相比YOLOv5有几个突出优势更快的训练速度利用PyTorch框架和优化后的网络结构训练效率提升40%以上更小的模型体积最小版本YOLOv5s仅14MB适合嵌入式设备部署更简单的使用体验提供完整的Python API和CLI工具链更强的扩展性支持分类、检测、分割多任务学习# YOLOv5模型家族性能对比 models { YOLOv5n: {size:1.9, mAP:28.0, FPS:450}, YOLOv5s: {size:14, mAP:37.4, FPS:300}, YOLOv5m: {size:41, mAP:45.4, FPS:150}, YOLOv5l: {size:89, mAP:49.0, FPS:90}, YOLOv5x: {size:166, mAP:50.7, FPS:60} }2. 数据准备与标注规范2.1 构建高质量数据集的要点成功的模型训练始于优质数据。对于自定义数据集需要关注数据多样性覆盖不同光照条件、角度和背景场景类别平衡每个类别的样本数量应相对均衡标注一致性边界框应紧密贴合物体边缘适当规模建议每个类别至少500-1000个标注样本提示实际项目中80%的时间会花在数据收集和清洗上。宁可多花时间确保数据质量也不要急于开始训练。2.2 使用LabelImg进行数据标注LabelImg是最流行的开源标注工具之一支持YOLO格式输出# 安装LabelImg pip install labelImg # 启动标注工具 labelImg images/ predefined_classes.txt标注文件示例YOLO格式0 0.435 0.512 0.120 0.245 # 类别ID x_center y_center width height 1 0.678 0.342 0.210 0.3202.3 数据集目录结构规范的目录结构能避免后续路径问题custom_dataset/ ├── images/ │ ├── train/ │ │ ├── image1.jpg │ │ └── ... │ └── val/ │ ├── image2.jpg │ └── ... └── labels/ ├── train/ │ ├── image1.txt │ └── ... └── val/ ├── image2.txt └── ...3. 环境配置与模型训练3.1 快速搭建训练环境使用conda创建隔离的Python环境conda create -n yolo python3.8 conda activate yolo pip install torch torchvision git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt3.2 准备数据集配置文件创建data/custom.yaml# 训练和验证图像路径 train: ../custom_dataset/images/train val: ../custom_dataset/images/val # 类别数量 nc: 2 # 类别名称 names: [person, car]3.3 启动模型训练基础训练命令python train.py --img 640 --batch 16 --epochs 100 \ --data data/custom.yaml --weights yolov5s.pt关键参数解析参数说明推荐值--img输入图像尺寸根据硬件选择320/640--batch批次大小GPU显存决定--epochs训练轮次50-300--weights预训练权重yolov5s.pt/yolov5m.pt4. 模型评估与优化技巧4.1 解读关键评估指标训练完成后在runs/train/exp目录下会生成评估结果mAP0.5IoU阈值为0.5时的平均精度mAP0.5:0.95IoU从0.5到0.95的平均精度Precision预测为正样本中真实正样本比例Recall真实正样本中被正确预测的比例4.2 常见问题解决方案问题1过拟合增加数据增强--augment参数使用更大的模型如yolov5m添加Dropout层问题2低召回率检查标注质量降低置信度阈值--conf-thres增加正样本数量问题3训练不稳定减小学习率--lr 0.01→0.001使用预热学习率--warmup-epochs尝试Adam优化器4.3 高级训练技巧迁移学习冻结部分层加速训练python train.py --freeze 10 # 冻结前10层多尺度训练提升模型鲁棒性python train.py --multi-scale超参数优化使用遗传算法搜索python train.py --evolve5. 模型部署与应用5.1 模型导出为不同格式YOLOv5支持多种导出格式from models.experimental import attempt_load model attempt_load(best.pt) # 加载训练好的模型 model.export(formatonnx) # 导出为ONNX格式常用导出选项ONNX适合TensorRT加速TorchScriptPyTorch原生格式CoreML苹果设备部署TF.js浏览器端运行5.2 使用训练好的模型进行推理基础检测脚本import torch # 加载模型 model torch.hub.load(ultralytics/yolov5, custom, pathbest.pt) # 执行检测 results model(test.jpg) # 显示结果 results.show()5.3 性能优化技巧TensorRT加速提升推理速度3-5倍python export.py --weights best.pt --include engine --device 0量化压缩减小模型体积model.fuse() # 融合ConvBN层 model.qconfig torch.quantization.get_default_qconfig(fbgemm)多线程处理利用CPU多核优势from threading import Thread def detect(img): results model(img) return results Thread(targetdetect, args(img,)).start()6. 实战案例工业零件检测6.1 特殊场景处理技巧在工业检测中常遇到以下挑战小目标检测提高输入分辨率--img 1280使用更密集的anchor boxes添加特征金字塔网络FPN遮挡问题增加旋转和遮挡数据增强使用注意力机制结合上下文信息类间相似性设计更精细的损失函数添加难例挖掘使用度量学习6.2 完整项目示例# 工业零件检测流水线 def industrial_pipeline(): # 1. 初始化模型 model torch.hub.load(ultralytics/yolov5, custom, best.pt) # 2. 设置相机 cap cv2.VideoCapture(rtsp://industrial_camera) while True: # 3. 获取帧 ret, frame cap.read() # 4. 执行检测 results model(frame) # 5. 后处理 for *box, conf, cls in results.xyxy[0]: if conf 0.7: # 高置信度检测 draw_box(frame, box, cls) # 6. 显示结果 cv2.imshow(Detection, frame) if cv2.waitKey(1) 27: # ESC退出 break7. 进阶技巧与未来方向7.1 模型融合策略加权框融合WBFfrom ensemble_boxes import weighted_boxes_fusion boxes [pred1, pred2, pred3] scores [scores1, scores2, scores3] labels [labels1, labels2, labels3] weights [1, 1.5, 0.5] # 模型权重 iou_thr 0.5 new_boxes, new_scores, new_labels weighted_boxes_fusion( boxes, scores, labels, weightsweights, iou_thriou_thr)测试时增强TTApython detect.py --augment7.2 自监督学习应用当标注数据有限时可以尝试SimCLR对比学习预训练MoCo动量对比学习BYOL自引导表征学习# 自监督预训练示例 from lightly.models import SimCLR model SimCLR(resnetresnet-18) trainer pl.Trainer(max_epochs10) trainer.fit(model, train_loader)7.3 部署优化实践边缘设备部署流程模型量化FP32→INT8图优化算子融合/常量折叠硬件特定加速NPU/DSP内存优化动态加载// 示例LibTorch C部署 auto model torch::jit::load(model.pt); torch::Tensor img_tensor load_image(input.jpg); auto output model.forward({img_tensor}).toTensor();在完成YOLOv5的实战训练后我发现模型在夜间低光照条件下的表现仍有提升空间。通过添加专门的低光照增强数据和调整BN层参数检测精度提升了约15%。这提醒我们针对特定场景的微调往往比单纯增加数据量更有效。

相关文章:

YOLOv5实战:从零开始训练自定义数据集(附完整代码和数据集)

YOLOv5实战:从零构建自定义数据集训练全流程指南 1. 为什么选择YOLOv5进行目标检测 在计算机视觉领域,目标检测一直是最具挑战性的任务之一。传统方法需要复杂的多阶段处理流程,而YOLO(You Only Look Once)系列算法彻…...

【2026开发者必抢资源】:MCP+VS Code插件集成模板库(含CI/CD自动化验证脚本)

第一章:MCP协议与VS Code插件生态融合的2026技术演进全景MCP(Microsoft Communication Protocol)已从早期的轻量级进程间通信规范,演进为支持跨语言、跨运行时、带语义版本协商与零信任认证能力的开放协议栈。2026年,V…...

动漫角色AI绘画实战:用灵毓秀-牧神-造相Z-Turbo轻松创作同人作品

动漫角色AI绘画实战:用灵毓秀-牧神-造相Z-Turbo轻松创作同人作品 你是不是也曾经被《牧神记》里那个清冷孤傲、剑意凛然的灵毓秀深深吸引?想为她创作同人图,却苦于没有绘画功底,或者觉得通用AI模型画出来的角色总是不对味&#x…...

HunyuanVideo-Foley镜像可维护性:模型热更新、服务滚动重启机制

HunyuanVideo-Foley镜像可维护性:模型热更新、服务滚动重启机制 1. 镜像概述与核心价值 HunyuanVideo-Foley私有部署镜像是专为视频生成与音效生成任务优化的完整解决方案。基于RTX 4090D 24GB显存和CUDA 12.4深度调优,该镜像提供了开箱即用的生产环境…...

ChatTTS本地部署实战:解决HTTP 422错误的完整指南

最近在本地部署 ChatTTS 进行语音合成时,不少朋友都踩到了 HTTP 422 这个“坑”。这个错误码“Unprocessable Entity”听起来有点抽象,简单说就是服务器理解你的请求,但觉得内容不对,拒绝处理。这通常意味着我们的请求参数没通过后…...

突破视觉限制:RuView如何通过WiFi信号实现无接触人体感知

突破视觉限制:RuView如何通过WiFi信号实现无接触人体感知 【免费下载链接】RuView Production-ready implementation of InvisPose - a revolutionary WiFi-based dense human pose estimation system that enables real-time full-body tracking through walls usi…...

大模型推理加速实战:KV Cache原理与StreamingLLM优化技巧

大模型推理加速实战:KV Cache原理与StreamingLLM优化技巧 当你在深夜调试一个生成式AI应用时,突然发现响应速度从最初的2秒逐渐恶化到10秒以上——这种场景对于处理长文本的开发者来说再熟悉不过了。问题的核心往往不在于模型本身的算力,而在…...

AlwaysOnTop效率工具:重新定义多任务处理的窗口管理方案

AlwaysOnTop效率工具:重新定义多任务处理的窗口管理方案 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 当你同时处理三个文档时是否经常迷失窗口?在编程…...

Nano-Banana实操手册:Streamlit缓存机制加速连续多图生成响应速度

Nano-Banana实操手册:Streamlit缓存机制加速连续多图生成响应速度 你是不是也遇到过这种情况?用AI工具生成图片时,每次点击“生成”都要等上十几秒甚至更久,特别是需要连续生成多张图片来对比效果时,那种等待的感觉简…...

QQ音乐GUI自动化测试

脑图步骤导入的包各个包的作用包名核心作用pywinauto0.6.9Windows 桌面应用自动化,用来操作 QQ 音乐窗口、按钮、输入框等 UI 元素pytest8.3.2Python 测试框架,用来组织、执行的自动化测试用例PyYAML6.0.1解析 YAML 配置文件,用来读取你代码里…...

UniHacker:革新性Unity全平台功能解锁工具的全流程解析

UniHacker:革新性Unity全平台功能解锁工具的全流程解析 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker 一、核心价值:Unity开发者的功…...

多模态政策决策模型解析:美联储加息触发条件的量化框架

摘要:本文通过宏观经济多因子模型,结合劳动力市场指标、核心通胀路径与政策决策函数,分析美联储加息所需满足的关键条件,并构建其背后的利率决策逻辑。一、政策决策建模:美联储加息的核心触发机制在AI宏观决策模型&…...

Qwen3.5-4B-Claude-Opus基础教程:FastAPI路由设计与前后端交互逻辑

Qwen3.5-4B-Claude-Opus基础教程:FastAPI路由设计与前后端交互逻辑 1. 模型概述与部署架构 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是基于 Qwen3.5-4B 的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力…...

终极指南:如何在ComfyUI中快速部署WanVideo视频生成工作流

终极指南:如何在ComfyUI中快速部署WanVideo视频生成工作流 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 想在ComfyUI中实现专业的AI视频生成吗?ComfyUI-WanVideoWrappe…...

终极MusicFree使用指南:深度解析开源插件化音乐播放器

终极MusicFree使用指南:深度解析开源插件化音乐播放器 【免费下载链接】MusicFree 插件化、定制化、无广告的免费音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/mu/MusicFree 在移动音乐播放器市场被商业应用垄断的今天,你是否厌倦了…...

3步构建国标视频平台API文档:Knife4j如何提升GB28181开发效率

3步构建国标视频平台API文档:Knife4j如何提升GB28181开发效率 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 在国标视频平台开发中,API文档管理常成为技术瓶颈。手动维护文档耗时易错&am…...

7个系统优化黑科技:用Windows Cleaner实现磁盘空间高效管理

7个系统优化黑科技:用Windows Cleaner实现磁盘空间高效管理 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计…...

SEO_如何通过内容策略显著提升SEO排名?

SEO排名提升的关键在于内容策略 在当今的互联网时代,如何通过内容策略显著提升SEO排名是每一个网站运营者的一大挑战。搜索引擎优化(SEO)在提升网站流量和品牌知名度方面扮演着不可或缺的角色。本文将深入探讨如何通过科学的内容策略&#xf…...

Nginx 高可用集群与 LVS 负载均衡实战指南(场景选型对比 + 完整配置步骤 + 主备漂移部署实操)

一、Nginx vs LVSipvsadm 核心场景对比表(终极对照)对比维度Nginx(你的高可用方案)LVSipvsadm(4 层负载方案)核心定位7 层应用层负载均衡4 层内核级负载均衡适用协议HTTP/HTTPS(Web、API、前端&…...

Rancher Desktop技术架构深度解析:桌面Kubernetes开发环境的实现原理与实践指南

Rancher Desktop技术架构深度解析:桌面Kubernetes开发环境的实现原理与实践指南 【免费下载链接】rancher-desktop Container Management and Kubernetes on the Desktop 项目地址: https://gitcode.com/gh_mirrors/ra/rancher-desktop 在当今云原生开发领域…...

C4D动画渲染农场怎么选?

选择C4D渲染农场一定要看2个方面:价格和是否需要排队。因为C4D是用显卡渲染,显卡的价格比CPU贵很多,而且数量也很紧缺。而渲C4D动画又需要大量的显卡机器,导致很多农场需要排队渲染,遇到紧急项目,就很容易耽…...

计算机网络核心概念

一、计算机网络到底在做什么?本质:把数据从一台设备,可靠 / 快速地送到另一台设备。为了做到这件事,需要解决:怎么标识设备(地址)怎么找到路径(路由)怎么保证不丢、不错、…...

工频干扰消除算法实战选型指南

1. 工频干扰的工程挑战与算法选型逻辑 第一次处理心电信号时,我被示波器上那条"跳舞"的波形惊呆了——本该平稳的QRS波群上叠加着明显的50Hz正弦波,就像给心电图套了层锯齿状的枷锁。这种工频干扰在生物电信号采集、工业传感器监测等领域堪称&…...

nli-distilroberta-base商业应用:短视频脚本与品牌调性关键词逻辑匹配分析

nli-distilroberta-base商业应用:短视频脚本与品牌调性关键词逻辑匹配分析 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务,专门用于分析两段文本之间的逻辑关系。这个轻量级但强大的工具可以帮助企业快速…...

TVBoxOSC:让电视盒子管理回归简单本质的开源解决方案

TVBoxOSC:让电视盒子管理回归简单本质的开源解决方案 【免费下载链接】TVBoxOSC TVBoxOSC - 一个基于第三方项目的代码库,用于电视盒子的控制和管理。 项目地址: https://gitcode.com/GitHub_Trending/tv/TVBoxOSC 核心价值:重新定义电…...

N_m3u8DL-CLI-SimpleG:轻松下载在线视频的终极图形界面工具

N_m3u8DL-CLI-SimpleG:轻松下载在线视频的终极图形界面工具 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 想要快速下载网络上的M3U8格式视频吗?N_m3u8DL…...

SEO_资深专家揭秘长期稳定的SEO操作秘诀

SEO操作的长期稳定之道:资深专家揭秘 在当今数字化时代,搜索引擎优化(SEO)已经成为了企业在网络上获得流量和知名度的关键手段。无论是小型企业还是大型公司,都在竞争着在搜索结果中的高排名。很多人在进行SEO操作时&a…...

ChatGPT与国内大模型的技术差距解析:从架构到应用场景

ChatGPT与国内大模型的技术差距解析:从架构到应用场景 在评估大语言模型时,基准测试是衡量其综合能力的重要标尺。以MMLU(大规模多任务语言理解)和C-Eval(中文语言理解评估基准)为例,GPT-4在MM…...

工业现场组网指南:用Schneider BMXNOM0200模块实现PLC与SCADA系统的稳定通讯

工业现场组网实战:基于Schneider BMXNOM0200的PLC-SCADA高效通讯架构设计 在工业自动化领域,稳定可靠的通讯网络如同生产线的神经系统,承载着控制指令与实时数据的双向传输。作为Modicon M340系列PLC的核心通讯扩展模块,BMXNOM02…...

终极Klipper固件高级调试指南:从日志分析到性能优化的完整技术解析

终极Klipper固件高级调试指南:从日志分析到性能优化的完整技术解析 【免费下载链接】klipper Klipper is a 3d-printer firmware 项目地址: https://gitcode.com/GitHub_Trending/kl/klipper Klipper作为高性能3D打印机固件,其日志系统和调试工具…...