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

巴音郭楞蒙古自治州网站建设_网站建设公司_色彩搭配_seo优化

社工站建站流程,icp是网站备案,佛山购物网站建设,搜索引擎营销优化诊断训练一、说明 AI厨师们#xff0c;今天您将学习如何准备计算机视觉中最重要的食谱之一#xff1a;U-Net。本文将叙述#xff1a;1语义与实例分割#xff0c;2 图像分割中还使用了其他损失#xff0c;例如Jaccard损失#xff0c;焦点损失#xff1b;3 如果2D图像分割对您来说… 一、说明 AI厨师们今天您将学习如何准备计算机视觉中最重要的食谱之一U-Net。本文将叙述1语义与实例分割2 图像分割中还使用了其他损失例如Jaccard损失焦点损失3 如果2D图像分割对您来说太容易了您可以查看3D图像分割因为模型要大得多因此要困难得多。 必要的项目代码在下面地址获取 1你可以在Github或Google Colab上找到完整的代码。 2我们将把U-Net应用于Kaggle的MRI分割数据集可在此处访问 脑部MRI图像与手动FLAIR异常分割掩模一起 www.kaggle.com 二、食谱的成分  数据集的探索创建数据集和数据加载器类架构的创建检查损失DICE和二进制交叉熵结果烹饪后技巧为事情增添趣味 三、数据集的探索 我们得到了一组255 x 255MRI扫描的2D图像以及它们相应的掩模我们必须将每个像素分类为0理智或1肿瘤。 以下是一些示例 第一行肿瘤第二行理智的受试者 四、数据集和数据加载器类 这是您在涉及神经网络的每个项目中找到的步骤。我们 4.1 数据集类 import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import Dataset, DataLoaderclass BrainMriDataset(Dataset):def __init__(self, df, transforms):# df contains the paths to all filesself.df df# transforms is the set of data augmentation operations we useself.transforms transformsdef __len__(self):return len(self.df)def __getitem__(self, idx):image cv2.imread(self.df.iloc[idx, 1])mask cv2.imread(self.df.iloc[idx, 2], 0)augmented self.transforms(imageimage, maskmask)image augmented[image] # Dimension (3, 255, 255)mask augmented[mask] # Dimension (255, 255)# We notice that the image has one more dimension (3 color channels), so we have to one one artificial dimension to the mask to match itmask np.expand_dims(mask, axis0) # Dimension (1, 255, 255)return image, mask 4.2 数据加载器 现在我们已经创建了 Dataset 类来重塑张量我们需要首先定义训练集用于训练模型、验证集用于监视训练和避免过度拟合和一个测试集以最终评估模型在看不见的数据上的性能。 # Split df into train_df and val_df train_df, val_df train_test_split(df, stratifydf.diagnosis, test_size0.1) train_df train_df.reset_index(dropTrue) val_df val_df.reset_index(dropTrue)# Split train_df into train_df and test_df train_df, test_df train_test_split(train_df, stratifytrain_df.diagnosis, test_size0.15) train_df train_df.reset_index(dropTrue)train_dataset BrainMriDataset(train_df, transformstransforms) train_dataloader DataLoader(train_dataset, batch_size32, shuffleTrue)val_dataset BrainMriDataset(val_df, transformstransforms) val_dataloader DataLoader(val_dataset, batch_size32, shuffleFalse)test_dataset BrainMriDataset(test_df, transformstransforms) test_dataloader DataLoader(test_dataset, batch_size32, shuffleFalse) 4.3 U-Net 架构 U-Net架构是图像分割任务的强大模型是一种卷积神经网络CNN其名称来自其U形结构。U-Net最初由Olaf Ronneberger等人在2015年题为“U-Net用于生物医学图像分割的卷积网络”的论文中开发。 其结构涉及编码下采样路径和解码上采样路径。 如今U-Net仍然是一个非常成功的模式它的成功来自两个主要因素 其对称结构U形前向连接图片上的灰色箭头 前向连接的主要思想是随着我们在图层中越来越深入我们会丢失一些关于原始图像的信息。然而我们的任务是分割图像我们需要精确的图像来分类每个像素。这就是为什么我们在对称解码器层的编码层的每一层重新注入图像的原因。 以下是在 Pytorch 中对其进行编码的方法 train_dataset BrainMriDataset(train_df, transformstransforms) train_dataloader DataLoader(train_dataset, batch_size32, shuffleTrue)val_dataset BrainMriDataset(val_df, transformstransforms) val_dataloader DataLoader(val_dataset, batch_size32, shuffleFalse)test_dataset BrainMriDataset(test_df, transformstransforms) test_dataloader DataLoader(test_dataset, batch_size32, shuffleFalse)class UNet(nn.Module):def __init__(self):super().__init__()# Define convolutional layers# These are used in the down path of the U-Net,# where the image is successively downsampledself.conv_down1 double_conv(3, 64)self.conv_down2 double_conv(64, 128)self.conv_down3 double_conv(128, 256)self.conv_down4 double_conv(256, 512)# Define max pooling layer for downsamplingself.maxpool nn.MaxPool2d(2)# Define upsampling layerself.upsample nn.Upsample(scale_factor2, modebilinear, align_cornersTrue)# Define convolutional layers# These are used in the up path of the U-Net,# where the image is successively upsampledself.conv_up3 double_conv(256 512, 256)self.conv_up2 double_conv(128 256, 128)self.conv_up1 double_conv(128 64, 64)# Define final convolution to output correct number of classes# 1 because there are only two classes (tumor or not tumor)self.last_conv nn.Conv2d(64, 1, kernel_size1)def forward(self, x):# Forward pass through the network# Down pathconv1 self.conv_down1(x)x self.maxpool(conv1)conv2 self.conv_down2(x)x self.maxpool(conv2)conv3 self.conv_down3(x)x self.maxpool(conv3)x self.conv_down4(x)# Up pathx self.upsample(x)x torch.cat([x, conv3], dim1)x self.conv_up3(x)x self.upsample(x)x torch.cat([x, conv2], dim1)x self.conv_up2(x)x self.upsample(x)x torch.cat([x, conv1], dim1)x self.conv_up1(x)# Final outputout self.last_conv(x)out torch.sigmoid(out)return out 五、损失和评估标准 像每个神经网络一样有一个目标函数一个损失我们用梯度下降来最小化。我们还引入了评估标准这有助于我们训练模型如果它没有改善比如说连续 3 个 epoch那么我们在模型过度拟合的情况下进行训练。 这里要保留本段的两点主要内容 损失函数是两个损失函数的组合DICE损失二进制交叉熵评估功能是DICE分数不要与DICE损失混淆 如果你做到了这一步恭喜你你已经做了最努力的事情。现在让我们训练模型并观察结果。 5.1 骰子损失  骰子损失 备注我们添加了一个平滑参数epsilon以避免被零除。 5.2 二进制交叉熵损失 公元前最后我们的总损失是 让我们一起实现它 def dice_coef_loss(inputs, target):smooth 1.0intersection 2.0 * ((target * inputs).sum()) smoothunion target.sum() inputs.sum() smoothreturn 1 - (intersection / union)def bce_dice_loss(inputs, target):inputs inputs.float()target target.float()dicescore dice_coef_loss(inputs, target)bcescore nn.BCELoss()bceloss bcescore(inputs, target)return bceloss dicescore 5.3 评估标准骰子系数 我们使用的评估函数是DICE分数。它介于 0 和 1 之间1 是最好的。 骰子分数的插图其数学实现如下 def dice_coef_metric(inputs, target):intersection 2.0 * (target * inputs).sum()union target.sum() inputs.sum()if target.sum() 0 and inputs.sum() 0:return 1.0return intersection / union 六、训练循环 def train_model(model_name, model, train_loader, val_loader, train_loss, optimizer, lr_scheduler, num_epochs): print(model_name)loss_history []train_history []val_history []for epoch in range(num_epochs):model.train() # Enter train mode# We store the training loss and dice scoreslosses []train_iou []if lr_scheduler:warmup_factor 1.0 / 100warmup_iters min(100, len(train_loader) - 1)lr_scheduler warmup_lr_scheduler(optimizer, warmup_iters, warmup_factor)# Add tqdm to the loop (to visualize progress)for i_step, (data, target) in enumerate(tqdm(train_loader, descfTraining epoch {epoch1}/{num_epochs})):data data.to(device)target target.to(device)outputs model(data)out_cut np.copy(outputs.data.cpu().numpy())# If the score is less than a threshold (0.5), the prediction is 0, otherwise its 1out_cut[np.nonzero(out_cut 0.5)] 0.0out_cut[np.nonzero(out_cut 0.5)] 1.0train_dice dice_coef_metric(out_cut, target.data.cpu().numpy())loss train_loss(outputs, target)losses.append(loss.item())train_iou.append(train_dice)# Reset the gradientsoptimizer.zero_grad()# Perform backpropagation to compute gradientsloss.backward()# Update the parameters with the computed gradientsoptimizer.step()if lr_scheduler:lr_scheduler.step()val_mean_iou compute_iou(model, val_loader)loss_history.append(np.array(losses).mean())train_history.append(np.array(train_iou).mean())val_history.append(val_mean_iou)print(Epoch [%d] % (epoch))print(Mean loss on train:, np.array(losses).mean(), \nMean DICE on train:, np.array(train_iou).mean(), \nMean DICE on validation:, val_mean_iou)return loss_history, train_history, val_history 七、结果 让我们评估一下我们在肿瘤受试者上的模型 结果看起来还不错我们可以看到该模型肯定已经学习了一些关于图像结构的有用信息。但是它可以更好地优化细分这可以通过我们稍后将审查的更高级技术来实现。 八、后记 如果你到目前为止已经成功了恭喜你如果你想为最后一餐增添趣味这里有一些有趣的资源可以看看 语义与实例分割图像分割中还使用了其他损失例如Jaccard损失焦点损失如果2D图像分割对您来说太容易了您可以查看3D图像分割因为模型要大得多因此要困难得多。nnUNet在许多不同的领域都是最先进的。自U-Net以来该神经网络没有引入突破性的新功能但是它的设计非常好并测试了UNet的不同配置并将它们集成以构建最强大的基线。 参考来源 Ronneberger O.Fischer P.Brox T.2015U-Net用于生物医学图像分割的卷积网络。在Navab N.Hornegger J.Wells W.Frangi A.编辑医学图像计算和计算机辅助干预 - MICCAI 2015。MICCAI 2015.计算机科学讲义第 9351 卷。斯普林格湛。U-Net: Convolutional Networks for Biomedical Image Segmentation | SpringerLinkBrain MRI segmentation | KaggleBrain MRI | Data Visualization | UNet | FPN | KaggleIsenseeFabianPaul F. JaegerSimon AA KohlJens Petersen和Klaus H. Maier-Hein。“nnU-Net一种基于深度学习的生物医学图像分割的自我配置方法。”自然方法 18第 2 期2021203–211。
http://www.lebaoying.cn/news/121302.html

相关文章:

  • 国外做化学申报的网站做网站去哪好
  • 东莞市新冠最新消息seo网站策划
  • 怎么自己搭建一个网站wordpress 换行无效
  • 建设网站北京网站租空间多少钱一年
  • ps如何做游戏模板下载网站如何做单网页网站
  • 网站建设行业发展状况关于公司网站改版通知
  • 北京微信网站设计报价wordpress附件中文乱码
  • 网站建设项目前分析确定网站开发团队
  • 阿里云做外贸网站三大外包公司
  • 网站调研怎样做辽宁建设工程信息网上开标流程
  • 网站建设内容清单北京专业制作网站
  • 国家网站icp备案查询wordpress前端找回密码
  • 网站手机版排名seo阿里云小程序开发
  • 网站建设广金手指排名关于政务网站建设
  • 一个网站需要多少空间小程序模板素材
  • 微商做网站网站免费dns二级域名
  • 旅游村庄网站建设方案wordpress 保存主题
  • 灰色网站欣赏保健品网站建设策划书
  • 做网站需不需要营业执照宜宾商城网站建设
  • 站长seo佛山网页设计师
  • 成都网站设计新闻四川建设银行手机银行下载官方网站下载
  • 公装设计网站哪家做网站性价比高
  • 商城网站建设协议网站开发会遇到哪些问题
  • 拼团购物网站开发建设部网站法律法规
  • 菏泽网站建设信息打字赚钱
  • 宣讲家网站官德修养与作风建设北湖区网站建设公司哪家好
  • cvm可以做网站服务器吗一般使用的分辨率的显示密度最优是多少dpi
  • 从哪里可以建公司网站广州越秀区最新通告
  • 怎么做网站8uftp北京网页制作设计企业
  • 网站基本建设是什么网站开发设计各部门职责