【CV】GAN代码解析 image_folder.py

【CV】GAN代码解析 image_folder.py

Posted on 2025-09-24 16:07  SaTsuki26681534  阅读(0)  评论(0)    收藏  举报
"""A modified image folder classWe modify the official PyTorch image folder (https://github.com/pytorch/vision/blob/master/torchvision/datasets/folder.py)
so that this class can load images from both current directory and its subdirectories.
"""import torch.utils.data as data
# 导入 torch.utils.data 并起别名 data,以便继承 data.Dataset 实现自定义数据集
from pathlib import Path
# 从标准库导入 Path,用于跨平台、易用的路径处理
from PIL import ImageIMG_EXTENSIONS = ['.jpg', '.JPG', '.jpeg', '.JPEG','.png', '.PNG', '.ppm', '.PPM', '.bmp', '.BMP','.tif', '.TIF', '.tiff', '.TIFF',
]
# 定义可接受的图片扩展名列表(大小写都覆盖),后面用来做文件类型过滤def is_image_file(filename):return any(filename.endswith(extension) for extension in IMG_EXTENSIONS)
# 判断 filename 是否以任一允许的扩展名结尾;返回布尔值def make_dataset(dir, max_dataset_size=float("inf")):
# 定义函数 make_dataset(dir, max_dataset_size=float("inf")),
# 用于从目录递归收集图片路径,并支持数量上限images = []dir_path = Path(dir)
# 把传入的 dir 包装成 Path 对象 dir_path
# 用人话说就是用dir变量创建一个Path类的对象assert dir_path.is_dir(), f'{dir} is not a valid directory'# 断言 dir_path 必须是一个目录,否则抛错for path in sorted(dir_path.rglob('*')):# 使用 dir_path.rglob('*') 递归遍历该目录及子目录的所有路径,# 并先按字典序 sorted 固定遍历顺序(保证复现性)# 人话:遍历dir_path下的所有文件,并判断每一个文件是不是图像文件# 如果是图像的话就把对应图像路径加到images列表里if path.is_file() and is_image_file(path.name):images.append(str(path))return images[:min(max_dataset_size, len(images))]def default_loader(path):# 定义 default_loader(path)。# 用 Pillow 打开图片并统一 convert('RGB'),确保三通道(便于后续变换与模型输入统一)# 从str格式的图像路径中load RGB格式的图像对象return Image.open(path).convert('RGB')class ImageFolder(data.Dataset):
# 定义数据集类 ImageFolder,继承自 data.Datasetdef __init__(self, root, transform=None, return_paths=False,loader=default_loader):imgs = make_dataset(root)# 从数据集根目录root里收集图像文件,并存在imgs里if len(imgs) == 0: # 如果根目录里没有图像,则抛出异常raise(RuntimeError("Found 0 images in: " + root + "\n""Supported image extensions are: " + ",".join(IMG_EXTENSIONS)))self.root = rootself.imgs = imgsself.transform = transformself.return_paths = return_paths# return_paths 表示 __getitem__ 是否连同路径一起返回self.loader = loader# loader 为读图函数默认用 default_loaderdef __getitem__(self, index):# 根据index随机获取图像文件(在获取之前还需要进行对应的预处理)path = self.imgs[index]img = self.loader(path)if self.transform is not None:img = self.transform(img)# 若设置了 transform,则对图像执行变换(例如 ToTensor/Normalize/Resize 等)if self.return_paths:return img, pathelse:return imgdef __len__(self):return len(self.imgs)# 返回数据集中图片的数量 len(self.imgs)

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

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

相关文章

一些常用的网站

📚 我的常用网址收藏夹前言: 记录那些在我的数字生活中不可或缺的网站和工具,方便快速访问和分享。🚀 常用工具 开发与编程插件库: open-vsx - vscode/trae的历史插件下载 技术文档: MDN Web Docs - 前端开发者的…

systemd-nspawn容器体积精简和桥接网络实战

systemd-nspawn容器体积精简和桥接网络实战目录前言需求精简容器体积创建目录结构测试容器是否正常启动创建并测试容器的独立网络形成systemd服务文件。通过wifi连接网关的容器配置其他说明前言 以前我的树莓派服务是放…

运维自动化工具Ansible大总结20250914 - 教程

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

贵州省住房和城乡建设部网站成都住建局官网站首页

目录 概念图遍历深度优先搜索 (DFS)DFS 适用场景DFS 优缺点 广度优先搜索 (BFS)BFS 适用场景BFS 优缺点 DFS & BFS 异同点 图搜索Dijkstra算法A*算法Floyd算法Bellman-Ford算法SPFA算法 概念 图遍历和图搜索是解决图论问题时常用的两种基本操作。 图遍历是指从图中的某一个…

上海建筑 公司网站wordpress 伪静态

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

杭州网站前端建设seo全称是什么意思

目录 从上到下,你所看到的目录如下 /bin /bin 目录是包含一些二进制文件的目录,即可以运行的一些应用程序。 你会在这个目录中找到上面提到的 ls 程序,以及用于新建和删除文件和目录、移动它们基本工具。还有其它一些程序,等等。…

企业微信客服API模式接入第三方客服系统,对接大模型AI智能体

我们系统可以接入企业微信客服的API gofly.v1kf.com 联系vx:llike620企业微信客服是企业微信里面的一项功能,它整合了微信生态的优势,解决的是与临时访客进行实时沟通的需求 核心功能 多渠道接待:支持在微信内(公…

react使用ctx和reducer代替redux

入门版本 创建一个store,包含ctx、reduce、dispatch+action import { createContext, useContext } from react;// 定义ctx export const defaultValue = {count: 0, }; export const AppCtx = createContext(null);e…

KM 乱记

狠狠学习了先来看一个问题:给定 \(w_{1\sim n, 1\sim n}\),现在要求满足 \(\forall i, j\in [1, n], a_i + b_j\ge w_{i, j}\) 且 \(\sum a_i + \sum b_j\) 最小的 \(a_{1\sim n}, b_{1\sim n}\)。如果会线性规划对偶…

深入解析:B树与B+树的原理区别应用

深入解析:B树与B+树的原理&区别&应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…

linux中的服务监控,停用自动重启

#! /bin/shexport JAVA_HOME=/usr/lib/jvm/TencentKona-8.0.9-322/jre/bin/javaexport CLASSPATH=.:CLASSPATH:$JAVA_HOME/lib/export PATH=$PATH:$JAVA_HOME/bin# 进程名称proc_name=blog-1.0.0.jar#启动命令boot_cmd…

元氏县城有做网站广告的吗wordpress防爆破插件

想要在本地运行大型语言模型吗? Ollama框架提供了这样的机会。 这个框架是专为在Docker容器中部署LLM而设计的,简化了部署和管理流程。 安装Ollama后,你只需执行一条命令,即可在本地运行开源大型语言模型。 它将模型权重、配置…

RHEL7/CentOS7 install NVIDIA drivers and CUDA

# 1. 查看系统是否可以识别到 NVIDIA 显卡 lspci |grep -i nvidia # 2. 安装内核文件确保和内核版本一致 yum install kernel-devel kernel-headers yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)…

浅谈 Burnside 和 Polya 的证明

前言 请怀着批判性思维阅读,如果有任何问题欢迎前来踩爆我。 群 定义 如果一个集合 \(S\ne \varnothing\),且在 \(S\) 上的运算 \(\cdot\) 满足一下要求,得到我们称 \((S,\cdot)\) 为一个群。封闭性:\(\forall a,b…

算法学习笔记:支配对

引入 支配对通常用来解决一类点对贡献问题。具体来说,任意两个对象构成一个点对,我们做一定范围内的信息查询时,就相当于查询范围内的点对的信息并。但是这样点对的数量是 \(\mathcal{O}(n^2)\) 量级的,无法接受。…

在Windows10 Edge浏览器里安装DeepSider大模型插件来免费运用gpt-4o、NanoBanana等AI大模型

在Windows10 Edge浏览器里安装DeepSider大模型插件来免费运用gpt-4o、NanoBanana等AI大模型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !import…

西电PCB设计指南第5章学习笔记

西电PCB设计指南第5章学习笔记 五、常见类型PCB设计敏感电路常见的敏感电路 音频电子系统前级、精密仪器、光电探测转换电路、传感器特点: 容易受干扰的电路受干扰的原因: 空间电场耦合、磁场耦合、电路板绝缘不良的…

网站建设及管理使用情况汇报去菲律宾做it网站开发

背景 如果想在运行过程中想基于nacos数据变更做一些业务,比如想在运行过程中变更日志的级别,那么我们可以扩展nacos的监听。 步骤 定义一个配置类,用NacosConfigListener标记需要触发的方法,并用dataId标记需要监听的文件。如下…

ImageMagick - 关于图片压缩,通过dk整理的一些可用指令 - window64

测试可以通过命令行批量处理指定类型图片,少量图片的话直接搜“图压”就行了,一般图片还是可以的 下载链接:https://imagemagick.org/script/download.php window系统往下滑找到这个下载 指令: 进入对应文件夹下压…

【杂记】原 hack

键盘声碎打工夜,洛谷光寒算法天。 一题路径成疑冢,千军码农陷迷烟。 小蝙振翅破虚妄,数据如雷震前贤。 莫笑代码无证处,敢教日月换新篇!(抚尺一拍)列位看官,今日且听我道一段「洛谷奇谭芙卡米破阵记」!有诗为…