红外图像/红外遥感图像/可见光红外图像对 近红外和可见光成对图像 生成对抗网络的风格迁移,或者图像融合/图像生成/图像转换 可见光遥感生成红外遥感图像,37500对图像数据
·
红外图像/红外遥感图像/可见光红外图像对 近红外和可见光成对图像 生成对抗网络的风格迁移,或者图像融合/图像生成/图像转换 可见光遥感生成红外遥感图像,37500对图像数据
文章目录
以下文字及代码仅供参考学习使用。
数据集描述:
红外图像/红外遥感图像/可见光红外图像对
包含近红外和可见光成对图像
针对于遥感地形数据,森林河流湖泊山脉等
主要用于生成对抗网络的风格迁移,或者图像融合/图像生成/图像转换
可见光遥感生成红外遥感图像,共37500对图像数据

使用 生成对抗网络(GAN) 来实现 可见光遥感图像生成红外遥感图像 或 风格迁移 / 图像融合 / 图像转换,使用 Pix2Pix 或 CycleGAN 经典图像到图像转换模型。代码示例,仅供参考。
- 数据准备(可见光 + 红外图像对)
- 模型选择(Pix2Pix)
- 环境搭建
- 模型训练、推理、评估代码
- 可视化结果
🧾 项目背景
- 37500对可见光和红外图像对
- 可用于训练 图像到图像的转换模型
- 目标:将可见光图像转换为红外图像(图像生成 / 风格迁移 / 融合)

🧰 一、环境准备
1. 安装 Anaconda(如未安装)
下载地址:https://www.anaconda.com/products/distribution
2. 创建虚拟环境
conda create -n ir_gan python=3.9
conda activate ir_gan
3. 安装依赖项
pip install torch torchvision torchaudio
pip install opencv-python matplotlib numpy
pip install tensorboard
📁 二、数据集结构与格式
你的数据应为成对图像,结构如下:
dataset/
├── train/
│ ├── A/
│ │ └── img1_A.jpg
│ │ └── img2_A.jpg
│ │ └── ...
│ ├── B/
│ │ └── img1_B.jpg
│ │ └── img2_B.jpg
│ │ └── ...
├── val/
│ ├── A/
│ ├── B/
└── test/
├── A/
├── B/
- A:可见光图像(输入)
- B:红外图像(目标输出)
🧠 三、选择模型:Pix2Pix GAN
我们选择 Pix2Pix,因为它是图像到图像转换的经典模型,适用于成对图像转换任务(如 A → B)。
GitHub 参考实现(PyTorch):
你可以克隆项目:
git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
cd pytorch-CycleGAN-and-pix2pix
📦 四、数据预处理(构建成对图像)
你可以使用以下脚本将你的数据整理为 Pix2Pix 所需格式(拼接成双图):
import os
from PIL import Image
def create_pair_dataset(data_dir, output_dir):
os.makedirs(output_dir, exist_ok=True)
a_dir = os.path.join(data_dir, 'A')
b_dir = os.path.join(data_dir, 'B')
a_files = sorted(os.listdir(a_dir))
b_files = sorted(os.listdir(b_dir))
for a_file, b_file in zip(a_files, b_files):
a_img = Image.open(os.path.join(a_dir, a_file)).convert('RGB')
b_img = Image.open(os.path.join(b_dir, b_file)).convert('RGB')
a_img = a_img.resize((256, 256))
b_img = b_img.resize((256, 256))
pair = Image.new('RGB', (256 * 2, 256))
pair.paste(a_img, (0, 0))
pair.paste(b_img, (256, 0))
pair.save(os.path.join(output_dir, a_file))
# 示例
create_pair_dataset('dataset/train', 'pix2pix/datasets/ir_dataset/train')
create_pair_dataset('dataset/val', 'pix2pix/datasets/ir_dataset/val')
🚀 五、训练 Pix2Pix 模型
进入项目目录后,训练命令如下:
python train.py --dataroot ./datasets/ir_dataset --name ir2ir_model --model pix2pix --input_nc 3 --output_nc 3 --lambda_L1 100 --direction AtoB --display_id 0
参数说明:
--dataroot:数据集路径--name:模型保存名称--model:模型类型(pix2pix)--input_nc/--output_nc:通道数(RGB)--lambda_L1:L1损失权重(增强细节)--direction AtoB:表示从 A(可见光)到 B(红外)转换--display_id 0:关闭可视化(可选)
🔍 六、模型推理(测试图像转换)
训练完成后,使用以下命令进行推理:
python test.py --dataroot ./datasets/ir_dataset --name ir2ir_model --model pix2pix --input_nc 3 --output_nc 3 --direction AtoB --num_test 100
推理结果将保存在:
results/ir2ir_model/test_latest/images/
包括:
- input_A:原始可见光图像
- fake_B:生成的红外图像
- real_B:真实红外图像(用于对比)
📈 七、可视化与评估
1. 可视化结果
你可以使用 OpenCV 或 Matplotlib 显示图像:
import cv2
import os
result_dir = 'results/ir2ir_model/test_latest/images'
fake_B_files = [f for f in os.listdir(result_dir) if 'fake_B' in f]
for fake_B in fake_B_files[:5]:
fake_B_img = cv2.imread(os.path.join(result_dir, fake_B))
real_B_img = cv2.imread(os.path.join(result_dir, fake_B.replace('fake_B', 'real_B')))
input_A_img = cv2.imread(os.path.join(result_dir, fake_B.replace('fake_B', 'input_A')))
combined = cv2.hconcat([input_A_img, fake_B_img, real_B_img])
cv2.imshow('Input A | Fake B | Real B', combined)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. PSNR / SSIM 评估(可选)
from skimage.metrics import peak_signal_noise_ratio as psnr
from skimage.metrics import structural_similarity as ssim
def evaluate_pair(real_path, fake_path):
real = cv2.imread(real_path)
fake = cv2.imread(fake_path)
p = psnr(real, fake)
s = ssim(real, fake, multichannel=True, channel_axis=2)
return p, s
# 示例
real_path = 'results/ir2ir_model/test_latest/images/real_B_1.png'
fake_path = 'results/ir2ir_model/test_latest/images/fake_B_1.png'
print("PSNR:", *evaluate_pair(real_path, fake_path))
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)