欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

FusinGAN图像融合代码学习

程序员文章站 2024-03-21 23:32:34
...

FusionGAN简介

FusionGAN是使用生成对抗式神经网络(GAN)来完成红外和可见光图像融合任务,并且取得了很好的实验效果。

论文地址

FusionGAN论文地址:
FusionGAN: A generative adversarial network for infrared and visible image fusion

FusionGAN代码

FusionGAN代码已经开源在GitHub上FusionGAN代码

FusionGAN开源代码内容

代码下载好,解压后,应该有如下内容FusinGAN图像融合代码学习
cheatpoint文件夹中CGAN_120文件夹内存放的是预训练模型
Train_ir/Train_vi分别存放的是训练用的红外和可见光数据集
Test_ir/Test_vi分别存放的是测试用的红外和可见光数据集

使用预训练模型运行代码

如果只需要使用预训练模型运行代码,只需要运行test_one_image.py文件即可,运行代码为

python3 test_one_image.py

这里使用python3是因为我使用的环境原因,如果您运行报错可尝试使用如下代码

python test_one_image.py

运行正确后,
FusinGAN图像融合代码学习
实验结果会保存在result文件夹中

使用FusionGAN训练自己的数据集

训练过程

数据集相关

红外和可见光图像训练数据集分别放在Train_ir/Train_vi中,代码默认图像必须是.bmp格式,如果数据集不是.bmp格式,则需要修改utils.py文件第72行代码,修改.bmp为你数据集中的图片格式

  if FLAGS.is_train:
    filenames = os.listdir(dataset)
    data_dir = os.path.join(os.getcwd(), dataset)
    data = glob.glob(os.path.join(data_dir, "*.bmp"))#修改bmp为你数据集中的图片格式
    data.extend(glob.glob(os.path.join(data_dir, "*.tif")))
    #将图片按序号排序
    data.sort(key=lambda x:int(x[len(data_dir)+1:-4]))
  else:
    data_dir = os.path.join(os.sep, (os.path.join(os.getcwd(), dataset)))
    data = glob.glob(os.path.join(data_dir, "*.bmp"))
    data.extend(glob.glob(os.path.join(data_dir, "*.tif")))
    data.sort(key=lambda x:int(x[len(data_dir)+1:-4]))
  #print(data)

代码修改

1. xrange修改为range

由于我的python版本为python 3.x,而xrange( )函数时在python 2.x中的一个函数,在Python 3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange( ),因此需要把xrange改为range,需要修改的地方有三处:
model.py的144和147行以及utils.py的150行。
2. 其他修改
按如下方式修改utils.py的164行。

          sub_label = label_[x+padding:x+padding+config.label_size, y+padding:y+padding+config.label_size] # [21 x 21]
          sub_label = label_[int(x+padding):int(x+padding+config.label_size), int(y+padding):int(y+padding+config.label_size)] # [21 x 21]

我在运行FusionGAN代码时只需要修改以上几处就可以正常训练自己的数据集了。

训练

修改好代码后,只需要运行main.py文件即可,运行代码为

python3 main.py

这里使用python3是因为我使用的环境原因,如果您运行报错可尝试使用如下代码

python main.py

训练过程会在cheatpoint文件夹中生成Train_ir/Train_vi两个文件,两个文件中均有train.h5的文件,训练生成的模型会放在CGAN_120文件夹内

测试过程

测试只需要运行test_one_image.py文件即可,运行代码为

python3 test_one_image.py

这里使用python3是因为我使用的环境原因,如果您运行报错可尝试使用如下代码

python test_one_image.py

总结

我按照上述过程就可以顺利运行FusionGAN代码,并使用该代码训练自己的数据集,但因为每个人环境的不同,可能会有其他问题的出现,只需要根据报错信息,善用搜索引擎,耐心修改即可。