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

巴彦淖尔市网站制作凡客属于什么档次的品牌

巴彦淖尔市网站制作,凡客属于什么档次的品牌,宣传片制作公司营业范围要求,北京seo教师概述 在移动设备上执行实时像素级分割任务具有重要意义。现有的基于分割的深度神经网络需要大量的浮点运算#xff0c;并且通常需要较长时间才能投入使用。本文提出的ENet架构旨在减少潜在的计算负担。ENet在保持或提高分割精度的同时#xff0c;相比现有的分割网络#xf…概述 在移动设备上执行实时像素级分割任务具有重要意义。现有的基于分割的深度神经网络需要大量的浮点运算并且通常需要较长时间才能投入使用。本文提出的ENet架构旨在减少潜在的计算负担。ENet在保持或提高分割精度的同时相比现有的分割网络速度提升了18倍参数量减少了79倍。 论文地址https://arxiv.org/abs/1606.02147 介绍 随着增强现实设备、智能家居设备和自动驾驶技术的兴起将语义分割算法移植到性能较低的移动设备上变得尤为迫切。语义分割算法对图像中的每个像素进行分类标记。近期大规模数据集的可用性以及强大的计算资源如GPU和TPU的出现推动了卷积神经网络在超越传统计算机视觉算法方面取得了显著进展。尽管卷积网络在分类和识别任务上取得了良好的效果但在进行像素级分割时往往产生粗糙的空间结果。因此通常需要将其他算法如基于颜色的分割、条件随机场等与之结合以增强分割结果。 为了实现图像的空间分类和精细分割已经出现了如SegNet、FCN等网络结构这些结构通常基于VGG-16等大型多分类网络。然而这些网络由于参数量大和推理时间长不适用于要求图像处理速度超过10fps的移动设备或电池供电的应用设备。 本文提出的网络结构旨在实现快速推理和高准确率的分割。 相关工作 语义分割在图像理解和目标检测中扮演着关键角色尤其在增强现实和自动驾驶中其实时性要求极高。当前的计算机视觉应用普遍采用深度神经网络其中场景分析较好的卷积网络采用编码-解码结构受自编码器启发。SegNet中的编码-解码结构得到了改进编码部分类似于VGG的卷积网络用于分类解码部分主要用于上采样。但这些网络的参数量大导致推理时间长。SegNet通过移除VGG16的全连接层来减少浮点运算和内存占用但其轻量级网络仍无法实现实时分割。 其他结构采用简单的分类器后接CRF作为后处理步骤但这些复杂的后处理操作常常无法准确标记图像中的小物体。CNN结合RNN可以提高准确率但无法解决速度问题。RNN可作为后处理手段与其他技术结合使用。 网络结构 ENet网络结构参考了ResNet描述为一个主分支和一个带有卷积核的附加分支最后通过像素级相加进行融合。每个block包含三个卷积层一个1x1的映射用于维度减少一个主卷积层一个1x1的扩张。在这些层之间穿插批量归一化BN层和PReLU层定义为bottleneck模型。如果bottleneck进行下采样则在主分支上添加最大池化层并将第一个1x1的映射替换为2x2、步长为2的卷积对激活值进行padding以匹配feature map尺寸。卷积核大小为3x3类型包括普通卷积、空洞卷积和转置卷积有时用1x5或5x1的非对称卷积替换。为进行正则化在bottleneck2.0之前使用p0.01其他条件下使用p0.1。 ENet的初始部分包含一个单独的block第一阶段包含五个bottleneck部分。第二、三阶段结构相同但第三阶段开始时没有下采样过程。前三个阶段为编码阶段第四、五阶段为解码阶段。为减少内核调用和内存占用网络未使用偏差项。在每个卷积层和pReLU层之间添加BN层。在解码网络部分最大池化层被最大上采样层代替padding被无偏差项的空间卷积替换。ENet在最后一个上采样过程中未使用最大池化索引因为输入图像的通道数为3而输出通道数为类别数。最终使用全卷积模型作为网络的最后部分占用部分解码网络的处理时间。 设计选择 Feature map尺寸在语义分割中对图像进行下采样存在两个缺点一是分辨率减少导致空间位置信息损失如边界信息二是全像素级分割要求输出与输入尺寸相同意味着下采样后必须进行同等程度的上采样增加了模型大小和计算资源。为解决第一个问题ENet采用SegNet的方式保留最大池化过程中最大值的索引以在解码网络中生成稀疏的上采样maps。考虑到内存需求避免过度下采样以免影响分割准确率。 下采样的优点下采样后的图像进行卷积操作具有较大的感受野有助于获取更多上下文信息有利于不同类别的区分。研究发现使用空洞卷积效果更佳。 Early downsampling为实现良好的分割效果和实时操作需处理大尺寸输入图像这非常消耗资源。ENet的前两个block大幅减小输入尺寸同时只使用部分feature map。由于可视化信息具有高度空间冗余可以压缩为更有效的表达形式。网络初始部分作为特征提取和预处理输入。 解码尺寸大小SegNet具有高度对称的网络结构而ENet是非对称的包含较大的编码层和较小的解码网络。编码层类似于原始分类网络处理较小数据并进行信息处理和滤波解码网络对编码网络输出进行上采样微调细节。 非线性操作研究发现去除网络初始层中的大部分ReLU层可提升分割效果认为网络深度不足。随后将所有ReLU替换为PReLUs为每张feature map增加额外参数。 信息保留的维度变化下采样是必要的但剧烈维度衰减不利于信息流动。为解决这一问题ENet在池化层后接卷积层以增加维度进而增加计算资源。将池化和卷积操作并行执行然后进行拼接。在ResNet结构中下采样时第一个1x1映射使用步长为2的卷积丢弃了约75%的输入信息。将卷积核增至2x2有助于信息保留。 分解卷积核二维卷积可分解为两个一维卷积核nxn - nx1, 1xn。ENet使用5x1, 1x5的非对称卷积减小过拟合风险增加感受野。卷积核分解还减少了参数量加上非线性处理使计算功能更丰富。 空洞卷积ENet将bottleneck中的卷积层替换为空洞卷积并进行串联增大感受野提高分割的IOU。 正则化现有分割数据集有限网络训练易过拟合。ENet采用空间Dropout进行处理。 代码PyTorch实现 initial block class InitialBlock(nn.Module):def __init__(self,in_channels,out_channels):super(InitialBlock, self).__init__()self.conv nn.Conv2d(in_channels, out_channels-in_channels, kernel_size3, stride2,padding1, biasFalse)self.pool nn.MaxPool2d(kernel_size3,stride2,padding1)self.bn nn.BatchNorm2d(out_channels)self.relu nn.PReLU()def forward(self, x):return self.relu(self.bn(torch.cat([self.conv(x),self.pool(x)],dim1))) bottleneck module class RegularBottleneck(nn.Module):def __init__(self,in_places,places, stride1, expansion 4,dilation1,is_reluFalse,asymmetricFalse,p0.01):super(RegularBottleneck, self).__init__()mid_channels in_places // expansion self.bottleneck nn.Sequential(Conv1x1BNReLU(in_places, mid_channels, False),AsymmetricConv(mid_channels, 1, is_relu) if asymmetric else Conv3x3BNReLU(mid_channels, mid_channels, 1,dilation, is_relu),Conv1x1BNReLU(mid_channels, places,is_relu),nn.Dropout2d(pp))self.relu nn.ReLU(inplaceTrue) if is_relu else nn.PReLU()def forward(self, x):residual x out self.bottleneck(x)out residual out self.relu(out)return outclass DownBottleneck(nn.Module):def __init__(self,in_places,places, stride2, expansion 4,is_reluFalse,p0.01):super(DownBottleneck, self).__init__()mid_channels in_places // expansion self.bottleneck nn.Sequential(Conv2x2BNReLU(in_places, mid_channels, is_relu),Conv3x3BNReLU(mid_channels, mid_channels, 1, 1, is_relu),Conv1x1BNReLU(mid_channels, places,is_relu),nn.Dropout2d(pp))self.downsample nn.MaxPool2d(3,stridestride,padding1,return_indicesTrue)self.relu nn.ReLU(inplaceTrue) if is_relu else nn.PReLU()def forward(self, x):out self.bottleneck(x)residual,indices self.downsample(x)n, ch, h, w out.size()ch_res residual.size()[1]padding torch.zeros(n, ch - ch_res, h, w)residual torch.cat((residual, padding), 1)out residual out self.relu(out)return out, indicesclass UpBottleneck(nn.Module):def __init__(self,in_places,places, stride2, expansion 4,is_reluTrue,p0.01):super(UpBottleneck, self).__init__()mid_channels in_places // expansion self.bottleneck nn.Sequential(Conv1x1BNReLU(in_places,mid_channels,is_relu),TransposeConv3x3BNReLU(mid_channels,mid_channels,stride,is_relu),Conv1x1BNReLU(mid_channels,places,is_relu),nn.Dropout2d(pp))self.upsample_conv Conv1x1BN(in_places, places)self.upsample_unpool nn.MaxUnpool2d(kernel_size2)self.relu nn.ReLU(inplaceTrue) if is_relu else nn.PReLU()def forward(self, x, indices):out self.bottleneck(x)residual self.upsample_conv(x)residual self.upsample_unpool(residual,indices)out residual out self.relu(out)returnarchitecture class ENet(nn.Module):def __init__(self, num_classes):super(ENet, self).__init__()self.initialBlock InitialBlock(3,16)self.stage1_1 DownBottleneck(16, 64, 2)self.stage1_2 nn.Sequential(RegularBottleneck(64, 64, 1),RegularBottleneck(64, 64, 1),RegularBottleneck(64, 64, 1),RegularBottleneck(64, 64, 1),)self.stage2_1 DownBottleneck(64, 128, 2)self.stage2_2 nn.Sequential(RegularBottleneck(128, 128, 1),RegularBottleneck(128, 128, 1, dilation2),RegularBottleneck(128, 128, 1, asymmetricTrue),RegularBottleneck(128, 128, 1, dilation4),RegularBottleneck(128, 128, 1),RegularBottleneck(128, 128, 1, dilation8),RegularBottleneck(128, 128, 1, asymmetricTrue),RegularBottleneck(128, 128, 1, dilation16),)self.stage3 nn.Sequential(RegularBottleneck(128, 128, 1),RegularBottleneck(128, 128, 1, dilation2),RegularBottleneck(128, 128, 1, asymmetricTrue),RegularBottleneck(128, 128, 1, dilation4),RegularBottleneck(128, 128, 1),RegularBottleneck(128, 128, 1, dilation8),RegularBottleneck(128, 128, 1, asymmetricTrue),RegularBottleneck(128, 128, 1, dilation16),)self.stage4_1 UpBottleneck(128, 64, 2, is_reluTrue)self.stage4_2 nn.Sequential(RegularBottleneck(64, 64, 1, is_reluTrue),RegularBottleneck(64, 64, 1, is_reluTrue),)self.stage5_1 UpBottleneck(64, 16, 2, is_reluTrue)self.stage5_2 RegularBottleneck(16, 16, 1, is_reluTrue)self.final_conv nn.ConvTranspose2d(in_channels16, out_channelsnum_classes, kernel_size3, stride2, padding1,output_padding1, biasFalse)def forward(self, x):x self.initialBlock(x)x,indices1 self.stage1_1(x)x self.stage1_2(x)x, indices2 self.stage2_1(x)x self.stage2_2(x)x self.stage3(x)x self.stage4_1(x, indices2)x self.stage4_2(x)x self.stage5_1(x, indices1)x self.stage5_2(x)out self.final_conv(x)return
http://www.w-s-a.com/news/989724/

相关文章:

  • 常州网站关键字优化淘客网站怎么做排名
  • 全flash网站制作教程网站做进一步优化
  • 建设网站步骤是如何做自媒体和网站签约赚点击
  • 网站建设的闪光点网站 备案 拍照
  • 那些企业需要做网站九洲建设集团网站
  • 中山企业做网站昆明做网站价格
  • wordpress 新网站 代码网站可以做系统还原吗
  • 百度给做网站公司餐饮设计装饰公司
  • 专门卖医疗器械的网站网站建设方案一份
  • 吉林省建设安全监督站网站wordpress 4.7.5下载
  • 网页制作视频的网站建设营销策划公司
  • 玉雕网站建设八点品牌设计公司招聘
  • 服务器可以自己的网站吗flash 网站 源码
  • 湖南做网站 搜搜磐石网络网站注册收入
  • 北京软件网站开发装修设计培训机构
  • 哪个网站能帮助做路书网站建设的技巧
  • 上海网站备案在哪里在国外怎么做网站
  • 做网站得花多钱乡村振兴网站建设
  • 站设计培训课程wordpress自动回复
  • 上海闵行区 网站建设永久免费crm软件下载
  • 天津营销网站建设公司排名台州网站排名公司
  • 环保网站 怎么做物流网站的功能与特色
  • 网站多久才会被收录服务器租用泰海
  • 电商网站建设合同模板临汾推广型网站建设
  • 天猫商务网站建设目的长春网站设计
  • 公司网站建设会议纪要昆山高端网站建设机构
  • 做消费网站流程深圳网站设计价格
  • 做电影网站怎么接广告中国最新军事新闻视频
  • 网站推广设计做哪些设置自动删除的wordpress
  • 东莞东坑网站设计专业网站制作设