尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ultralytics YOLO 多光谱检测实战指南:3 步训练 10 通道模型并完成部署

Ultralytics YOLO 多光谱检测实战指南:3 步训练 10 通道模型并完成部署 Ultralytics YOLO 多光谱检测实战指南3 步训练 10 通道模型并完成部署【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics你的多光谱图像有 10 个通道但 YOLO 默认只认识 3 个——直接开训要么立刻报错要么光谱信息被静默丢掉。下面按「数据 → 配置 → 训练部署」的时间线用 Ultralytics YOLOYOLO26 / YOLO11 / YOLOv8 系列把多光谱目标检测跑通并附常见报错速查表。适合第一次接触多光谱、遥感或近红外数据的新手与一般开发者。1. 多光谱数据怎么准备先让图像变成 10 通道解决的问题你的原始数据可能是普通 RGB 照片而模型需要 10 通道的多光谱输入。把 RGB 批量转成 10 通道框架自带转换工具 ultralytics/data/converter.py原理是按波长450–700nm 均匀取样对 R/G/B 三个波段做线性插值与外推输出.tiff多通道文件from ultralytics.data.converter import convert_to_multispectral convert_to_multispectral(data/farm_rgb, n_channels10) # 目录批量转换它也可以处理单张图像。转换结果写在原图同目录方便对照检查。验证数据维度开训前花 30 秒确认维度能避免后面 80% 的坑import cv2, numpy as np im cv2.imread(data/farm_rgb/train/0001.tiff, cv2.IMREAD_UNCHANGED) print(im.shape) # 期望 (H, W, 10)⚠️ 若你手头是真实多光谱传感器数据如 8/12 波段跳过转换步骤只需保证文件能按多通道读入、且通道数与你后面 yaml 里写的一致即可。2. 数据集文件怎么配channels 一个键定通道数解决的问题告诉框架「我的图像不是 3 通道」。漏配这一项模型会按默认 3 通道建网络与 10 通道数据对不上。官方示例配置见 ultralytics/cfg/datasets/coco8-multispectral.yaml核心就比常规配置多一行channelspath: farm-ms # 数据集根目录 train: images/train # 相对 path val: images/val channels: 10 # 多光谱通道数必须与实际图像一致 names: 0: corn 1: wheat 2: soybean通道数在数据加载、模型首层卷积、导出三处都会用到 ultralytics/data/dataset.py 中data.get(channels, 3)这一默认值所以 yaml 是唯一必须写的地方——训练、验证、导出调用都不需要再重复传通道参数。3. 多光谱模型怎么训练最简 train / val / predict 流程解决的问题从权重加载到跑通推理全程不需要改一行模型代码。三步完成训练与验证框架会按 yaml 里的channels重建首层卷积的输入维度预训练权重中维度匹配的层正常加载不匹配的首层卷积自动重建随机初始化其余层照旧from ultralytics import YOLO model YOLO(yolo26n.pt) model.train(datafarm-ms.yaml, epochs100, imgsz640) model.val(datafarm-ms.yaml)仓库测试里的官方参考流程就是「train → val → predict」三连可直接对照 tests/test_python.py 中的test_multichannel。想先用官方小数据集冒烟测试CLI 一行即可yolo train modelyolo26n.pt datacoco8-multispectral.yaml epochs10配置文件会自动下载。推理时怎么传 10 通道输入预测接口直接吃(H, W, 10)的 uint8 ndarrayfrom PIL import Image import numpy as np im np.asarray(Image.open(data/farm-ms/val/0001.tiff)) # (H, W, 10) results model.predict(sourceim) results[0].show()注意一点可视化保存的图片会被自动裁回前 3 个通道显示逻辑在 ultralytics/utils/plotting.py 的images[:, :3]这是显示层的处理检测本身始终基于全部 10 个通道结果不受影响。4. 常见报错怎么查现象原因处理训练报错或指标恒为 0日志提示维度不符yaml 未写channels: 10网络按 3 通道构建在数据集 yaml 中补上channels加载yolo26n.pt时首层 conv 权重被跳过首层卷积输入通道由 3 变为 10形状对不上正常现象首层随机初始化其余权重已加载图像实际 10 通道、yaml 写 3或反之数据与配置不一致用im.shape核对两侧统一保存的推理图「少了几个波段」可视化默认裁到前 3 通道非 bugbbox/类别结果基于 10 通道计算✅ 数据增强mosaic 等对多光谱已有专门处理分支默认配置下无需额外关闭。5. 最快部署方式导出与行动清单解决的问题确认训好的 10 通道模型能顺利导出 ONNX输入形状跟着走。导出验证model.export(formatonnx) # 无需传通道参数导出的 ONNX 输入维度即为[1, 10, H, W]H/W 对应imgsz不需要也没有额外的channels导出参数——形状由权重决定。导出后建议跑一次model.predict复验再交给部署端。行动清单步骤动作通过标准1图像转成 N 通道 tiffim.shape末位 通道数2yaml 写channels: 10训练正常启动3train→val→predictval 出 mAPpredict 出框4export(formatonnx)输入维度[1, 10, H, W]FAQQ1灰度1 通道数据集能直接训吗可以。yaml 写channels: 1即可分类与深度任务除外加载逻辑对 1/2/3/N 通道都有适配。Q2换通道数后必须从头训练吗不用。预训练权重中除首层卷积外的部分都能复用首层随机初始化后正常微调即可。Q3推理结果图只显示 3 个波段是不是导出错了不是。这是可视化的固定行为检测数值与全部通道相关需要看原始波段时直接读源文件。 小结多光谱训练的全部秘密就藏在 yaml 的channels一行里——数据侧保证通道数真实配置侧如实声明其余交给框架。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表