【AI】CycleGan对抗生成网络遥感影像生成地图效果测试

2024-01-11 02:20

本文主要是介绍【AI】CycleGan对抗生成网络遥感影像生成地图效果测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天看到一个有趣的项目,CycleGan对抗生成网络把马生成成斑马,还有一个测试用例是用遥感影像生成平面地图的效果,效果如下图所示,我大学是遥感专业,看到遥感影像就触动了我的原神,于是原神启动,肝一个测试的玩玩。
在这里插入图片描述

源码地址:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

0.准备工作

其实按照官方文档玩,没有什么特别需要准备的,只是为了防止遗忘,多赘述一下了。
项目有提供数据集和预训练模型,这种最适合懒人操作了。

  1. 下载数据集
    其实源码中已经放了下载数据集的脚本,只需要运行脚本即可,但是有时候下载不稳定,我们还是提前下载下来放在环境下面最稳妥。
    下载地址:http://efrosgans.eecs.berkeley.edu/cyclegan/datasets
    在这里插入图片描述
    解压后放在项目的dataset目录下面
    在这里插入图片描述

  2. 下载预训练模型
    下载地址:http://efrosgans.eecs.berkeley.edu/cyclegan/pretrained_models/
    在这里插入图片描述
    预训练模型下载之后需要改一下名字,在项目的checkpoint目录下面创建预训练模型的文件夹,并把下载的预训练模型改名为latest_net_G.pth
    在这里插入图片描述
    3.安装依赖
    我这边使用的Anaconda虚拟环境进行运行,选择一个之前安装了pytorch框架的虚拟环境,然后再终端中切换到项目文件夹下面,使用pip install -r requirments.txt安装项目依赖。
    项目依赖挺简单,除了pytorch的包外,最主要的就是两个包了,因为我的虚拟环境上已经安装了pytorch的依赖,所以前两个依赖可以注释掉

#torch>=0.4.1
#torchvision>=0.2.1
dominate>=2.3.1
visdom>=0.1.8.3

1.运行测试

安装完就可以运行了,直接在项目的根目录下面运行即可

python test.py --dataroot datasets/maps/testA --name sat2map_pretrained --model test --no_dropout

参数介绍:

--dataroot 测试数据集存放的路径
--name 模型名称,这里跟checkpoint目录下面的文件夹名称一致
--model test 使用test参数说明我们是在测试

终端输出内容展示:

(pytorch) PS F:\AIStudy\pytorch-CycleGAN-and-pix2pix> python test.py --dataroot datasets/maps/testA --name sat2map_pretrained --model test --no_dropout
----------------- Options ---------------aspect_ratio: 1.0batch_size: 1checkpoints_dir: ./checkpointscrop_size: 256dataroot: datasets/maps/testA                  [default: None]dataset_mode: singledirection: AtoBdisplay_winsize: 256epoch: latesteval: Falsegpu_ids: 0init_gain: 0.02init_type: normalinput_nc: 3isTrain: False                                [default: None]load_iter: 0                                    [default: 0]load_size: 256max_dataset_size: infmodel: testmodel_suffix:n_layers_D: 3name: sat2map_pretrained                   [default: experiment_name]ndf: 64netD: basicnetG: resnet_9blocksngf: 64no_dropout: True                                 [default: False]no_flip: Falsenorm: instancentest: infnum_test: 50num_threads: 4output_nc: 3phase: testpreprocess: resize_and_cropresults_dir: ./results/serial_batches: Falsesuffix:verbose: False
----------------- End -------------------
dataset [SingleDataset] was created
[ReflectionPad2d((3, 3, 3, 3)), Conv2d(3, 64, kernel_size=(7, 7), stride=(1, 1)), InstanceNorm2d(64, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)), InstanceNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)), InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
)]
[ReflectionPad2d((3, 3, 3, 3)), Conv2d(3, 64, kernel_size=(7, 7), stride=(1, 1)), InstanceNorm2d(64, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)), InstanceNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)), InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ResnetBlock((conv_block): Sequential((0): ReflectionPad2d((1, 1, 1, 1))(1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)(3): ReLU(inplace=True)(4): ReflectionPad2d((1, 1, 1, 1))(5): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))(6): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False))
), ConvTranspose2d(256, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), output_padding=(1, 1)), InstanceNorm2d(128, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), ConvTranspose2d(128, 64, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), output_padding=(1, 1)), InstanceNorm2d(64, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False), ReLU(inplace=True), ReflectionPad2d((3, 3, 3, 3)), Conv2d(64, 3, kernel_size=(7, 7), stride=(1, 1)), Tanh()]
initialize network with normal
model [TestModel] was created
loading the model from ./checkpoints\sat2map_pretrained\latest_net_G.pth
---------- Networks initialized -------------
[Network G] Total number of parameters : 11.378 M
-----------------------------------------------
creating web directory ./results/sat2map_pretrained\test_latest
processing (0000)-th image... ['datasets/maps/testA\\1000_A.jpg']
processing (0005)-th image... ['datasets/maps/testA\\1005_A.jpg']
processing (0010)-th image... ['datasets/maps/testA\\100_A.jpg']
processing (0015)-th image... ['datasets/maps/testA\\1014_A.jpg']
processing (0020)-th image... ['datasets/maps/testA\\1019_A.jpg']
processing (0025)-th image... ['datasets/maps/testA\\1023_A.jpg']
processing (0030)-th image... ['datasets/maps/testA\\1028_A.jpg']
processing (0035)-th image... ['datasets/maps/testA\\1032_A.jpg']
processing (0040)-th image... ['datasets/maps/testA\\1037_A.jpg']
processing (0045)-th image... ['datasets/maps/testA\\1041_A.jpg']

这里打印了模型参数、模型结构以及处理进度。

2.结果展示

执行结束后会在模型的result路径下(results\sat2map_pretrained\test_latest)生成查看样例,点击打开index.html就可以查看模型处理的效果
在这里插入图片描述
效果如下:
在这里插入图片描述
是不是很有趣!

这篇关于【AI】CycleGan对抗生成网络遥感影像生成地图效果测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/592835

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.