【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就可以查看模型处理的效果
在这里插入图片描述
效果如下:
在这里插入图片描述
是不是很有趣!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338087.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos下系统全局检测工具dstat使用

目录 一:没有需要安装 二:dstat命令参数 三、监测界面各参数含义(部分) 四、dstat的高级用法 一:没有需要安装 yum install dstat 二:dstat命令参数 有默认选项,执行dstat命令不加任何参数…

springCould中的Bus-从小白开始【11】

目录 🧂1.Bus是什么❤️❤️❤️ 🌭2.什么是总线❤️❤️❤️ 🥓3.rabbitmq❤️❤️❤️ 🥞4.新建模块3366❤️❤️❤️ 🍳5.设计思想 ❤️❤️❤️ 🍿6.添加消息总线的支持❤️❤️❤️ &#x1f9…

springboot医院信管系统源码和论文

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

CentOS本地部署SQL Server数据库无公网ip环境实现远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

算法刷题常用方法

📑前言 本文主要是【java】——算法刷题常用方法的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&…

开发超爽的nodejs命令行程序

开发nodejs命令行程序以一般会到什么库? 首选commander提供一套标化化的命令行解析,非常好用。其次是prompts、inquirer,enquirer等库来提供交互输入提示,可以提供更加友好的用户体验还有一个是ansicolor、chalk来进行命令行输出的颜色控制&…

DNS解析原理和k8s DNS 实践

1. 问题背景 1.1 域名解析异常 近期开发的一个功能,需要在k8s集群容器环境中调用公司内部api,api提供了内网域名,解析内网域名异常导致请求超时,因此梳理了下DNS的知识点。 可以先看到下面👇这段配置,修…

ubuntu20.04安装cuda11.4以及cudnn

系统:ubuntu20.04硬件配置:GPU3080、CPU未知通过《软件和更新》在附加驱动选项中添加了驱动: 1.检查自己电脑支持的cuda nvidia-smi4. 下载cuda11.4.2 wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/c…

Java中CompletableFuture 异步编排的基本使用

一、前言 在复杂业务场景中,有些数据需要远程调用,导致查询时间缓慢,影响以下代码逻辑运行,并且这些浪费时间的逻辑与以后的请求并没有关系,这样会大大增加服务的时间。 假如商品详情页的每个查询,需要如下…

【高等数学之泰勒公式】

一、从零开始 1.1、泰勒中值定理1 什么是泰勒公式?我们先看看权威解读: 那么我们从古至今到底是如何创造出泰勒公式的呢? 由上图可知,任一无穷小数均可以表示成用一系列数字的求和而得出的结果,我们称之为“无穷算法”。 那么同理我们想对任一曲线来…

Every Nobody Is Somebody 「每小人物都能成大事」

周星驰 NFT Nobody即将发售,Nobody共创平台 Every Nobody Is Somebody Nobody 关于Nobody:Nobody是一款Web3共创平台,旨在为创作者提供一个交流和合作的场所,促进创意的产生和共享。通过该平台,创作者可以展示自己的作…

程序员试用期转正工作总结

一、试用期工作总结 在公司的三个月试用期中,我完成了以下工作: 完成了XX个功能模块的开发,包括XX模块、XX模块和XX模块。参与了XX个项目的开发和上线,其中XX项目、XX项目和XX项目是我主导的。优化了现有系统的性能,特…