【Datawhale】扩散模型学习笔记 第一次打卡
文章目录
- 扩散模型学习笔记
- 1. 扩散模型库Diffusers
- 1.1 安装
- 1.2 使用
- 2. 从零开始搭建扩散模型
- 2.1 数据准备
- 2.2 损坏过程
- 2.3 模型构建
- 2.4 模型训练
- 2.5 采样
- 3. webui
扩散模型学习笔记
1. 扩散模型库Diffusers
1.1 安装
由于diffusers库更新较快,所以建议时常upgrade。
# pip
pip install --upgrade diffusers[torch]
# conda
conda install -c conda-forge diffusers
1.2 使用
from diffusers import DiffusionPipelinegenerator = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", use_safetensors=True)
generator.to("cuda")
image = generator("An image of a squirrel in Picasso style").images[0]
image.save("image_of_squirrel_painting.png")
2. 从零开始搭建扩散模型
2.1 数据准备
在这个示例中,我们将使用经典的MNIST数据集作为示范。MNIST数据集包含28x28像素的手写数字图像,每个像素值的范围从0到1。
2.2 损坏过程
我们希望能够控制输入数据的损坏程度,因此引入了一个参数 amount,该参数控制了噪声的程度。你可以使用以下方法来添加噪声:
noise = torch.rand_like(x)
noisy_x = (1 - amount) * x + amount * noise
如果 amount 为0,则输入数据保持不变。如果 amount 为1,输入数据将变为纯粹的噪声。通过混合输入数据和噪声,我们可以确保输出数据的范围仍在0到1之间。
2.3 模型构建
我们将使用UNet模型来处理噪声图像。UNet是一种用于图像分割的常见架构,由压缩路径和扩展路径组成。在这个示范中,我们将构建一个简化版本的UNet,它接收单通道图像,并通过卷积层在下行路径(down_layers)和上行路径(up_layers)之间具有残差连接。我们将使用最大池化进行下采样和 nn.Upsample 进行上采样。
2.4 模型训练
在模型训练过程中,模型的任务是将损坏的输入 noisy_x 转换为对原始图像 x 的最佳估计。我们使用均方误差(MSE)来比较模型的预测与真实值,然后使用反向传播算法来更新模型的参数。
2.5 采样
如果模型在高噪声水平下的预测不够理想,可以进行采样以生成更好的图像。你可以从完全随机的噪声图像开始,然后逐渐接近模型的预测。这意味着你可以检查模型的预测结果,然后只向预测的方向移动一小步,比如向预测值移动20%。这将生成一个具有较少噪声的图像,其中可能包含一些关于输入数据的结构提示。将这个新图像输入模型,希望得到比第一个预测更好的结果。这个过程可以迭代多次,以逐渐减小噪声并生成更好的图像。
这是一个简化的扩散模型搭建和训练的概述。你可以根据具体的问题和数据进行修改和优化,以获得更好的结果。希望这些步骤能帮助你理解如何搭建扩散模型并训练它。
from diffusers import DDPMScheduler, UNet2DModel
from PIL import Image
import torch
import numpy as npscheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
scheduler.set_timesteps(50)sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size)).to("cuda")
input = noisefor t in scheduler.timesteps:with torch.no_grad():noisy_residual = model(input, t).sampleprev_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sampleinput = prev_noisy_sampleimage = (input / 2 + 0.5).clamp(0, 1)
image = image.cpu().permute(0, 2, 3, 1).numpy()[0]
image = Image.fromarray((image * 255).round().astype("uint8"))
image
3. webui
参考我的另一篇博客:https://blog.csdn.net/qq_44824148/article/details/130389357
相关文章:
【Datawhale】扩散模型学习笔记 第一次打卡
文章目录 扩散模型学习笔记1. 扩散模型库Diffusers1.1 安装1.2 使用 2. 从零开始搭建扩散模型2.1 数据准备2.2 损坏过程2.3 模型构建2.4 模型训练2.5 采样 3. webui 扩散模型学习笔记 1. 扩散模型库Diffusers 1.1 安装 由于diffusers库更新较快,所以建议时常upgr…...
Spring Boot学习笔记
SpringBoot特征 特征 创建独立的 Spring 应用程序 直接嵌入 Tomcat、Jetty 或 Undertow(无需部署 WAR 文件) 提供“入门”依赖项以简化构建配置 尽可能自动配置 Spring 和 第三方库 提供生产就绪功能,例如指标、健康检查和外部化配置 完…...
图像边缘检测--(Sobel、Laplacian、Canny)
1、图像中各种形状的检测是计算机视觉领域中非常常见的技术之一,特别是图像中直线的检测,圆的检测,图像边缘的检测等,下面将介绍如何快速检测图像边缘。 2、边缘是不同区域的分界线,是周围(局部)像素有显著变化的像素的集合,有幅值与方向两个属性。这个不是绝对的定义,…...
【计算机网络笔记】计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 系列文章目录时延带宽积丢包率吞吐量/率&am…...
自学(黑客技术)——网络安全高效学习方法
前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客,…...
【Linux】进程概念与进程状态
文章目录 一、进程概念1.进程的概念2.进程的描述-PCB 二、进程相关的基本操作1.组织进程2.查看进程3.结束进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork初识 三、进程状态1.普遍操作系统层面的进程状态2.Linux操作系统的进程状态 四、两种特殊的进程状态1.僵尸…...
解决安装nvm以后windows cmd无法找到npm/yarn命令的问题
安装了nodejs多版本管理工具nvm以后,会出现windows cmd无法找到npm/yarn命令的问题 只要一运行npm/yarn就会提示:不是内部命令,找不到运行路径之类的。 解决办法:首先打开windows环境变量的配置,查看NVM_SYMLINK指向…...
深入解析Java正则表达式:定义、原理和实例
1.前言 1.1简介 正则表达式在Java开发中扮演着重要的角色。本文将详细讲解Java正则表达式的定义、工作原理,并提供一些实例和示例代码,帮助读者更好地理解和应用正则表达式 1.2使用场景的介绍 正则表达式适用于许多问题和场景,包括但不限于…...
DatenLord前沿技术分享 No.38
达坦科技专注于打造新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云云壁垒,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…...
ms-sql server sql 把逗号分隔的字符串分开
案例: sql 查询-字段里是逗号,分隔开的数组,查询匹配数据 sql 查询-字段里是逗号,分隔开的数组,查询匹配数据_sql server 数组匹配-CSDN博客 SQL SERVER 把逗号隔开的字符串拆分成行 SQL SERVER 把逗号隔开的字符串拆分成行_sqlserver拆分…...
零基础制作预约小程序,微信小程序预约服务指南
随着互联网的发展,越来越多的服务开始转移到线上。预约服务也是其中之一。通过微信小程序,商家可以提供更加便捷的预约服务,让客户随时随地预约商品或服务。本文将介绍如何零基础制作预约小程序,包括使用第三方制作平台、选择合适…...
算法---交替合并字符串
题目 给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。 示例 1: 输入:word1 “abc”…...
下载运行ps软件提示因为计算机中丢失d3dcompiler_47.dll解决方法
在计算机系统中,DLL文件(动态链接库)是一种重要的共享库,它包含了可被多个程序使用的代码和数据。然而,当某些DLL文件丢失或损坏时,可能会导致程序无法正常运行。本文将介绍四种解决D3DCompiler_47.dll缺失…...
Flutter Image组件如何处理图片加载过程中的错误?
在Flutter中,Image组件可以通过监听加载过程中的错误来处理图片加载过程中的错误。 新一代ChatGpt智能助手 文客微创 具体来说,可以使用Image.network或Image.asset方法加载图片,并使用Builder模式来监听图片加载过程中的状态。 例如&…...
在mysql8查询中使用ORDER BY结合LIMIT时,分页查询时出现后一页的数据重复前一页的部分数据。
这里写目录标题 问题描述:问题模拟:原因分析问题解释问题解决验证官方文档支持 问题描述: 在mysql8查询中使用ORDER BY结合LIMIT时,分页查询时出现后一页的数据重复前一页的部分数据。 问题模拟: 表table_lock_test&…...
【SA8295P 源码分析 (三)】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析
【SA8295P 源码分析】97 - QNX AIS Camera 框架介绍 及 Camera 工作流程分析 一、QNX AIS Server 框架分析二、QNX Hypervisor / Android GVM 方案介绍三、Camera APP 调用流程分析四、QCarCam 状态转换过程介绍五、Camera 加串-解串 硬件链路分析六、摄像头初始化检测过程介绍…...
基于epoll封装非阻塞的reactor框架(附源码)
C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、reactor架构二、client端reactor代码三、server端reactor代码四、单reactor架构可以实现百万并发总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项…...
安装Git和git命令使用
文章目录 安装Git创建版本库版本回退工作区和暂存区管理修改撤销修改 安装Git 在Windows上安装Git 在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。 安装完成后,在开始菜单里找到“Git”->“Git Bash”&…...
【SA8295P 源码分析 (四)】65 - emac0-phy 与 emac1-switch兼容 方案实现
【SA8295P 源码分析】65 - emac0-phy 与 emac1-switch兼容 方案实现 系列文章汇总见:《【SA8295P 源码分析 (四)】网络模块 文章链接汇总 - 持续更新中》 本文链接:《【SA8295P 源码分析 (四)】65 - emac0-phy 与 emac1-switch兼容 方案实现》 本文在前文《【SA8295P 源码分析…...
SpringSecurity源码学习二:异常处理
目录 1. 原理2. 组件3. ExceptionTranslationFilter3.1 默认过滤器顺序3.2 ExceptionTranslationFilter源码3.2.1 AuthenticationException异常3.2.2 AccessDeniedException异常 总结 1. 原理 Spring Security 异常处理的原理是通过一系列的异常处理器来处理在安全验证和授权过…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
