FusinGAN图像融合代码学习
FusionGAN代码
FusionGAN简介
FusionGAN是使用生成对抗式神经网络(GAN)来完成红外和可见光图像融合任务,并且取得了很好的实验效果。
论文地址
FusionGAN论文地址:
FusionGAN: A generative adversarial network for infrared and visible image fusion
FusionGAN代码
FusionGAN代码已经开源在GitHub上FusionGAN代码
FusionGAN开源代码内容
代码下载好,解压后,应该有如下内容
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
运行正确后,
实验结果会保存在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代码,并使用该代码训练自己的数据集,但因为每个人环境的不同,可能会有其他问题的出现,只需要根据报错信息,善用搜索引擎,耐心修改即可。
上一篇: 一起做RGB-D SLAM (1)-(7) 代码实践
下一篇: Git命令使用小结