You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ultralytics YOLOv8模型加载.npy文件进行训练?

问题描述

目标:使用YOLOv8训练经spectral库预处理后保存为.npy格式的高光谱图像

  • 数据集已按Ultralytics文档要求的格式存储,使用的config.yaml配置如下:
path: F:\Sem-VI\Code\dataset # dataset root dir
train: train # train images (relative to 'path') 118287 images
val: val # val images (relative to 'path') 118287 images

# Classes
names:
  0: somethin
  • 训练时触发错误:
FileNotFoundError:
Dataset 'config.yaml' images not found ⚠️, missing path 'F:\Sem-VI\Code\dataset\val'
Note dataset download directory is 'F:\yolo-ultralytics\datasets'. You can update this in 'C:\Users\Tests\AppData\Roaming\Ultralytics\settings.yaml'
  • 已尝试方案:使用相对路径/绝对路径配置,均无效
核心原因

YOLOv8默认仅支持标准图像格式(JPG/PNG等),无法直接识别.npy文件。报错提示"missing path"实际是遍历指定目录时找不到符合默认格式的文件,并非路径本身不存在。

解决方案

1. 自定义.npy数据集加载器

继承YOLOv8的YOLODataset类,重写图像加载逻辑以支持.npy格式:

from ultralytics.data.dataset import YOLODataset
import numpy as np

class NPYHyperspectralDataset(YOLODataset):
    def load_image(self, i, rect_mode=False):
        # 加载.npy高光谱文件
        img_path = self.im_files[i]
        img = np.load(img_path)
        
        # 调整维度至YOLO要求的HWC格式(根据你的数据存储格式修改)
        # 示例:若原始数据为CHW(通道在前),转为HWC
        if img.ndim == 3 and img.shape[0] not in [1,3]:  # 高光谱通道数通常远大于3
            img = np.transpose(img, (1, 2, 0))
        
        # 归一化(根据你的数据范围调整,示例为0-255)
        img = img.astype(np.float32) / np.max(img) * 255
        return img, img_path

2. 修正配置文件路径格式

Windows下路径需注意转义,推荐使用正斜杠避免转义问题:

path: F:/Sem-VI/Code/dataset  # 替换为你的数据集根目录绝对路径
train: train  # 对应根目录下的train子目录
val: val      # 对应根目录下的val子目录

# Classes
names:
  0: somethin

同时确认F:/Sem-VI/Code/dataset/val目录下确实存在.npy文件,且数量与标注文件(如.txt)一一对应。

3. 训练时指定自定义数据集

在训练代码中导入自定义数据集类,并传递给train方法:

from ultralytics import YOLO
from your_script import NPYHyperspectralDataset  # 替换为自定义类所在的脚本文件名

# 加载YOLOv8模型(可使用预训练模型或自定义yaml)
model = YOLO('yolov8n.pt')

# 启动训练
model.train(
    data='config.yaml',
    dataset=NPYHyperspectralDataset,
    epochs=50,
    imgsz=640,  # 根据你的图像实际尺寸调整
    batch=16
)

额外排查点

  • 检查标注文件的路径是否与.npy文件完全对应,确保每个.npy都有对应的标注
  • 若必须使用命令行训练,需修改Ultralytics的数据集注册逻辑,或直接使用代码训练更灵活

内容的提问来源于stack exchange,提问作者T090 Subhashish Nabajja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:22:31