YOLO11框架训练高光谱数据归一化问题
本文最后更新于 2025-05-09,文章内容可能已经过时。
要将数据归一化到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.0
else:
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] 并保存。")
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Titos
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果