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

yolov26模型训练(使用yolov5样本训练)

1、样本转换原始文件路径为/dataSharing/otherTrain/dataset/yolo26_data/Annotations/ # xmlimages/ # jpg第 0 步确认你的数据是否一一对应cd /dataSharing/otherTrain/dataset/yolo26_data # 看看有多少图片/标注 ls images | wc -l ls Annotations | wc -l # 随机抽几个看看是否同名 python3 - PY import os, random imgs [f for f in os.listdir(images) if f.lower().endswith((.jpg,.jpeg,.png))] xmls set([os.path.splitext(f)[0] for f in os.listdir(Annotations) if f.lower().endswith(.xml)]) sample random.sample(imgs, min(20, len(imgs))) bad [f for f in sample if os.path.splitext(f)[0] not in xmls] print(sample missing xml:, bad) PY如果sample missing xml为空说明基本OK。第 1 步把 VOC(xml) 转 YOLO并自动划分 train/val在/dataSharing/otherTrain/dataset/yolo26_data下新建脚本cd /dataSharing/otherTrain/dataset/yolo26_data nano voc_to_yolo_split.py把下面代码粘进去可直接用import os, random, shutil import xml.etree.ElementTree as ET from pathlib import Path ROOT Path(/dataSharing/otherTrain/dataset/yolo26_data) IMG_DIR ROOT / images ANN_DIR ROOT / Annotations OUT_IMG_TRAIN ROOT / images / train OUT_IMG_VAL ROOT / images / val OUT_LBL_TRAIN ROOT / labels / train OUT_LBL_VAL ROOT / labels / val VAL_RATIO 0.2 SEED 42 def parse_xml(xml_path: Path): tree ET.parse(xml_path) root tree.getroot() size root.find(size) if size is None: raise ValueError(f{xml_path} missing size) w int(size.findtext(width)) h int(size.findtext(height)) objs [] for obj in root.findall(object): name obj.findtext(name) if not name: continue difficult obj.findtext(difficult) if difficult and difficult.strip() 1: continue bnd obj.find(bndbox) if bnd is None: continue xmin float(bnd.findtext(xmin)) ymin float(bnd.findtext(ymin)) xmax float(bnd.findtext(xmax)) ymax float(bnd.findtext(ymax)) xmin max(0.0, xmin) ymin max(0.0, ymin) xmax min(float(w), xmax) ymax min(float(h), ymax) if xmax xmin or ymax ymin: continue objs.append((name, xmin, ymin, xmax, ymax)) return w, h, objs def voc_to_yolo(w, h, xmin, ymin, xmax, ymax): xc (xmin xmax) / 2.0 / w yc (ymin ymax) / 2.0 / h bw (xmax - xmin) / w bh (ymax - ymin) / h return xc, yc, bw, bh def main(): assert IMG_DIR.exists(), IMG_DIR assert ANN_DIR.exists(), ANN_DIR # 收集图片 imgs [p for p in IMG_DIR.iterdir() if p.suffix.lower() in [.jpg,.jpeg,.png] and p.is_file()] # 排除已经分出来的 train/val 目录 imgs [p for p in imgs if p.parent IMG_DIR] if not imgs: raise RuntimeError(fNo images found in {IMG_DIR}) # 收集类别扫一遍 xml classes set() missing_xml 0 for img in imgs: xml ANN_DIR / (img.stem .xml) if not xml.exists(): missing_xml 1 continue _, _, objs parse_xml(xml) for name, *_ in objs: classes.add(name) classes sorted(list(classes)) if not classes: raise RuntimeError(No classes parsed from XML. Check your xml format.) class2id {c:i for i,c in enumerate(classes)} # 写 classes.txt (ROOT / classes.txt).write_text(\n.join(classes), encodingutf-8) # 划分 train/val random.seed(SEED) random.shuffle(imgs) n_val int(len(imgs) * VAL_RATIO) val_imgs imgs[:n_val] train_imgs imgs[n_val:] # 创建输出目录 for p in [OUT_IMG_TRAIN, OUT_IMG_VAL, OUT_LBL_TRAIN, OUT_LBL_VAL]: p.mkdir(parentsTrue, exist_okTrue) def write_one(img_path: Path, out_img_dir: Path, out_lbl_dir: Path): xml_path ANN_DIR / (img_path.stem .xml) if not xml_path.exists(): return False, missing_xml w, h, objs parse_xml(xml_path) lines [] for name, xmin, ymin, xmax, ymax in objs: cid class2id[name] xc, yc, bw, bh voc_to_yolo(w, h, xmin, ymin, xmax, ymax) # 保险限制在0~1 xc min(max(xc, 0.0), 1.0) yc min(max(yc, 0.0), 1.0) bw min(max(bw, 0.0), 1.0) bh min(max(bh, 0.0), 1.0) lines.append(f{cid} {xc:.6f} {yc:.6f} {bw:.6f} {bh:.6f}) # 没有目标也要写空txtYOLO允许 (out_lbl_dir / f{img_path.stem}.txt).write_text(\n.join(lines), encodingutf-8) # 复制图片也可以改成移动shutil.move shutil.copy2(img_path, out_img_dir / img_path.name) return True, ok stats {ok:0, missing_xml:0} for img in train_imgs: ok, reason write_one(img, OUT_IMG_TRAIN, OUT_LBL_TRAIN) stats[reason] stats.get(reason, 0) (0 if ok else 1) if ok: stats[ok] 1 for img in val_imgs: ok, reason write_one(img, OUT_IMG_VAL, OUT_LBL_VAL) stats[reason] stats.get(reason, 0) (0 if ok else 1) if ok: stats[ok] 1 # 生成 data.yamlUltralytics/YOLO系列通用 data_yaml fpath: {ROOT} train: images/train val: images/val names: for i, c in enumerate(classes): data_yaml f {i}: {c}\n (ROOT / data.yaml).write_text(data_yaml, encodingutf-8) print(Done.) print(Classes:, classes) print(Stats:, stats) print(Generated:, ROOT/data.yaml, ROOT/classes.txt) if __name__ __main__: main()保存退出后执行python3 voc_to_yolo_split.py执行完成后你会得到labels/train/*.txtlabels/val/*.txtimages/train/*.jpgimages/val/*.jpgdata.yamlclasses.txt你的原始images/*.jpg不会被删脚本是 copy2。如果你想节省空间我可以使用“移动版”。第 2 步快速检查转换结果是否正确cd /dataSharing/otherTrain/dataset/yolo26_data # 统计数量 find images/train -type f | wc -l find labels/train -type f | wc -l find images/val -type f | wc -l find labels/val -type f | wc -l # 随机看一个标注文件 ls labels/train | head head -n 5 labels/train/$(ls labels/train | shuf -n 1)如果images/train和labels/train数量一致基本没问题。第 3 步新建一个虚拟环境训练 YOLOv26Ultralytics 方式第 3-1 步创建 YOLOv26 专用 conda 环境进入你想放环境的目录随便比如放在项目目录旁边conda create -n yolo26 python3.10 -y第 3-2 步激活虚拟环境conda activate yolo26激活成功后你会看到前缀(yolo26) rootxxx:#第 3-3 步安装 PyTorch最关键一步在 yolo26 环境中执行pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完马上验证python - PY import torch print(torch.__version__) print(CUDA:, torch.cuda.is_available()) print(GPU:, torch.cuda.get_device_name(0)) PY必须看到CUDA: True第 3-4 步安装 Ultralytics(清华源)pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout1000验证yolo version第 3-4步开始训练yolo26x.pt下载地址https://huggingface.co/Ultralytics/YOLO26?utm_sourcechatgpt.comyolo26n.pt下载地址https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26n.ptyolo detect train \ model./yolo26x.pt \ data./data.yaml \ imgsz640 \ epochs200 \ batch10 \ device3 \ workers8 \ ampTrue \ cos_lrTrue \ close_mosaic10 \ project/dataSharing/otherTrain/yolo26_runs \ nameyolo26x_6403-5 验证最直观拿你真实业务视频/图片做推理看框对不对nohup yolo detect train \ model/data/dataSharing/otherTrain/dataset/yolo26_data/yunnan/yolo26x.pt \ data/data/dataSharing/otherTrain/dataset/yolo26_data/yunnan/data.yaml \ imgsz640 \ epochs100 \ batch8 \ device1 \ workers16 \ ampTrue \ cos_lrTrue \ close_mosaic10 \ project/data/dataSharing/otherTrain/yolo26_runs \ nameyolo26x_640_yunnan_20260430 输出会在ls /dataSharing/otherTrain/yolo26_runs/exp01_pred_vid

相关文章:

yolov26模型训练(使用yolov5样本训练)

1、样本转换 原始文件路径为 /dataSharing/otherTrain/dataset/yolo26_data/ Annotations/ # xml images/ # jpg 第 0 步:确认你的数据是否一一对应 cd /dataSharing/otherTrain/dataset/yolo26_data# 看看有多少图片/标注 ls images | wc -l ls Annotations | …...

MedMNIST医疗图像数据集深度解析:从标准基准到医学AI实战指南

MedMNIST医疗图像数据集深度解析:从标准基准到医学AI实战指南 【免费下载链接】MedMNIST [pip install medmnist] 18x Standardized Datasets for 2D and 3D Biomedical Image Classification 项目地址: https://gitcode.com/gh_mirrors/me/MedMNIST MedMNIS…...

3步上手:如何用开源工具快速创建专业网络拓扑图?

3步上手:如何用开源工具快速创建专业网络拓扑图? 【免费下载链接】easy-topo vuesvgelement-ui 快捷画出网络拓扑图 项目地址: https://gitcode.com/gh_mirrors/ea/easy-topo 还在为绘制复杂的网络架构图而头疼吗?easy-topo 是一个基于…...

借助 Taotoken 多模型聚合能力为智能客服场景选择最佳模型

借助 Taotoken 多模型聚合能力为智能客服场景选择最佳模型 1. 智能客服场景的模型需求分析 智能客服系统通常包含多个功能模块,每个模块对模型能力的需求各不相同。对话理解模块需要强大的意图识别和实体抽取能力,而响应生成模块则更关注语言表达的流畅…...

Python量化回测框架Backtrader:从事件驱动到双均线策略实战

1. 项目概述:一个量化交易者的“瑞士军刀”如果你在量化交易领域摸爬滚打过一段时间,或者正试图从零开始构建自己的交易策略回测系统,那么“mementum/backtrader”这个项目标题,对你来说可能意味着一个巨大的惊喜,也可…...

把 SAP Cryptographic Library 放对地方,SECUDIR 配对位置,SNC 才不会在运行时掉链子

今天这类问题我见得很多,系统明明已经把 SAP Cryptographic Library 解压好了,sapgenpse 也能找到,到了真正启用 SNC、做 RFC 连接、配 SAP GUI 登录,或者给 AS ABAP 打开安全通信时,运行期还是报找不到库文件、找不到票据、找不到 PSE。问题往往不在密码学本身,而在一个…...

OpenClaw Agent工作流如何配置Taotoken作为模型供应商

OpenClaw Agent工作流如何配置Taotoken作为模型供应商 1. 准备工作 在开始配置前,请确保已安装OpenClaw工具链并拥有有效的Taotoken API Key。API Key可在Taotoken控制台的「API密钥管理」页面生成,模型ID则需在「模型广场」查看。建议提前记录这两项信…...

基于AFSIM的无人机集群协同侦察打击一体化作战系统:最小化完整案例

一、项目背景与作战需求1.1 现代无人机作战面临的挑战随着无人机技术的快速发展,单一无人机平台已无法满足复杂战场环境下的作战需求。现代战争对无人机系统提出了更高要求:核心作战需求:协同侦察能力:多无人机协同完成大范围、多…...

nRF52832低功耗按键设计详解:用GPIOTE PORT事件替代传统中断,功耗直降90%

nRF52832低功耗按键设计实战:用GPIOTE PORT事件重构人机交互方案 在电池供电的IoT设备开发中,按键唤醒功能往往是系统功耗的"隐形杀手"。传统的中断处理方案会让nRF52832在待机时消耗数十微安的电流,而采用GPIOTE PORT事件机制后&a…...

别再到处找驱动了!STM32CubeMX安装后,CH340和ST-LINK驱动一键搞定指南

STM32开发板驱动安装全攻略:CH340与ST-LINK疑难解析 引言:为什么你的开发板无法识别? 当你兴冲冲地安装完STM32CubeMX,准备开始第一个嵌入式项目时,最令人沮丧的莫过于插上开发板后电脑毫无反应。这种"最后一公里…...

五分钟 带你认识 AI 时代的 nodejs 与 包管理工具

在之前介绍的 opencode / claude 等服务模型中,你会发现 其中安装都会使用到nodejs,你会问为什么需要nodejs?懂得童鞋知道nodejs 是js运行环境,不懂得就会问什么是nodejs? 为什么这些前沿的 AI 工具都选择 Node.js 作为…...

VR视频转换终极指南:3D到2D的简单完整解决方案

VR视频转换终极指南:3D到2D的简单完整解决方案 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirrors/v…...

【AutoMV 】多模态使用情况

AutoMV 多模态使用情况 1. 图像质量判断(图片是否符合任务描述) 用的不是图里的 Qwen3-VL-Plus,而是 Gemini 2.5 Pro / Flash: gemini_verify.py : client = OpenAI(api_key=Config.GEMINI_API_KEY,base_url="https://generativelanguage.googleapis.com/v1beta/opena…...

从零到上线:手把手教你用Vue3+OpenLayers搭建一个企业级GIS管理系统(兼容IE11)

从零到上线:手把手教你用Vue3OpenLayers搭建企业级GIS管理系统(兼容IE11) 当传统行业数字化转型遇上老旧浏览器兼容需求,现代前端技术栈与经典地图库的碰撞总能擦出令人头疼的火花。去年为某省级水利部门改造防汛指挥系统时&#…...

18年GitHub老用户因平台故障频发迁出项目,直言:若改进仍愿回归

老用户告别:从热爱到失望的GitHub之旅Mitchell Hashimoto是GitHub的第1299位用户,自2008年2月注册后,18年来几乎每天都会打开GitHub,它对Hashimoto而言,不仅是代码托管平台,更像精神家园。早年他开发Vagran…...

GPT-5.5写文案、改稿、做大纲,写作全流程实测

在c.877ai.cn这类AI模型聚合平台上把GPT-5.5各个版本拉出来跑了一整周写作流程,从大纲到成稿完整走了一遍,记录一些真实感受。GPT-5.5在4月23日正式发布,官方直接定位为"目前最聪明的模型",重点指向编码、研究、数据分析…...

OramaCore:模块化向量搜索内核与混合搜索实践指南

1. 项目概述:当向量搜索遇上“瑞士军刀”如果你最近在折腾AI应用,尤其是想给自家的聊天机器人、知识库或者任何需要“理解”用户意图的系统加上一个聪明的大脑,那么“向量搜索”这个词你肯定不陌生。简单说,它就是让计算机能像人一…...

山东大学软件学院项目实训(四)

本周工作内容:RAG知识库接入评估闭环实现一、RAG知识库接入1.1 向量库初始化此前我已经完成了基于ChromaDB的向量库的搭建、阿里云embedding模型配置、雅思作文数据集的处理与导入,在初始化阶段,采用了懒加载模式,在第一次使用向量…...

从Ubuntu 18.04到22.04:RoboCup3D环境配置的依赖库变迁与避坑全记录

从Ubuntu 18.04到22.04:RoboCup3D环境配置的依赖库变迁与避坑全记录 如果你是一位RoboCup3D的开发者或研究者,最近在Ubuntu 22.04上配置开发环境时遇到了各种依赖问题,这篇文章就是为你准备的。我们将深入探讨从Ubuntu 18.04到22.04版本升级过…...

AppImageLauncher终极指南:3分钟让Linux桌面完美管理AppImage应用

AppImageLauncher终极指南:3分钟让Linux桌面完美管理AppImage应用 【免费下载链接】AppImageLauncher Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages 项目地址: https://gitc…...

告别乱糟糟的线束:ESP32小车L298N驱动模块的理线与固定实战技巧

告别乱糟糟的线束:ESP32小车L298N驱动模块的理线与固定实战技巧 当你的智能小车底盘上堆满了横七竖八的线缆,L298N模块摇摇欲坠地挂在铜柱上,每次调试都要花十分钟理清哪根线接哪里——是时候来一场彻底的线束管理革命了。作为经历过数十个物…...

解锁音乐自由:用QMCDecode让QQ音乐文件畅游所有设备

解锁音乐自由:用QMCDecode让QQ音乐文件畅游所有设备 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换…...

Windows音频革命:Synchronous Audio Router如何让普通声卡变专业录音室

Windows音频革命:Synchronous Audio Router如何让普通声卡变专业录音室 【免费下载链接】SynchronousAudioRouter Low latency application audio routing for Windows 项目地址: https://gitcode.com/gh_mirrors/sy/SynchronousAudioRouter 还记得那些让音乐…...

Flow Launcher集成ChatGPT插件:打造零摩擦AI工作流

1. 项目概述:在Flow Launcher中集成你的AI助手 如果你和我一样,是个重度效率工具爱好者,同时又对AI应用充满好奇,那么今天分享的这个项目绝对会让你眼前一亮。它不是什么复杂的系统,而是一个精巧的Flow Launcher插件&…...

Fan Control:告别风扇噪音的终极Windows风扇控制软件指南

Fan Control:告别风扇噪音的终极Windows风扇控制软件指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending…...

别再瞎建模了!Blender拓扑避坑指南:从MatCap检查到法线修复的完整流程

Blender拓扑优化实战:从问题诊断到高效修复的完整方法论 在三维建模领域,拓扑结构如同建筑的钢筋骨架,决定了作品的最终品质与可用性。许多Blender用户在完成模型外观后,常遭遇游戏引擎导入异常、动画变形失真、光照反射扭曲等问题…...

学 Simulink——基于 Simulink 的 弱电网下并网逆变器稳定性分析

目录 手把手教你学 Simulink 一、引言:为何“弱电网”让逆变器“失控”? 二、系统架构:并网逆变器 + 弱电网模型 三、Step 1:逆变器控制系统建模 A. 控制结构:电容电流反馈有源阻尼 四、Step 2:弱电网建模 —— 关键! A. 电网阻抗设置 五、Step 3:稳定性分析方法…...

从Kaggle竞赛到业务报表:如何向非技术同事解释MSE、MAE和R2 Score?

从Kaggle竞赛到业务报表:如何向非技术同事解释MSE、MAE和R2 Score? 在数据科学项目中,最令人头疼的时刻往往不是调试模型参数,而是需要向产品经理解释为什么"R2 score达到0.6已经不错了"。当会议室里坐着对"均方误…...

别再只配管理IP了!深度解读ESXi网络:vMotion、FT、NFC流量到底该怎么规划?

别再只配管理IP了!深度解读ESXi网络:vMotion、FT、NFC流量到底该怎么规划? 在虚拟化架构中,网络规划往往是最容易被低估的环节。许多工程师在部署ESXi时,习惯性地将所有流量——管理、存储、vMotion、容错等——统统塞…...

甲言(Jiayan):古汉语NLP处理的完整解决方案与最佳实践指南

甲言(Jiayan):古汉语NLP处理的完整解决方案与最佳实践指南 【免费下载链接】Jiayan 甲言,专注于古代汉语(古汉语/古文/文言文/文言)处理的NLP工具包,支持文言词库构建、分词、词性标注、断句和标点。Jiayan, the 1st N…...