蘑菇mogu2.6.0:探索无限可能,开启你的数字新纪元

核心内容摘要

唐人社区视频:连接你我的数字桥梁,点亮海外生活新篇章
凪光在线视频

重回光影巅峰:2018中文字幕免费视频精选,开启跨越时空的视听盛宴

第一步准备数据印章分割-深度学习图像分割数据集印章分割数据可直接应用到一些常用深度学习分割算法中比如FCN、Unet、SegNet、DeepLabV

DeepLabV

DeepLabV

DeepLabV

PSPNet、RefineNet、HRnet、Mask R-CNN、Segformer、DUCK-Net模型等数据集总共有2000对图片数据质量非常高甚至可应用到工业落地的项目中第二步搭建模型本文选择EGEUNet其网络结构分别如下第三步训练代码1损失函数为dice_loss focal_loss2网络代码class EGEUNet(nn.Module): def __init__(self, num_classes1, input_channels3, c_list[8, 16, 24, 32, 48, 64], bridgeTrue, gt_dsFalse): super().__init__() self.bridge bridge self.gt_ds gt_ds self.encoder1 nn.Sequential( nn.Conv2d(input_channels, c_list[0], 3, stride1, padding

, ) self.encoder2 nn.Sequential( nn.Conv2d(c_list[0], c_list[1], 3, stride1, padding

, ) self.encoder3 nn.Sequential( nn.Conv2d(c_list[1], c_list[2], 3, stride1, padding

, ) self.encoder4 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[2], c_list[3]), ) self.encoder5 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[3], c_list[4]), ) self.encoder6 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[4], c_list[5]), ) if bridge: self.GAB1 group_aggregation_bridge(c_list[1], c_list[0]) self.GAB2 group_aggregation_bridge(c_list[2], c_list[1]) self.GAB3 group_aggregation_bridge(c_list[3], c_list[2]) self.GAB4 group_aggregation_bridge(c_list[4], c_list[3]) self.GAB5 group_aggregation_bridge(c_list[5], c_list[4]) print(group_aggregation_bridge was used) if gt_ds: self.gt_conv1 nn.Sequential(nn.Conv2d(c_list[4], 1,

) self.gt_conv2 nn.Sequential(nn.Conv2d(c_list[3], 1,

) self.gt_conv3 nn.Sequential(nn.Conv2d(c_list[2], 1,

) self.gt_conv4 nn.Sequential(nn.Conv2d(c_list[1], 1,

) self.gt_conv5 nn.Sequential(nn.Conv2d(c_list[0], 1,

) print(gt deep supervision was used) self.decoder1 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[5], c_list[4]), ) self.decoder2 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[4], c_list[3]), ) self.decoder3 nn.Sequential( Grouped_multi_axis_Hadamard_Product_Attention(c_list[3], c_list[2]), ) self.decoder4 nn.Sequential( nn.Conv2d(c_list[2], c_list[1], 3, stride1, padding

, ) self.decoder5 nn.Sequential( nn.Conv2d(c_list[1], c_list[0], 3, stride1, padding

, ) self.ebn1 nn.GroupNorm(4, c_list[0]) self.ebn2 nn.GroupNorm(4, c_list[1]) self.ebn3 nn.GroupNorm(4, c_list[2]) self.ebn4 nn.GroupNorm(4, c_list[3]) self.ebn5 nn.GroupNorm(4, c_list[4]) self.dbn1 nn.GroupNorm(4, c_list[4]) self.dbn2 nn.GroupNorm(4, c_list[3]) self.dbn3 nn.GroupNorm(4, c_list[2]) self.dbn4 nn.GroupNorm(4, c_list[1]) self.dbn5 nn.GroupNorm(4, c_list[0]) self.final nn.Conv2d(c_list[0], num_classes, kernel_size

self.apply(self._init_weights) def _init_weights(self, m): if isinstance(m, nn.Linear): trunc_normal_(m.weight, std.

if isinstance(m, nn.Linear) and m.bias is not None: nn.init.constant_(m.bias,

elif isinstance(m, nn.Conv1d): n m.kernel_size[0] * m.out_channels m.weight.data.normal_(0, math.sqrt(

/ n)) elif isinstance(m, nn.Conv2d): fan_out m.kernel_size[0] * m.kernel_size[1] * m.out_channels fan_out // m.groups m.weight.data.normal_(0, math.sqrt(

0 / fan_out)) if m.bias is not None: m.bias.data.zero_() def forward(self, x): out F.gelu(F.max_pool2d(self.ebn1(self.encoder1(x)), 2,

) t1 out # b, c0, H/2, W/2 out F.gelu(F.max_pool2d(self.ebn2(self.encoder2(out)), 2,

) t2 out # b, c1, H/4, W/4 out F.gelu(F.max_pool2d(self.ebn3(self.encoder3(out)), 2,

) t3 out # b, c2, H/8, W/8 out F.gelu(F.max_pool2d(self.ebn4(self.encoder4(out)), 2,

) t4 out # b, c3, H/16, W/16 out F.gelu(F.max_pool2d(self.ebn5(self.encoder5(out)), 2,

) t5 out # b, c4, H/32, W/32 out F.gelu(self.encoder6(out)) # b, c5, H/32, W/32 t6 out out5 F.gelu(self.dbn1(self.decoder1(out))) # b, c4, H/32, W/32 if self.gt_ds: gt_pre5 self.gt_conv1(out

t5 self.GAB5(t6, t5, gt_pre

gt_pre5 F.interpolate(gt_pre5, scale_factor32, modebilinear, align_cornersTrue) else: t5 self.GAB5(t6, t

out5 torch.add(out5, t

# b, c4, H/32, W/32 out4 F.gelu(F.interpolate(self.dbn2(self.decoder2(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c3, H/16, W/16 if self.gt_ds: gt_pre4 self.gt_conv2(out

t4 self.GAB4(t5, t4, gt_pre

gt_pre4 F.interpolate(gt_pre4, scale_factor16, modebilinear, align_cornersTrue) else: t4 self.GAB4(t5, t

out4 torch.add(out4, t

# b, c3, H/16, W/16 out3 F.gelu(F.interpolate(self.dbn3(self.decoder3(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c2, H/8, W/8 if self.gt_ds: gt_pre3 self.gt_conv3(out

t3 self.GAB3(t4, t3, gt_pre

gt_pre3 F.interpolate(gt_pre3, scale_factor8, modebilinear, align_cornersTrue) else: t3 self.GAB3(t4, t

out3 torch.add(out3, t

# b, c2, H/8, W/8 out2 F.gelu(F.interpolate(self.dbn4(self.decoder4(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c1, H/4, W/4 if self.gt_ds: gt_pre2 self.gt_conv4(out

t2 self.GAB2(t3, t2, gt_pre

gt_pre2 F.interpolate(gt_pre2, scale_factor4, modebilinear, align_cornersTrue) else: t2 self.GAB2(t3, t

out2 torch.add(out2, t

# b, c1, H/4, W/4 out1 F.gelu(F.interpolate(self.dbn5(self.decoder5(out

), scale_factor(2,

, modebilinear, align_cornersTrue)) # b, c0, H/2, W/2 if self.gt_ds: gt_pre1 self.gt_conv5(out

t1 self.GAB1(t2, t1, gt_pre

gt_pre1 F.interpolate(gt_pre1, scale_factor2, modebilinear, align_cornersTrue) else: t1 self.GAB1(t2, t

out1 torch.add(out1, t

# b, c0, H/2, W/2 out0 F.interpolate(self.final(out

, scale_factor(2,

, modebilinear, align_cornersTrue) # b, num_class, H, W if self.gt_ds: return (torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

, torch.sigmoid(gt_pre

), torch.sigmoid(out

else: return torch.sigmoid(out

第四步统计一些指标训练过程中的loss和miou第五步搭建GUI界面第六步整个工程的内容项目完整文件下载请见演示与介绍视频的简介处给出➷➷➷https://www.bilibili.com/video/BV1Qpz4BfECo/​

丈夫不在家儿媳想老公的背景故事-丈夫不在家儿媳想老公的背景故事应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123