【cv】cycleGAN代码解析:test.py

【cv】cycleGAN代码解析:test.py

Posted on 2025-09-25 16:46  SaTsuki26681534  阅读(0)  评论(0)    收藏  举报
"""通用的图像到图像转换测试脚本。当你使用train.py训练好模型后,可以使用此脚本来测试模型。
它会从'--checkpoints_dir'加载保存的模型,并将结果保存到'--results_dir'。脚本首先根据选项创建模型和数据集。它会硬编码一些参数。
然后对'--num_test'张图像运行推理,并将结果保存到HTML文件中。示例(你需要先训练模型或从我们的网站下载预训练模型):测试CycleGAN模型(双向转换):python test.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan测试CycleGAN模型(仅单向转换):python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout选项'--model test'用于仅生成CycleGAN的单向结果。此选项会自动设置'--dataset_mode single',即只从一个集合加载图像。相反,使用'--model cycle_gan'需要加载并生成双向结果,这有时是不必要的。结果将保存到./results/目录。使用'--results_dir <directory_path_to_save_result>'指定结果保存目录。测试pix2pix模型:python test.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA更多测试选项参见options/base_options.py和options/test_options.py。
训练和测试技巧参见:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/blob/master/docs/tips.md
常见问题参见:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix/blob/master/docs/qa.md
"""import os
from pathlib import Path  # 用于路径处理的库
from options.test_options import TestOptions  # 导入测试选项类
from data import create_dataset  # 导入创建数据集的函数
from models import create_model  # 导入创建模型的函数
from util.visualizer import save_images  # 导入保存图像的函数
from util import html  # 用于生成HTML结果页面的工具try:import wandb  # 尝试导入wandb(用于实验跟踪)
except ImportError:# 如果导入失败,打印警告信息print('警告:未找到wandb包。使用选项"--use_wandb"将导致错误。')if __name__ == "__main__":# 解析测试选项:获取命令行参数并生成选项实例opt = TestOptions().parse()  # 硬编码测试所需的参数(测试代码的限制)opt.num_threads = 0  # 测试代码仅支持0个线程opt.batch_size = 1  # 测试代码仅支持批大小为1opt.serial_batches = True  # 禁用数据打乱;如果需要随机选择图像的结果,可注释此行opt.no_flip = True  # 不进行图像翻转;如果需要翻转图像的结果,可注释此行opt.display_id = -1  # 不使用visdom显示;测试代码将结果保存到HTML文件# 根据选项创建数据集(基于dataset_mode和其他参数)dataset = create_dataset(opt)  # 根据选项创建模型(基于model参数和其他配置)model = create_model(opt)  # 模型常规设置:加载并打印网络结构、创建调度器model.setup(opt)  # 创建用于保存结果的网页目录# 目录路径由结果根目录、实验名称、阶段和轮次组成web_dir = Path(opt.results_dir) / opt.name / f"{opt.phase}_{opt.epoch}"  if opt.load_iter > 0:  # 如果指定了加载迭代次数(默认0),则在目录名后添加迭代次数web_dir = Path(f"{web_dir}_iter{opt.load_iter}")print(f"创建网页目录 {web_dir}")# 创建HTML对象,用于组织和保存结果webpage = html.HTML(web_dir, f"实验 = {opt.name}, 阶段 = {opt.phase}, 轮次 = {opt.epoch}")# 测试时使用评估模式。这仅影响batchnorm和dropout等层。# 对于[pix2pix]:原始pix2pix使用batchnorm和dropout,可尝试开启/关闭eval()模式。# 对于[CycleGAN]:不影响,因为CycleGAN使用instancenorm且无dropout。if opt.eval:model.eval()# 遍历数据集进行测试for i, data in enumerate(dataset):# 只处理指定数量(num_test)的图像if i >= opt.num_test:  breakmodel.set_input(data)  # 从数据加载器中解析输入数据model.test()  # 运行推理(测试)

test方法的逻辑:

这部分定义在base_model.py里,相比train比较简单,只需要前向传播即可,不需要对网络进行反向传播优化

    def test(self):"""Forward function used in test time.This function wraps <forward> function in no_grad() so we don't save intermediate steps for backpropIt also calls <compute_visuals> to produce additional visualization results"""with torch.no_grad():self.forward()self.compute_visuals()
        visuals = model.get_current_visuals()  # 获取当前的图像结果img_path = model.get_image_paths()  # 获取当前图像的路径# 每处理5张图像,打印一次进度信息if i % 5 == 0:  print(f"正在处理第({i:04d})张图像... {img_path}")# 将图像保存到HTML页面中save_images(webpage, visuals, img_path, aspect_ratio=opt.aspect_ratio, width=opt.display_winsize)webpage.save()  # 保存HTML页面(最终结果汇总)

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

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

相关文章

第20章 Day24 原型链

原型链 EventTarget 不是 Window 的"构造函数" EventTarget 也是一个构造函数,Window 也是一个构造函数。它们之间是构造函数的继承关系。 正确的理解 // 两个构造函数之间的继承 Object.setPrototypeOf(Wi…

python自动化操作邮件

一、安装需要的模块pip install yagmail #专门为gmail设计的邮件发送模块,可以极大简化邮件发送流程,其他邮箱也可以使用 pip install keyring #安全密码管理,避免代码中硬编码密码等敏感信息 pip install schedu…

zabbix配置mysql监控

zabbix配置mysql监控 目录zabbix配置mysql监控1.创建用户2.编辑zabbix配置文件3.配置宏4.添加如下监控模板 1.创建用户 CREATE USER zbx_monitor@% IDENTIFIED BY password; GRANT REPLICATION CLIENT,PROCESS,SHOW DA…

redis实现定期关单

在SpringBoot项目中,实现订单超过24小时过期并自动关单,常见有以下几种方案,我会逐一说明,并给出推荐实现:✅ 推荐方案:使用 延迟队列(DelayQueue) 或 消息队列(如RabbitMQ延迟消息) 方案1:使用 Redis + 延…

详细介绍:5G nr频段_5g哪个信道信号强

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第18章 Day22 高阶混淆ast进阶

网站:https://www.mps.gov.cn/ 内容:加速乐一键解混淆 混淆代码 var _0x2414 = [wr7CksK8Uw==, wrbDosKFOQ==, woZNHCg=, w48zCBM=, wrbCnAka, bcOJKcO8, KCnDpMK3, w6F9FyY=, w5Rjw5xZ, WcKGGn4=, w7BVw6hs, M8OVwp…

关于ubuntu 用户切换的细节 su - user 和su user

只在「登录交互式 shell」(login shell)时执行 /etc/profile 会去跑 /etc/profile.d/*.sh。 如果你用 su seed,默认启动的是 非登录 shell,不会跑 /etc/profile,自然也不会加载 /etc/profile.d/conda.sh。 如果你…

网站的制作公司菜单宣传网站怎么做的

【Apache Doris】周FAQ集锦&#xff1a;第 1 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户和…

新开传奇网站180合击国际摄影网站

为什么xml_rpc服务端读取数据都是通过file_get_contents(‘php://input, ‘r)。而不是从$_POST中读取&#xff0c;正是因为xml_rpc数据规格是xml&#xff0c;它的Content-Type是text/xml。php://input碰到了multipart/form-data在使用xml-rpc的时候&#xff0c;server端获取cli…

网站开发软硬件配置大丰区住房和城乡建设局网站

距离春节还有不到一个月你准备好给家人的春节礼物了吗&#xff1f;疫情下&#xff0c;为了让程序猿同学开心加班小编提前准备了一份牛年大礼 周五福利日&#xff0c;人人都可免费领会员&#xff01;助你提前实现CSDN会员卡自由&#xff01;奖品多多&#xff0c;不仅有CSDN月卡会…

用 SeaTunnel 同步 MySQL 到 Doris:全量增量 + SQL 过滤

Apache SeaTunnel 能够实现 MySQL 到 Doris 的全量和增量数据同步,同时也支持 SQL 级别的数据过滤。Apache SeaTunnel 能够实现 MySQL 到 Doris 的全量和增量数据同步,同时也支持 SQL 级别的数据过滤。以下是具体实现…

在CodeBolcks下wxSmith的C++编程教程——使用自定义绘制和鼠标处理创建项目

0.前言欢迎来到 wxSmith 教程页面!wxSmith 与 Code::Blocks、wxWidgets 和 C++ 编译器相结合,为您提供一种所见即所得的方式来创建具有图形用户界面 (GUI) 的应用程序。该组合形成了一个用于快速应用程序开发 (RA…

trae 配置mysql_mcp

trae 配置mysql_mcpMySQL MCP 安装配置完整指南 🎉 成功案例 版本: @benborla29/mcp-server-mysql@2.0.2 状态: ✅ 安装成功 环境: Windows + Trae.ai 📋 安装步骤 1. 安装稳定版本 npm install -g @benborla29/mc…

Apache NiFi 1.28.1 集群 + Kerberos 认证 + 多租户模式部署

Apache NiFi 1.28.1 集群 + Kerberos 认证 + 多租户模式部署1. 系统要求Java 8 或 Java 112. 物料包准备包名 下载地址 说明nifi-1.28.1-bin.zip https://archive.apache.org/dist/nifi/1.28.1/nifi-1.28.1-bin.zip Ni…

【cv】cycleGAN代码解析:train.py

【cv】cycleGAN代码解析:train.pyPosted on 2025-09-25 16:37 SaTsuki26681534 阅读(0) 评论(0) 收藏 举报import time # 计时:统计每轮/每次迭代耗时 from options.train_o…

做移动网站优化网站建设过程中要怎么打开速度

这次我们将学着怎么从一个深度图里面导出边界。我们对3种不同种类的点很感兴趣:物体的边框的点&#xff0c;阴影边框点&#xff0c;和面纱点(在障碍物边界和阴影边界)&#xff0c;这是一个很典型的现象在通过雷达获取的3D深度。 下面是代码 /* \author Bastian Steder */#incl…

注册 网站开发 公司重庆招聘网

作者 | 轩辕之风O来源 | 编程技术宇宙相信大家这两天应该被这么一条新闻刷屏了&#xff1a;这个漏洞到底是怎么回事&#xff1f;核弹级&#xff0c;真的有那么厉害吗&#xff1f;怎么利用这个漏洞呢&#xff1f;我看了很多技术分析文章&#xff0c;都太过专业&#xff0c;很多非…

创建网站怎么创电子商务网站有哪些类型

项目介绍&#xff1a; 使用javaspringbootmysql开发的法律咨询网&#xff08;文书&#xff09;&#xff0c;系统包含管理员、用户角色&#xff0c;功能如下&#xff1a; 管理员&#xff1a;登录系统&#xff1b;用户管理&#xff1b;文章管理&#xff08;法律知识&#xff09…

网站建设公司业务在哪里来百度网站的总结

I老师就职于双非二本院校&#xff0c;希望通过出国研修以提升科研背景&#xff0c;在公派访学和申请导师出资的博士后之间&#xff0c;其选择了后者。最终我们落实了美国耶鲁大学的职位&#xff0c;头衔为Associate Research Scientist&#xff08;副研究科学家&#xff09;&am…

企业网站 联系我们电商培训机构有哪些?哪家比较好

常用示例 入门 Hello CMake CMake 是一个用于配置跨平台源代码项目应该如何配置的工具建立在给定的平台上。 ├── CMakeLists.txt # 希望运行的 CMake命令 ├── main.cpp # 带有main 的源文件 ├── include # 头文件目录 │ └── header.h └── src # 源代码目录 ├…