精华内容
下载资源
问答
  • 本文我将讨论如何使用卷积神经网络来完成语义分割任务。语义分割是一个计算机视觉任务,在这项任务中我们根据显示的内容来标记图像的特定区域。 更具体的语义分割的目的是用所表示的内容的类别来为图像中每个...

    本文我将讨论如何使用卷积神经网络来完成语义分割任务。语义分割是一个计算机视觉任务,在这项任务中我们根据显示的内容来标记图像的特定区域。

    更具体的说,语义分割的目的是用所表示的内容的类别来为图像中每个图像打标签。因为我们是对图像中每个像素打标签,这类任务通常被称为密集预测

    **需要注意的一点是,我们并不会分离同一个类别的不同实例,我们仅仅关注每个像素的类别。**换句话说,如果在图像中有两个相同类别的对象,分割图不会将它们区分为单独的对象。不同于语义分割,实例分割可以做到区分同一类别的不同对象。

    分割模型可以应用到很多任务场景中,包括:

    • 自动驾驶

      我们需要给汽车装备必要的感知能力,使得汽车能够理解外部的环境,已达到在公路上正常行驶的效果。如图所示,展示了一种实时的自主驾驶道路分割场景。

      image-20210302233845572

    • 医疗图像诊断

      机器可以增加放射科医生的诊断能力,极大降低诊断测试所需要的时间。如图所示,展示了胸部x光片将心脏(红色)、肺(绿色)和锁骨(蓝色)分割开来。

    任务描述

    简单地说,我们的目的是输入一个RGB图像(heigthwidth3heigth * width * 3)或者一个灰度图像(heightwidth1height * width * 1),并输出一个分割图(heightwidth1height * width * 1),图中每个像素包含一个用数字表示的类标签。

    注意: 为了视觉清晰度,我已标记了一个低分辨率的预测图。实际上,分割标签的分辨率与输入图像的分辨率是匹配的。

    与处理标准分类值类似,我们将通过对类标签采用独热编码的方式来创建输出目标。在这个输出目标上,实质上为每个可能的类别创建了一个输出通道。

    通过获取每个通道方向上像素向量的argmax,可以将预测结果(heigthwidthnum_classesheigth * width * num\_classes)折叠成一个分割图(heigthwidth1heigth * width * 1)。

    我们可以通过将结果覆盖到输入图像上,很容易地检测它。

    当我们覆盖目标的单个通道时,我们称之为掩膜(mask)。它照亮图像中存在特定类别的区域。

    构造一个网络结构

    对于我们针对语义分割任务所要构造的网络结构,一个天真的想法是简单地堆叠一些卷积层(通过padding保持输入输出尺寸大小不变),然后输出一个最终的语义分割图。这种方法通过特征映射的连续变换,直接学习从输入图像到相应分割的映射。但是,在整个网络结构上保持完整的分辨率的计算代价非常高。 如下图所示,详情在公号后台回复【cs231n分割附件】查看。

    回想一下,在深度卷积网络中,较浅的网络层倾向于学习低级概念,较深的网络层学习到更高级的特征映射。为了保持可表达性,我们通常随着网络的深入而增加特征映射(通道)的数量

    这对于图像分类任务来说并不一定是一个问题,因为对于这个任务,我们只关心图像包含什么(而不是它位于何处)。因此,我们可以通过合并或跨步卷积(即压缩空间分辨率)周期性地降低特征图的采样来减轻计算负担。然而,**对于图像分割任务,**我们希望我们的模型能够产生一个全分辨率的语义预测。

    那么对于图像分割任务,一个主流的方法是遵循编码器-解码器结构。在这种结构下,我们对输入图像的空间分辨率进行降采样,开发出低分辨率的特征映射,其能够高效地区分出物体的类别。然后上采样特征表示,形成一个全分辨率的分割图。

    上采样的方法

    我们可以采用几种方法来对一个特征图的分辨率进行上采样。我们知道,在 下采样阶段,我们采用池化操作(pooling)来对一个局部区域的数据进行处理,得到一个数值,通常处理的方法有最大值池化,以及均值池化。自然地,我们可以采用反池化(unpooling) 操作来将单个数值分配到更高的分辨率来实现上采样。

    然而,对于上采样操作最主流的方法是转置卷积,它允许我们得到一个可学习的上采样方法。

    一个典型的卷积运算将滤波器视图中当前值的点积并为相应的输出位置产生一个值,而转置卷积运算实际上是相反的。对于转置卷积,我们从低分辨率的特征映射中取一个值,并将滤波器中的所有权值乘以这个值,将这些加权值投影到输出特征映射中。

    对于在输出特征映射中产生重叠的过滤器大小(如下面的例子所示,带有跨度2的3x3过滤器) ,重叠值被简单地添加到一起。不幸的是,这往往会在输出中产生棋盘式构件,因此最好确保过滤器大小不会产生重叠。

    全卷积网络

    在2014年11月由 Long et al. 提出了使用全卷积网络训练的端到端、像素到像素的的语义分割方法。论文作者提出将已有的、研究充分的图像分类模型(如AlexNet, VGG)进行改进,并应用到语义分割网络的编码器模块中,附加一个带转置卷积层的解码器模块,实现对粗糙特征映射进行上采样,得到全分辨率的分割图。

    全卷积网络,如下图所示,根据像素级的交叉熵损失进行训练。

    然而,由于编码器模块将输入的分辨率降低了32倍,解码器模块难以产生细粒度分割(如下所示)。

    论文的作者在这一点上做出了精彩的评论:

    语义分割面临着语义和位置之间的内在张力:全局信息解决**“是什么”,而局部信息解决“在哪里”**。…将细层和粗层结合起来,可以让模型做出符合整体结构的局部预测。

    未完待续…

    写在最后的话

    欢迎关注公众号【CV面试宝典】,定期原创技术分享。

    原文链接

    https://www.jeremyjordan.me/semantic-segmentation

    参考文献

    http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture11.pdf

    Fully Convolutional Networks for Semantic Segmentation

    https://github.com/vdumoulin/conv_arithmetic

    展开全文
  • 根据用户对古建的描述,自动生成三维动画来表现古建的搭建过程,整个自动过程都是在古建知识库的支持下完成的,采用语义网络技术设计并实现了知识库,包括本体库和规则库2部分.主要论述古建知识库的结构、本体和...
  • 简单点就是,比如我这个程序已经可以比较好地对猫图做语义分割了,但是我还想让它对狗图,人图,杯子图也做语义分割,我能用其它的数据集来训练它吗?万一训练完了它对猫图的...
  • 我们展示了在MATLAB和python中的实现,该实现可用于根据数据创建语义网络,并对未来进行预测。 创建并分析SEMNET 包含一个简单的示例,说明如何从APS和arXiv文件开始创建语义网络,计算网络理论属性以及进行预测 ...
  • 传统的基于语义分析的文本相似度计算方法,一般首先是根据某一语义词典,基于词语间的相似度来计算句子间的相似度,然后把句子组合成文本,综合计算文本之间的 相似度。这里面涉及到预处理操作非常庞大,对于大规模...
    提出一种新的的计算方法,该方法在计算量和内存消耗上会有所增大,但就其文本相似度计算精确度上来说,可以提高一个层次。
    传统的基于语义分析的文本相似度计算方法,一般首先是根据某一语义词典,基于词语间的相似度来计算句子间的相似度,然后把句子组合成文本,综合计算文本之间的
    相似度。这里面涉及到预处理操作非常庞大,对于大规模的长文本之间的相似性计算,运算量将非常之大,运算速度将受到很大的影响。基于以上原因,本节将根据语言网络相关理论,结合语义分析来对文本相似度作计算。
    根据语言网络理论,可以用文本主题网络G 来表示一个文本D,也就是文本主题网络G 可以表示文本D 的主题,那么,通过这样的语言网络表示整个文本的主题网络,整个文本D 就是由一系列的主题连通子图来表示的。连通子图中的中心高频词和连接两个子图的相对低频词,就是对G 具有关键作用的词语,可以用来表征文本的特征。

    如下文本主题网络图中,中心词b,d,g 和连接词f 则是G 的特征词。


                文本主题网络图

    本方法中将根据文本主题网络图来提取文本特征向量,进而结合语义分析来计算文本间的相似性。

    结合文本主题网络和语义分析的文本相似度计算,一方面通过文本主题网络来抽取文本的特征向量,特别通过计算文本特征词综合权值,来选取前TOP 的特征词作为特征向量,其他特征向量的抽取方法,能够大大降低文本特征向量的维度,计算量进而减小,提高了文本相似度的计算性能。在最终的文本相似度计算上,结合语义相似度来综合计算文本间的相似度,进一步提高了文本相似度计算的精确度。


    展开全文
  • 也就是,在资源受限的流传输场景中,需要为拥有用户感兴趣的内容(例如重点内容)的那些细分分配更多的网络资源。 但是,所有现有的基于HTTP的自适应方法都只根据有限的网络资源或能源来关注内容不可知的比特率...
  • 使用MXNet完成一个基于FCN的盲道识别语义分割一点说明基本原理测试集效果数据标注训练基本设置读入数据网络构建开始训练测试 一点说明 前段时间根据gluon的教程动手学深度学习和同学项目实地拍摄的盲道图片完成了...

    一点说明

    前段时间根据gluon的教程动手学深度学习和同学项目实地拍摄的盲道图片完成了一个基于FCN的盲道语义分割程序,也是自己第一次做语义分割的项目。一方面发现深度学习在盲道这种具有简单纹理和颜色特征的识别上具有非常好的效果,在速度和效果上表现都还不错,另一方面这也是为了练习如何使用gluon接口完成一个语义分割项目。

    由于盲道纹理比较简单,为了提高推理速度仅训练FCN32s网络不再继续训练16s和8s。分别使用ResNet18,MobileNetV2以及0.25倍剪枝版的MobileNetV2作为backbone做了实验。测试硬件为笔记本Core™ i5-5200U CPU以及GeForce 920M GPU。为了轻量化以达到实时性最后使用的是0.25倍剪枝版的MobileNetV2,在CPU 上能跑到10帧,笔记本920M上能到接近20帧。

    虽然还有很大的优化空间(例如:更好的语义分割算法,尝试Focal Loss效果,模型量化为Int 8,将完整分割网络的剪枝等,随着后续的学习有时间会继续尝试),不过目前综合速度和精度上来看都远胜过网上大多数基于颜色和简单规则纹理人工设计的盲道识别算法。

    基本原理

    FCN原理上面链接教程里已经写得很清楚了,这里就不再赘述:

    1. 使用在ImageNet上与训练好的模型作为主干网络,观察网络结构,去掉最后的全连接层或者是全局平均池化层以及输出层;
    2. 在主干网络后接一个1x1卷积层进行通道整理,卷积核数量就是你的类别数,后续会在每个通道上分别预测像素类别的概率,此处有盲道和背景,自然就是两类;
    3. 后接一个转置卷积层,通常此时网络将原图像下采样了1/32,此处转置卷积就设置为把特征图上采样32倍以达到和原图相同大小,可以随机初始化一个ndarray输入看看是否如此;
    4. 将转置卷积初始化为双线性插值,利于上采样效果提高和快速收敛,gluon教程里提供了双线性插值的初始化方法;
    5. 使用labelme软件制作语义分割的mask标签;
    6. 划分训练集和验证集读入数据进行训练,收敛很快,大概训练10个epoch左右即可(5个epoch对直道,多数横向纵纹理和远处效果已经很好,由于训练集中横向横纹理的图片较少,需要继续训练提高拟合效果),训练监测acc。根据实验经验,训练集和验证集acc至少达到98以上后在测试集上分割效果较好误检率也较低。另外实验表明0.25倍剪枝版的MobileNet识别能力不如另外两个网络并且相对容易过拟合,误检率稍高,训练这个网络时候更需要注意测试误检情况;
    7. 拍摄数据集时候需要拍摄尽可能多角度,远近以降低过拟合。训练时更科学的做法是监测精确率P和召回率R以PR曲线或ROC曲线作为评估指标。这里类别没有严重不平衡所以监测acc也能起到效果;

    测试集效果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    数据标注

    用labelme多边形标注500张盲道图片(当然数量和角度距离的变化越多越好,我标了500张测试下来效果不错 ),当然亲测labelme语义分割标注还是很方便的。
    标注完保存会得到与原图同名的.json文件,使用以下命令可以生成同名文件夹,包含原图,mask标签图等文件

    labelme_json_to_dataset <文件名>.json
    

    labelme的一个不方便之处是没有自带批量生成,为了不浪费时间需要写shell脚本完成批量生成标签文件夹。参考博客(https://blog.csdn.net/lyxleft/article/details/82222452)创建shell脚本可以批量处理,亲测高效可行!

        #!/bin/bash
        echo "Now begin to search json file..."
        for file in ./*
        do
            if [ "${file##*.}"x = "json"x ]
            then
            filename=`basename $file`
            temp_filename=`basename $file  .json`
            suf=_json
            new_filename=${temp_filename}${suf}
        #    echo $new_filename
            cmd="labelme_json_to_dataset ${filename} -o ${new_filename}"
            eval $cmd
            fi
        #    printf "no!\n "
        done
    

    训练

    基本设置

    照搬教程的双线性初始化函数,其余的设置务必在理解教程的基础上根据自己项目的实际情况修改。注意颜色转换表的颜色应该与用labelme生成的mask的颜色相对应。

    import os
    import d2lzh as d2l
    from mxnet import gluon, image, nd, init
    from mxnet.gluon import nn, model_zoo, data as gdata, utils as gutils, loss as gloss
    import sys
    import numpy as np
    import matplotlib.pyplot as plt
    import mxnet as mx
    
    #双线性插值初始化函数
    def bilinear_kernel(in_channels, out_channels, kernel_size):
        factor = (kernel_size + 1) // 2
        if kernel_size % 2 == 1:
            center = factor - 1
        else:
            center = factor - 0.5
        og = np.ogrid[:kernel_size, :kernel_size]
        filt = (1 - abs(og[0] - center) / factor) * \
               (1 - abs(og[1] - center) / factor)
        weight = np.zeros((in_channels, out_channels, kernel_size, kernel_size),
                          dtype='float32')
        weight[range(in_channels), range(out_channels), :, :] = filt
        return nd.array(weight)
    
    #读取图像和标签图列表,简单划分训练集和验证集(此处使用前50张作验证集,可自行修改k折测试)
    def read_br_images():
        images = [i[:-4] for i in os.listdir('data/img')]#名字
        images_extra = [i[:-4] for i in os.listdir('data/extra/img')]
        
        features, labels = [None] * (len(images)+len(images_extra)), [None] * (len(images)+len(images_extra))
        
        for i, fname in enumerate(images):
            #print(fname)
            features[i] = image.imread('data/img/'+images[i]+'.jpg')
            labels[i] = image.imread('data/label/'+images[i]+'_json/label.png')
            
        for i, fname in enumerate(images_extra):
            #print(fname)
            features[i+len(images)] = image.imread('data/extra/img/'+images_extra[i]+'.jpg')
            labels[i+len(images)] = image.imread('data/extra/'+images_extra[i]+'_json/label.png')
            
        return features[50:], labels[50:]
    
    def read_br_images_validation():
        images = [i[:-4] for i in os.listdir('data/img')]#名字
        images_extra = [i[:-4] for i in os.listdir('data/extra/img')]
        
        features, labels = [None] * (len(images)+len(images_extra)), [None] * (len(images)+len(images_extra))
        
        for i, fname in enumerate(images):
            #print(fname)
            features[i] = image.imread('data/img/'+images[i]+'.jpg')
            labels[i] = image.imread('data/label/'+images[i]+'_json/label.png')
            
        for i, fname in enumerate(images_extra):
            #print(fname)
            features[i+len(images)] = image.imread('data/extra/img/'+images_extra[i]+'.jpg')
            labels[i+len(images)] = image.imread('data/extra/'+images_extra[i]+'_json/label.png')
            
        return features[:50], labels[:50]
    
    #彩色标签按颜色表转换为类别标签图
    def label_indices(colormap, colormap2label):
        colormap = colormap.astype('int32')
        idx = ((colormap[:, :, 0] * 256 + colormap[:, :, 1]) * 256
               + colormap[:, :, 2])
        return colormap2label[idx]
    
    #随机裁剪
    def rand_crop(feature, label, height, width):
        feature, rect = image.random_crop(feature, (width, height))
        label = image.fixed_crop(label, *rect)
        return feature, label
    
    #预设颜色转换表和类别
    BR_COLORMAP = [[0,0,0],[128,0,0]]
    BR_COLORCLASSES = ['background', 'BR']
    

    读入数据

    在教程基础上改写的数据类

    class BRSegDataset(gdata.Dataset):
        def __init__(self, is_train, crop_size, colormap2label):
            self.rgb_mean = nd.array([0.485, 0.456, 0.406])
            self.rgb_std = nd.array([0.229, 0.224, 0.225])
            self.crop_size = crop_size
            if is_train ==True:
                features, labels = read_br_images()
            else:
                features, labels = read_br_images_validation()
            self.features = [self.normalize_image(feature)
                             for feature in self.filter(features)]
            self.labels = self.filter(labels)
            self.colormap2label = colormap2label
            print('read ' + str(len(self.features)) + ' examples')
    
        def normalize_image(self, img):
            return (img.astype('float32') / 255 - self.rgb_mean) / self.rgb_std
    
        def filter(self, imgs):
            return [img for img in imgs if (
                img.shape[0] >= self.crop_size[0] and
                img.shape[1] >= self.crop_size[1])]
    
        def __getitem__(self, idx):
            feature, label = rand_crop(self.features[idx], self.labels[idx],
                                           *self.crop_size)
            return (feature.transpose((2, 0, 1)),label_indices(label, self.colormap2label))
    
        def __len__(self):
            return len(self.features) 
    

    当数据集中有图片尺寸不一时需要随机裁剪,生成数据迭代器

    #数据迭代器
    #裁剪大小与转化表
    crop_size, batch_size, colormap2label = (480, 640), 32, nd.zeros(256**3)
    
    for i, cm in enumerate(BR_COLORMAP):
        colormap2label[(cm[0] * 256 + cm[1]) * 256 + cm[2]] = i
    
    num_workers = 0 if sys.platform.startswith('win32') else 4
    
    train_iter = gdata.DataLoader(
        BRSegDataset(True, crop_size, colormap2label), batch_size,
        shuffle=True, last_batch='discard', num_workers=num_workers)
    
    test_iter = gdata.DataLoader(
        BRSegDataset(False, crop_size, colormap2label), batch_size,
         last_batch='discard', num_workers=num_workers)
    

    网络构建

    教程上是ResNet18去掉最后两块,这里以mobilenet为例,观察结构应该去掉最后一块,实际上包括了一个全局平均池化,一个1x1卷积和一个Flatten。之后根据类别数加上一个1x1卷积整理通道和转置卷积层上采样。

    pretrained_net = model_zoo.vision.mobilenet_v2_1_0(pretrained=True)
    net = nn.HybridSequential()
    for layer in pretrained_net.features[:-1]:
        net.add(layer)
    #背景与盲道
    num_classes = 2
    net.add(nn.Conv2D(num_classes, kernel_size=1),
            nn.Conv2DTranspose(num_classes, kernel_size=64, padding=16,
                               strides=32))
    #初始化通道整理层和转置卷积层
    net[-1].initialize(init.Constant(bilinear_kernel(num_classes, num_classes,
                                                     64)))
    net[-2].initialize(init=init.Xavier())                           
    

    开始训练

    ctx = d2l.try_all_gpus()
    loss = gloss.SoftmaxCrossEntropyLoss(axis=1)
    net.collect_params().reset_ctx(ctx)
    trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.1,
                                                          'wd': 1e-3})
    d2l.train(train_iter, test_iter, net, loss, trainer, ctx, num_epochs=10)
    

    测试

    下面是一份完整测试和测速代码,分别测试gpu和cpu推理的速度。
    需要注意的是MXNet是异步运行,python前端将命令交给C++后端执行不等待结果就会执行之后的python命令,在实际使用中这样可以节省前端调用时间。为了测试速度需要nd.waitall()命令强制前后端同步。调用net.hybridize()转为静态图可以节省一部分内存/显存,并有少量加速。另外gpu测试时程序内第一次调用cuda会包含大量初始化。

    #!/usr/bin/env python
    # coding: utf-8
    
    from mxnet import gluon, image, nd, init
    from mxnet.gluon import nn, model_zoo
    import numpy as np
    #import matplotlib.pyplot as plt
    import mxnet as mx
    import time
    import cv2
    
    ctx = [mx.cpu()]
    #ctx = [mx.gpu()]
    #构建网络
    
    pretrained_net = model_zoo.vision.mobilenet_v2_1_0(pretrained=True)#, ctx = mx.gpu())
    #pretrained_net = model_zoo.vision.resnet18_v2(pretrained=True)#, ctx = mx.gpu())
    #pretrained_net = model_zoo.vision.mobilenet_v2_0_25(pretrained=True)#, ctx = mx.gpu())
    
    net = nn.HybridSequential()
    for layer in pretrained_net.features[:-2]:
        net.add(layer)
    num_classes = 2
    net.add(nn.Conv2D(num_classes, kernel_size=1),
            nn.Conv2DTranspose(num_classes, kernel_size=64, padding=16,
                               strides=32))
    
    
    net.load_parameters('mobileBR.params', ctx = ctx[0])
    net.hybridize()
    
    def normalize_image(img):
        rgb_mean = mx.nd.array([0.485, 0.456, 0.406])
        rgb_std = mx.nd.array([0.229, 0.224, 0.225])
        return (img.astype('float32') / 255 - rgb_mean) / rgb_std
    
    def predict(img):
        X = normalize_image(img)
        X = X.transpose((2, 0, 1)).expand_dims(axis=0)
        pred = nd.argmax(net(X.as_in_context(ctx[0])), axis=1)
        return pred.reshape((pred.shape[1], pred.shape[2]))
    
    #预热
    nd.waitall()
    img = image.imread('data/extra/img/BM_right24.jpg')
    pred = predict(img)
    nd.waitall()
    
    t1 = time.time()
    img = image.imread('data/extra/img/BM_right23.jpg')
    pred = predict(img)
    #result = pred.asnumpy().astype(np.uint8)*255
    nd.waitall()
    #cv2.imwrite('result.jpg',result)
    print(time.time()-t1)
    
    
    展开全文
  • 二摘代码MATLAB 遥感图像的语义分割 存储库包含用于解决两个公开可用的航空图像上的遥感图像上语义分割的代码: 为了能够训练和测试所提议的网络,应该从这些数据集中提取训练,验证和测试样本。...根据数据集提
  • 目前主要通过三种神经网络结构来实现不同的组合方式,即循环神经网络(顺序组合)、卷积神经网络(局部组合)和递归神经网络根据句法结构进行组合) [8] 。下面以句子“我 喜欢 红 苹果”为例,说明不同组合方式的...

    7.4 语义组合

    分布式词表示的思想可以进一步扩展,即通过组合(Composition)的方式来表示短语、句子,甚至是篇章等更大粒度的语言单元。目前主要通过三种神经网络结构来实现不同的组合方式,即循环神经网络(顺序组合)、卷积神经网络(局部组合)和递归神经网络(根据句法结构进行组合) [8] 。下面以句子“我 喜欢 红 苹果”为例,说明不同组合方式的基本原理及其优缺点,具体可以参见图 1 中“深度学习”部分。

    循 环 神 经 网 络(RNN,Recurrent NeuralNetwork)从左至右顺序地对句子中的单元进行两两组合,首先将“我”和“喜欢”组合,生成隐层h 1 ;然后将 h 1 与“红”进行组合,生成 h 2 ,以此类推。传统的循环神经网络模型存在严重的梯度消失(Vanishing Gradient)或者梯度爆炸(ExplodingGradient)问题,尤其是当句子较长,即网络的层数较多时。深度学习中一些常用的技术,如使用ReLU 激活函数、正则化,以及恰当的初始化权重参数等都可以部分解决这一问题。另一类更好的解决方案是减小网络的层数,以 LSTM 和 GRU 等为代表的带门循环神经网络(Gated RNN)都是这种思路,即通过对网络中门的控制,来强调或忘记某些输入,从而缩短了其前序输入到输出的网络层数,从而减小了由于层数较多而引起的梯度消失或者爆炸问题。

    积神经网络(CNN,Convolutional NeuralNetwork)目前被广泛应用于图像处理领域,它考虑了生物神经网络中的局部接收域(ReceptionField)性质,即隐含层神经元只与部分输入层神经元连接,同时不同隐含层神经元的局部连接权值是共享的。这一性质在很多自然语言处理的任务中也有所体现,如对评论文本进行分类,最终的褒贬性往往由局部的一些短语决定,同时不需要顾及这些短语在文本中的位置信息。例如,只要评论中含有“我 喜欢”,就说明该评论是褒义的。由于存在局部接收域性质,各个隐含神经元的计算可以并行的进行,这就可以充分利用现代的硬件设备(如GPU),加速卷积神经网络的计算,这一点在循环神经网络中是较难实现的。

    递 归 神 经 网 络(RecNN,Recursive NeuralNetwork)首先对句子进行句法分析,将顺序结构转化为树状结构,然后利用该结构来构建深度神经网络。因此在对句子“我 喜欢 红 苹果”进行组合时,首先组合“红”和“苹果”,生成隐层 h 1 ;然后再组合“喜欢”和 h 1 ,获得 h 2 ,以此类推。由此可见,该方法充分考虑了语言的递归组合性质,不会出现在循环或者递归神经网络中可能出现的任意无意义组合,如“喜欢 红”等。同时,对于如语义关系分类等任务,往往需要识别两个距离较远的实体之间的语义关系,如句子“在哈尔滨工业大学本科生院成立典礼上,校长周玉表示……”中,“哈尔滨工业大学”和“周玉”距离较远,他们中间的词汇往往对循环或者卷积神经网络模型构成了干扰,而递归神经网络利用句法结构,会将两个实体距离拉近,从而去除不必要的干扰,提升分析的准确率。当然,递归神经网络模型也受限于句法分析的准确率,因为一旦句法分析出现了错误,则会产生错误的组合方式,从而影响最终结果。

    展开全文
  • 图像分割是根据图像内容对指定区域进行标记的计算机视觉任务,简言之就是「这张图片里有...作者将沿着该领域的研究脉络,说明如何用卷积神经网络处理语义图像分割的任务。 更具体地讲,语义图像分割的目标在于...
  • 始终根据经典的文本统计信息来提取文档特征,并且不同的特征对排名性能的贡献也不同。 鉴于定义良好的特征将对检索性能做出更大的贡献,因此我们研究了使用自动编码器来丰富文档的特征表示。 自动编码器作为深度...
  • 从这篇文章开始,南国根据自己的体验和认识 写一个系列来描述计算机网络高频的知识考点。 话不多,干货送上~ 1.网络体系结构 1.1 基本概念 1.网络协议:是计算机网络和分布系统中互相通信的对等实体间交换信息时所...
  • 请举出生活中的一个例子来说明“协议”的基本含义,并根据此例子说明网络协议中的三要素“语法”、“语义”与“时序”之间的关系。
  • 具体来,这两种类型的关系是通过在深度神经网络(DNN)的学习过程中强加正则化来估计和利用的。 通过使DNN具有更好的利用特征和类关系的能力,提出的正则化DNN(rDNN)更适合于对视频语义建模。 。 根据著名的...
  • (一) 由图像分类引入神经网络 图像分类任务定义: 图像分类任务是计算机视觉中的核心任务,其目标是根据图像信息中所反映的不同特征,把不同类别的图像区分开来。 应用场合: 动物识别,植物识别。 图像分类任务的...
  • 最近想要使用FCN网络进行语义分割项目的学习,恰巧在网上看到ADEChallengeData2016数据集有完备的代码、数据集以及预训练参数,不由得暗自庆幸,修改完成一些参数,运行之后发现系统总是提示下图类似的异常。...
  • 计算机网络1.0.docx

    2020-07-08 17:47:09
    【问题1】根据图上图所给出的网络连接方式及相关的网络参数,区域(A)与区域(B)中计算机的网络参数配置为: 区域(A)计算机“IP地址”(范围): (1 ) ; 区域(A)计算机“子网掩码”: (2 ) ; 区域(A...
  • 我们团队的项目是“实现多方通讯”(我们打算开发一款简单的通讯软件,其基本功能是实现一对一的网络信息通讯,并努力向一对多和多对多靠近),在这个项目中,我仅对其...最后,根据语义模型并利用行为时序逻辑来...
  • 开放式神经网络交换-ONNX(上) 目的 本文档包含ONNX语义的规范性规范。 “onnx”文件夹下的.proto和.proto3文件构成了用协议缓冲区定义语言编写的语法规范。.proto和.proto3文件中的注释目的是提高这些文件的可读性...
  • 计算机网络复习题

    2014-12-29 19:01:35
    语义(1分): 需要发出何种控制信息,完成何种动作以及做出何种响应。 (1分) 同步(1分): 事件实现顺序的详细说明。(1分) 8. 试简述IEEE802.3标准以太网(CSMA/CD)的介质访问控制的工作原理(包括发送端、接收...
  • 最后,我们提出了一个集群融合模块,该模块可以根据跟踪对象的语义信息自动为基础跟踪器分配融合权重。 运行ESiamFC 准备 下载型号 在关键akhk下载预训练的模型。 将预训练的模型放入“ ./models”文件夹中。 将OTB...
  • 意义:根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。 注意: 尽可能少的使用无语义的标签div和span; 在语义不明显...
  •  (4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。  为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择...
  • 问题4-18:路由表中只给出到目的网络的下一跳路由器的IP地址,然后在下一个路由器的路由表中再给出再下一跳的路由器的IP地址,最后才能到达目的网络进行直接交付。采用这样的方法有什么好处? 问题4-19:链路层广播...
  • 问题5-1:广域网在地理上覆盖的范围较大,那么能不能“凡是在地理上覆盖范围较大的网络就是广域网”? 问题5-2:在广域网中的结点交换机是否就是路由器? 问题5-3:为什么路由选择功能不放在第5章广域网中详细讨论...
  • 图像分类是根据图像的语义信息将不同类别图像区分开来,是计算机视觉中重要的基本问题。猫狗分类属于计算机视觉中图像分类的一个粗粒度的问题。本文使用pytorch编程框架实现经典且强大的VGG16网络进行猫狗识别分类的...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

根据语义网络说