DDPM代码详细解读(2):Unet结构、正向和逆向过程、IS和FID测试、EMA优化 2023年7月26日 下午10:18 • 人工智能 • 阅读 54 以下是将 Unet_和门 _结构_结合的 _PyTorch 代码: import torch import torch.nn as nn import torch.nn.functional as F class ConvBlock(nn.Module): def __init__(self, in_channels, out_channels): super(ConvBlock, self).__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn1 = nn.BatchNorm2d(out_channels) self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, padding=1) self.bn2 = nn.BatchNorm2d(out_channels) def forward(self, x): x = self.conv1(x) x = self.bn1(x) x = F.relu(x) x = self.conv2(x) x = self.bn2(x) x = F.relu(x) return x class _UNet_(nn.Module): def __init__(self, in_channels=3, out_channels=1): super(_UNet_, self).__init__() self.down1 = ConvBlock(in_channels, 64) self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2) self.down2 = ConvBlock(64, 128) self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2) self.down3 = ConvBlock(128, 256) self.pool3 = nn.MaxPool2d(kernel_size=2, stride=2) self.down4 = ConvBlock(256, 512) self.pool4 = nn.MaxPool2d(kernel_size=2, stride=2) self.bottom = ConvBlock(512, 1024) self.up4 = nn.ConvTranspose2d(1024, 512, kernel_size=2, stride=2) self.upconv4 = ConvBlock(1024, 512) self.up3 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2) self.upconv3 = ConvBlock(512, 256) self.up2 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2) self.upconv2 = ConvBlock(256, 128) self.up1 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2) self.upconv1 = ConvBlock(128, 64) self.outconv = nn.Conv2d(64, out_channels, kernel_size=1) # 定义门 _结构_的两个分支 self.branch1 = nn.Sequential( nn.Conv2d(1024, 1024, kernel_size=3, padding=1), nn.BatchNorm2d(1024), nn.ReLU(inplace=True), nn.Conv2d(1024, 1, kernel_size=1) ) self.branch2 = nn.Sequential( nn.Conv2d(1024, 1024, kernel_size=3, padding=1), nn.BatchNorm2d(1024), nn.ReLU(inplace=True), nn.Conv2d(1024, 1, kernel_size=1) ) def forward(self, x): # 下采样 x1 = self.down1(x) x2 = self.pool1(x1) x3 = self.down2(x2) x4 = self.pool2(x3) x5 = self.down3(x4) x6 = self.pool3(x5) x7 = self.down4(x6) x8 = self.pool4(x7) # 中间部分 x9 = self.bottom(x8) # 上采样 x10 = self.up4(x9) x10 = torch.cat([x10, x7], dim=1) x11 = self.upconv4(x10) x12 = self.up3(x11) x12 = torch.cat([x12, x5], dim=1) x13 = self.upconv3(x12) x14 = self.up2(x13) x14 = torch.cat([x14, x3], dim=1) x15 = self.upconv2(x14) x16 = self.up1(x15) x16 = torch.cat([x16, x1], dim=1) x17 = self.upconv1(x16) # 输出结果 x18 = self.outconv(x17) # 计算门控信号 branch1 = self.branch1(x9) branch2 = self.branch2(x9) gate = F.sigmoid(branch2) x18 = gate*x18 + (1-gate)*branch1 return x18 上述 _代码_定义了一个 _Unet_模型和一个门 _结构_模块,并将它们结合起来。具体来说, _Unet_模型由一系列卷积块和反卷积块组成,使用了下采样和上采样操作实现了图像分割。门 _结构_模块由两个分支组成,它们分别计算了输入特征图的重要程度,用sigmoid函数将它们结合起来得到一个门控信号,然后将这个信号应用于 _Unet_模型输出的结果和门 _结构_模块的输出结果来获得最终的输出。 Original: https://blog.csdn.net/qq_41895747/article/details/123678236Author: 沉迷单车的追风少年Title: DDPM代码详细解读(2):Unet结构、正向和逆向过程、IS和FID测试、EMA优化 原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/717459/ 转载文章受原作者版权保护。转载请注明原作者出处! 人工智能 赞 (0) 0 生成海报 【自取】最近整理的,有需要可以领取学习: Linux核心资料大放送~ 全栈面试题汇总(持续更新&可下载) 一个提高学习100%效率的工具! 【超详细】深度学习面试题目! LeetCode Python刷题答案下载! LeetCode Java版刷题答案下载! LeetCode C++ 版本,抓紧保存! LeetCode GO语言 刷题答案下载! 大家都在看 jupyter notebook上使用GPU运行程序 问题描述 虽然jupyter上能后直接运行代码,但是默认是使用的cpu,我的电脑支持GPU,虽然也安装了tensorflow-gpu,但是运行的时候没有使用上。网上找了很多办法, … 人工智能 2023年5月23日 0093 Relational Graph Neural Network with Hierarchical Attention for Knowledge Graph Completion Relational Graph Neural Network with Hierarchical Attention for Knowledge Graph Completion… 人工智能 2023年6月1日 0064 JL-DCF: Joint Learning and Densely-Cooperative Fusion Framework for RGB-D Salient Object Detection 一种基于联合学习和密集协作融合的RGB-D显著性检测方法 2020 IEEE/CVF Conference on Computer Vision and Patter… 人工智能 2023年7月10日 0052 python构建知识图谱_NLP第20课:Neo4j 从入门到构建一个简单知识图谱 Neo4j 对于大多数人来说,可能是比较陌生的。其实,Neo4j 是一个图形数据库,就像传统的关系数据库中的 Oracel 和 MySQL一样,用来持久化数据。Neo4j 是最近几… 人工智能 2023年6月1日 0081 ubuntu18.04安装opencv4.5.5和opencv-contrib4.5.5 文章目录 步骤一:github下载源代码包 步骤二:安装依赖 步骤三:执行cmake 步骤四:Cmake 步骤五:安装库 步骤六:配置系统环境变量 步骤七:测试 步骤一:githu… 人工智能 2023年5月28日 00102 Windows10上,tensorflow的cpu版本安装 文章目录 一、Anaconda的安装 二、tensorflow的安装 * 1.tensorflow虚拟环境的安装 2.(非必要)conda的配置 3.tensorflow的配置 三… 人工智能 2023年5月23日 0088 ADC动态性能 定义总谐波失真(THD):指的是基波信号的均方根值与其谐波(一般仅前5次谐波比较重要)的和方根的平均值之比。 无杂散动态范围(SFDR): 指的是信号的均方根值与最差杂散信号(无论… 人工智能 2023年6月28日 0068 Jetson Nano 部署(3):TensorRT介绍 TensorRT介绍 TensorRT是一种高性能的神经网络推理 优化器和 运&#x… 人工智能 2023年7月14日 0078 制作道路提取标签 | labelme批量处理json文件为png格式 一、Labelme安装 1.在anaconda中新建环境,命名为labelme。 conda create -n labelme python=3.6 2.进入labelme环境,… 人工智能 2023年6月22日 0088 win10+cuda10.0+opencv455+opencv_contrib455实现yolov5(6.0,6.1版本)的GPU加速 说明:本文主要实现在win10下,使用VS2015或VS2017或VS2019,使用C++控制台程序或MFC程序,结合opencv以及yolov5转化的onnx模型,实现图像的实时… 人工智能 2023年7月19日 0067 PointRend图像分割论文实例分割部分解读 主要介绍实例分割,若有错误敬请指出 PointRend主要改进了Mask R-CNN 的Mask head,在Mask R-CNN的基础上,对图像中的实例边界上的点进行预测,从而生… 人工智能 2023年7月12日 0053 yolov5 yolov7 目标检测网络改进:引入特征细化网络,重建检测颈部网络,层层递进解决小目标检测问题 yolov5 yolov7 目标检测网络改进:引入特征细化网络,重建检测颈部网络,层层递进 1、参考文献:用于微小目标检测的上下文增强和特征细化网络 点击此处直达论文 本文摘要:提… 人工智能 2023年6月17日 00113 K210系列开发板介绍 勘智K210是一款什么样的芯片? 勘智K210是小编去年买的一块AIRV R3开发套件时接触的一款芯片。性价比不错,如下图所示:具有双核64位处理器,并自带独立FPU;有一块KPU… 人工智能 2023年7月14日 0080 点云作业python基础 DataFrame是pandas包中的重要数据类型,相当于表格数据类型,常用的操作如下: 创建DataFrame import pandas as pd df = pd.DataF… 人工智能 2023年7月8日 0078 基于机器学习和TFIDF的情感分类算法,详解自然语言处理 摘要:这篇文章将详细讲解自然语言处理过程,基于机器学习和TFIDF的情感分类算法,并进行了各种分类算法(SVM、RF、LR、Boosting)对比 本文分享自华为云社区《[Pyth… 人工智能 2023年7月2日 0077 【数据分析】——pandas 😊作者简介:大家好我是hellobigorange,大家可以叫我大橙子📃个人主页:hellobigorange的个人主页🔥系列专栏:数据分析(pandas-numpy-matplo… 人工智能 2023年6月15日 0085