YOLO11框架训练高光谱数据归一化问题
要将数据归一化到0到255之间,之前一直归一化到0到1之间导致无法训练起来。
import os
import numpy as np
import tifffile# 输入和输出路径
input_directory = '/TMP_EXT_DRIVE_DO_NOT_USE/new_desert_forest_snow2_normalized/pca30_HWC/val'
output_directory = '/TMP_EXT_DRIVE_DO_NOT_USE/new_desert_forest_snow2_normalized/images/val'# 创建输出目录
os.makedirs(output_directory, exist_ok=True)# 获取所有 TIFF 文件
tiff_files = [f for f in os.listdir(input_directory) if f.endswith('.tiff')]# 遍历处理
for i, tiff_file in enumerate(tiff_files, 1):# 读取图像 (H, W, C)image = tifffile.imread(os.path.join(input_directory, tiff_file)).astype(np.float32)# 初始化归一化图像image_normalized = np.zeros_like(image)# 对每个通道分别归一化到 [0, 255]for c in range(image.shape[2]):band = image[:, :, c]band_min = np.min(band)band_max = np.max(band)if band_max > band_min:image_normalized[:, :, c] = (band - band_min) / (band_max - band_min) * 255.0else:image_normalized[:, :, c] = 0.0# 转为 uint8 类型并保存image_normalized_uint8 = image_normalized.astype(np.uint8)tifffile.imwrite(os.path.join(output_directory, f'{os.path.splitext(tiff_file)[0]}.tiff'), image_normalized_uint8)print(f"归一化完成:{i}/{len(tiff_files)}")print("所有高光谱图像已逐通道归一化到 [0, 255] 并保存。")