当前位置: 首页 > wzjs >正文

扁平化色块风格的网站有没类似建设通的免费网站

扁平化色块风格的网站,有没类似建设通的免费网站,网站建设mvc三层框架图,餐厅装修图像去噪是计算机视觉中的一个基础问题,在医学图像、遥感、夜间视觉等领域有广泛应用。本文将手把手带你用 PyTorch 构建一个 UNet 架构的图像去噪模型,包括数据预处理、网络搭建、PSNR 评估与模型保存的完整流程。 本项目已支持将数据增强版本保存为独立…

图像去噪是计算机视觉中的一个基础问题,在医学图像、遥感、夜间视觉等领域有广泛应用。本文将手把手带你用 PyTorch 构建一个 UNet 架构的图像去噪模型,包括数据预处理、网络搭建、PSNR 评估与模型保存的完整流程。

本项目已支持将数据增强版本保存为独立图像对,用于数据集扩充或训练可视化。

 项目结构

 

1. 数据集加载与预处理

我们构建了一个 DenoisingDataset 类,用于加载 noisy-clean 图像对,并转换为 PyTorch Tensor:

# --- 数据集定义 ---
class DenoisingDataset(Dataset):def __init__(self, noisy_dir, clean_dir, transform=None):self.noisy_paths = sorted([os.path.join(noisy_dir, f) for f in os.listdir(noisy_dir)])self.clean_paths = sorted([os.path.join(clean_dir, f) for f in os.listdir(clean_dir)])self.transform = transform if transform else transforms.ToTensor()def __len__(self):return len(self.noisy_paths)def __getitem__(self, idx):noisy_img = Image.open(self.noisy_paths[idx]).convert("RGB")clean_img = Image.open(self.clean_paths[idx]).convert("RGB")return self.transform(noisy_img), self.transform(clean_img)

可在此基础上扩展数据增强(如随机裁剪、翻转、旋转等),提升模型泛化能力。

2. UNet 去噪模型结构

相比简单 CNN,我们采用了经典的 UNet 网络,具有强大的上下文信息融合能力,特别适合图像恢复任务。

结构亮点:

  • 编码器-解码器结构

  • 三层下采样 + 三层上采样

  • 每一层都使用跳跃连接融合细节信息

class UNetDenoiser(nn.Module):def __init__(self):super(UNetDenoiser, self).__init__()# Encoderself.enc1 = self.conv_block(3, 64)self.enc2 = self.conv_block(64, 128)self.enc3 = self.conv_block(128, 256)self.pool = nn.MaxPool2d(2)# Bottleneckself.bottleneck = self.conv_block(256, 512)# Decoderself.up3 = nn.ConvTranspose2d(512, 256, kernel_size=2, stride=2)self.dec3 = self.conv_block(512, 256)self.up2 = nn.ConvTranspose2d(256, 128, kernel_size=2, stride=2)self.dec2 = self.conv_block(256, 128)self.up1 = nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2)self.dec1 = self.conv_block(128, 64)# Outputself.final = nn.Conv2d(64, 3, kernel_size=1)def conv_block(self, in_channels, out_channels):return nn.Sequential(nn.Conv2d(in_channels, out_channels, 3, padding=1), nn.ReLU(inplace=True),nn.Conv2d(out_channels, out_channels, 3, padding=1), nn.ReLU(inplace=True))def forward(self, x):# Encodere1 = self.enc1(x)            # [B, 64, H, W]e2 = self.enc2(self.pool(e1))  # [B, 128, H/2, W/2]e3 = self.enc3(self.pool(e2))  # [B, 256, H/4, W/4]# Bottleneckb = self.bottleneck(self.pool(e3))  # [B, 512, H/8, W/8]# Decoderd3 = self.up3(b)           # [B, 256, H/4, W/4]d3 = self.dec3(torch.cat([d3, e3], dim=1))d2 = self.up2(d3)          # [B, 128, H/2, W/2]d2 = self.dec2(torch.cat([d2, e2], dim=1))d1 = self.up1(d2)          # [B, 64, H, W]d1 = self.dec1(torch.cat([d1, e1], dim=1))return self.final(d1)

输出为与输入同尺寸的 RGB 图像。

3. 评估指标:PSNR

我们使用图像恢复领域常用的 峰值信噪比(PSNR) 衡量输出图像质量:

# --- PSNR 计算函数 ---
def calculate_psnr(img1, img2):mse = torch.mean((img1 - img2) ** 2)if mse == 0:return float("inf")return 20 * torch.log10(1.0 / torch.sqrt(mse))

PSNR 越高代表还原质量越好,一般能达到 30dB 以上的去噪模型就较为可用了。

4. 模型训练主流程

训练使用 MSELoss 作为重建损失,优化器为 Adam,默认训练 50 个 epoch:

# --- 主训练过程 ---
def train_denoiser():noisy_dir = "dataset/noisy"clean_dir = "dataset/clean"batch_size = 1num_epochs = 50lr = 0.0005device = torch.device("cuda" if torch.cuda.is_available() else "cpu")dataset = DenoisingDataset(noisy_dir, clean_dir, transform=transforms.ToTensor())dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)# model = SimpleDenoiser().to(device)# 替换为 UNetmodel = UNetDenoiser().to(device)criterion = nn.MSELoss()optimizer = optim.Adam(model.parameters(), lr=lr)for epoch in range(num_epochs):model.train()total_loss = 0.0total_psnr = 0.0for noisy, clean in dataloader:noisy, clean = noisy.to(device), clean.to(device)denoised = model(noisy)loss = criterion(denoised, clean)optimizer.zero_grad()loss.backward()optimizer.step()total_loss += loss.item()total_psnr += calculate_psnr(denoised, clean).item()avg_loss = total_loss / len(dataloader)avg_psnr = total_psnr / len(dataloader)print(f"Epoch [{epoch+1}/{num_epochs}] - Loss: {avg_loss:.4f}, PSNR: {avg_psnr:.2f} dB")# 保存模型os.makedirs("weights", exist_ok=True)torch.save(model.state_dict(), "weights/denoiser.pth")print("模型已保存为 weights/denoiser.pth")

训练完成后,模型将保存到 weights/denoiser.pth,后续可用于推理、部署、导出为 ONNX 等操作。

5. 训练效果

6. 未来可扩展方向

你可以基于这个项目进一步扩展:

  • 加入 RandomCropColorJitter 等数据增强

  • 替换为 SwinIR、Uformer 等更强的图像恢复模型

  • 迁移至 TensorRT / ONNX for deployment

  • 训练灰度图(单通道)或医学图像(DICOM)

结语

通过本文,我们从零实现了一个 完整的图像去噪深度学习系统,涵盖数据读取、模型搭建、训练与保存,适合作为图像恢复任务的起点项目。

如果你有更小的数据集,推荐加入数据增强;如果你追求精度,建议使用 Uformer 或 Transformer-based 模型。


文章转载自:

http://3LLZ9AaM.sbjhm.cn
http://UnuO976O.sbjhm.cn
http://VRJY2Ykx.sbjhm.cn
http://LvmQITt5.sbjhm.cn
http://xYORTA55.sbjhm.cn
http://cEc7ZsDB.sbjhm.cn
http://F7JIObFL.sbjhm.cn
http://PoVbTevE.sbjhm.cn
http://pVV10iaA.sbjhm.cn
http://G3qbazPk.sbjhm.cn
http://26gE6PZr.sbjhm.cn
http://kd96TW00.sbjhm.cn
http://7S0jUhT1.sbjhm.cn
http://fSaPAXgf.sbjhm.cn
http://CcEEN9KD.sbjhm.cn
http://hiQc8D9j.sbjhm.cn
http://DYC4JI4f.sbjhm.cn
http://LFnBWd19.sbjhm.cn
http://0lRurjsZ.sbjhm.cn
http://7HdefQdj.sbjhm.cn
http://4DCT3mol.sbjhm.cn
http://0r4ZC9gj.sbjhm.cn
http://xqq4FUqV.sbjhm.cn
http://BFyHHil5.sbjhm.cn
http://ovxdkGQf.sbjhm.cn
http://R5mDObeO.sbjhm.cn
http://YwmHE6q4.sbjhm.cn
http://w54eXZFN.sbjhm.cn
http://ndvGmiKV.sbjhm.cn
http://sGzNjbF8.sbjhm.cn
http://www.dtcms.com/wzjs/748219.html

相关文章:

  • 大连小程序制作开发seo推广公司排名
  • 江西专业的网站建设制作深圳网站建设的
  • 个人如何做短视频网站十大互联网公司排名
  • 网站流量突然增加中国空间站完成图
  • 嘉兴网站设计网站建设忘记密码邮箱设置
  • 杰恩设计网站是谁做的大濮网
  • 襄阳微网站建设营销型网站建设供货商
  • zencart 官方网站课程网站建设的设计报告
  • 网站建设哪家较好自己做网站卖仿货
  • 部门网站建设怎么做中国最新新闻
  • 网站建设教育机构网络文化经营许可证价格
  • 专业网站建设网站价格wordpress 当前栏目id
  • 网站 dns 解析seo先上排名后收费
  • 长沙seo公司网站优化无代码快速搭建网站
  • 百度xml网站地图网站上面的水印怎么做的
  • 域名是网站吗邮件网站排名
  • 新闻源代发网站怎么做优惠做网站
  • 河源网站页面优化ppt小型人力资源公司注册
  • 建筑人才招聘哪个网站最好能下短视频网站做牙
  • 公司网站模板 网盘下载自己做的网站是怎么赚钱
  • rio门户网站的制作合肥的网站建设州
  • 静态网站登陆怎么做设计公司官网首页
  • 直播网站怎么做的企业网站 seo怎么做
  • 现在做网站建设都是自建wordpress中国风主题下载
  • 龙井网站建设服务好的高端网站建设企业
  • 泽州县住房保障和城乡建设局网站ip或域名查询网
  • 跨国网站浏览器安徽企业网站制作
  • 做网站 宁波nat123做视频网站
  • 电子商务网站建设 市场分析软件技术专业介绍及就业方向
  • 东莞网站建设企业wp做网站难吗