精华内容
下载资源
问答
  • 行业分类-物理装置-一种联合热图特征回归的基于CNN特征提取网络的联合图像分类方法.zi
  • 用MATLAB实现卷积神经网络,并对图像进行特征提取 文件列表: CNN CNN\cnnapplygrads.m CNN\cnnbp.m CNN\cnnff.m CNN\cnnnumgradcheck.m CNN\cnnsetup.m CNN\cnntest.m CNN\cnntrain.m CNN\expand.m CNN\...
  • CNN特征提取结果可视化——hooks简单应用

    千次阅读 多人点赞 2021-04-10 10:57:43
    文章目录CNN特征提取结果可视化——hooks简单应用Hooks简单介绍CNN特征提取的简单可视化创建CNN特征提取器创建保存hook内容的对象为卷积层注册hook读取图像并进行特整体提取查看卷积层特征提取效果查看卷积层数可视...

    本文代码地址

    CNN特征提取结果可视化——hooks简单应用

    在神经网络搭建时可能出现各式各样的错误,使用hook而非print或者简单的断点调试有助于你更清晰的意识到错误所在。

    hook的使用场景多种多样,本文将使用hooks来简单可视化卷积神经网络的特征提取。用到的神经网络框架为Pytorch

    Hooks简单介绍

    每个hook都是预先定义好的可调用对象,在pytorch框架中,每个nn.Module对象都能够方便地注册(定义)一个hook。当一些trigger方法调用(如forward()backward())后,注册了hook的nn.Module对象会将相关信息传递到hook里面去。
    在PyTorch中,可以注册三种hook:

    1. forward prehook (在forward之前执行)
    2. forward hook (在forward之后执行)
    3. backward hook (在backward之后执行)

    具体理解每种hook的使用不是本文讨论的范围,我们将通过一个生动的卷积神经网络可视化例子来介绍hook的使用

    可视化准备工作

    我们将要进行的工作包括:

    1. 创建CNN特征提取器,本文使用PyTorch自带的resnet34
    2. 创建一个保存hook内容的对象
    3. 为每个卷积层创建hook
    4. 导入需要使用的库

    本文将对下图进行特征提取并可视化

    用到的python库

    import numpy as np
    
    import torch
    import torchvision
    from PIL import Image
    from torchvision import transforms as T
    
    import matplotlib.pyplot as plt
    

    创建CNN特征提取器

    import torch
    import torchvision
    
    feature_extractor = torchvision.models.resnet34(pretrained=True)
    if torch.cuda.is_available():
    	feature_extractor.cuda()
    
    device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu')
    

    创建保存hook内容的对象

    class SaveOutput:
    	def __init__(self):
    		self.outputs = []
    	def __call__(self, module, module_in, module_out):
    		self.outputs.append(module_out)
    	def clear(self):
    		self.outputs=[]
    		
    save_output = SaveOutput()
    

    为卷积层注册hook

    hook_handles = []
    
    for layer in feature_extractor.modules():
    	if isinstance(layer, torch.nn.Conv2d):
    		handle = layer.register_forward_hook(save_output)
    		hook_handles.append(handle)
    

    读取图像并进行特征提取

    cat.jpg地址

    from PIL import Image
    from torchvision import transforms as T
    
    image = Image.open('cat.jpg')
    transform = T.Compose([T.Resize((224, 224)), T.ToTensor()])
    X = transform(image).unsqueeze(dim=0).to(device)
    
    out = feature_extractor(X)
    

    查看卷积层特征提取效果

    对于resnet来说,其具体结构如下:

    卷积层共有1+6+(4*2+1)+(6*2+1)+(3*2+1)=36个,对conv3_x层有4*2+1卷积层的原因是(1)四个basicblock本身有4*2个卷积层(2)其中一个basicblock进行了downsample,又多了一个卷积层

    可视化哪些卷积层?

    对于resnet34来说,我们计划可视化其第1、2、15、28个卷积层,为何如此?

    • 第一个卷积层是conv1_x的输出,图片轮廓较为清楚
    • 第二、七个卷积层是conv2_x首个和末尾卷积层的输出,我们将其与第一个卷积层输出对比可以得到特征逐渐高层化的结论
    • 第十五个卷积层是conv3_x的输出
    • 第二十八个卷积层是conv4_x的输出

    为何不可视化最后一个卷积层?

    对于最后一个卷积层,其每个通道的像素仅仅为7x7,可视化也看不出什么东西。或者说我们可视化第二十八个卷积层后,就发现继续可视化没有必要了。

    提取计划可视化的卷积层结果

    1. 每个卷积层的结果都通过hook保存到了save_output.outputs里面,我们查看是否为36个结果
    2. 我们创建一个拼接卷积结果的函数。对每个卷积层来说,其结果都是由许多单通道图片组成(比如第一个卷积层的通道为64,因此有64张单通道图片),因此我们首先需要将这些单通道图片进行拼接一张单通道大图。

    这里的单通道仅仅指图片通道数目为1,是否为灰度图片本人并不清楚,只是可视化时只好使用灰度图的办法显示,如果有清楚概念的大哥希望不吝赐教

    1. 提取计划可视化的卷积层结果

    临时查看

    我们查看是否为36个结果并查看计划可视化的层的shape

    print(len(save_output.outputs))
    a_list = [0, 1, 6, 15, 28, 35]
    for i in a_list:
        print(save_output.outputs[i].cpu().detach().squeeze(0).shape)
    

    在这里插入图片描述

    可见确为36个卷积层,我们预计的可视化层的size也都正确

    拼接函数

    def grid_gray_image(imgs, each_row: int):
        '''
        imgs shape: batch * size (e.g., 64x32x32, 64 is the number of the gray images, and (32, 32) is the size of each gray image)
        '''
        row_num = imgs.shape[0]//each_row
        for i in range(row_num):
            img = imgs[i*each_row]
            img = (img - img.min()) / (img.max() - img.min())
            for j in range(1, each_row):
                tmp_img = imgs[i*each_row+j]
                tmp_img = (tmp_img - tmp_img.min()) / (tmp_img.max() - tmp_img.min())
                img = np.hstack((img, tmp_img))
            if i == 0:
                ans = img
            else:
                ans = np.vstack((ans, img))
        return ans
    

    提取计划可视化的卷积层结果

    img0 = save_output.outputs[0].cpu().detach().squeeze(0)
    img0 = grid_gray_image(img0.numpy(), 8)
    img1 = save_output.outputs[1].cpu().detach().squeeze(0)
    img1 = grid_gray_image(img1.numpy(), 8)
    img6 = save_output.outputs[6].cpu().detach().squeeze(0)
    img6 = grid_gray_image(img6.numpy(), 8)
    img15 = save_output.outputs[15].cpu().detach().squeeze(0)
    img15 = grid_gray_image(img15.numpy(), 16)
    img29 = save_output.outputs[28].cpu().detach().squeeze(0)
    img29 = grid_gray_image(img29.numpy(), 16)
    

    可视化第一个卷积层

    对resnet34来说,首个卷积层的卷积核为7*7,将输入的三通道彩色图像通道增加至64,尺寸从224*224对折为112*112,tensor的shape为1x64x112x112

    我们对首个卷积层的提取结果进行可视化:

    plt.figure(figsize=(15, 15))
    plt.imshow(img0, cmap='gray')
    

    下面是第一个卷积层的提取结果,显然每个卷积层的不同通道的侧重点不同:
    在这里插入图片描述

    可视化第二个卷积层

    对resnet34来说,第2-7个卷积层tensor的shape为64x1x56x56,我们对其第二个卷积层输出进行可视化:

    plt.figure(figsize=(15, 15))
    plt.imshow(img1, cmap='gray')
    

    第二个卷积层的特征相较第一个更加高级
    在这里插入图片描述

    可视化第七个卷积层

    第2-7个卷积层tensor的shape为64x1x56x56,我们对第七个卷积层也可视化:

    plt.figure(figsize=(15, 15))
    plt.imshow(img6, cmap='gray')
    

    特征提取逐渐高层化,不同通道的侧重点更加明显
    在这里插入图片描述

    可视化第16个卷积层

    第16个卷积层对应的是conv3_x的结果,其shape为1x128x28x28,可视化如下

    plt.figure(figsize=(30, 15))
    plt.imshow(img15, cmap='gray')
    

    可见图像经过多层特征提取,提取到的特征变得更加高层,不同通道的侧重点更加明显
    在这里插入图片描述

    可视化第29个卷积层

    plt.figure(figsize=(15, 15))
    plt.imshow(img29, cmap='gray')
    

    在这里插入图片描述

    结语

    对神经网络提取结果进行可视化有助于理解其特征提取逐渐高层化的过程。
    hook的使用场景还有很多,希望小伙伴们继续探索。

    展开全文
  • Mask R-CNN 特征提取主干网络

    千次阅读 2019-04-19 10:10:01
    对应matterport/Mask_RCNNKeras开源代码

    对应matterport/Mask_RCNN Keras开源代码

    展开全文
  • lbp特征提取代码matlab TCH-CNN 是 CC-Cruiser 情报代理的代码。 它包括晶状体的自动定位、自动筛查和小儿白内障的三角度分级。 还包括四种经典的特征提取方法(LBP、SIFT、小波变换、颜色和纹理特征)和SVM分类器...
  • 用MATLAB实现卷积神经网络,并对图像进行特征提取 文件列表: CNN CNN\cnnapplygrads.m CNN\cnnbp.m CNN\cnnff.m CNN\cnnnumgradcheck.m CNN\cnnsetup.m CNN\cnntest.m CNN\cnntrain.m CNN\expand.m CNN\...
  • 打算对问津以句为单位进行分类预测,词向量组成句子特征矩阵,利用testcnn对矩阵进行处理提取句子的特征向量,所以请问各位大佬,如何将cnn提取的最终特征向量提取出来?
  • CNN网络提取哪层输出作为最后提取特征为宜?

    万次阅读 热门讨论 2015-12-04 09:23:45
    在使用CNN提取特征时,到底使用哪一层的输出作为特征呢?很多人会说:“当然是最后一个全连接层了!,这有什么问题?”  这还真有问题!我相信有很多人和我一样走入了一个误区,认为最后一个全连接层的输出连接最后...

         在使用CNN提取特征时,到底使用哪一层的输出作为特征呢?很多人会说:“当然是最后一个全连接层了!,这有什么问题?”

        这还真有问题!我相信有很多人和我一样走入了一个误区,认为最后一个全连接层的输出连接最后的分类器,那么最后一个全连接层的输出当然是最后提取的特征了。知道昨天我读了一篇论文才恍然大悟,原来这样是错的!正确的答案是倒数第二个全连接层的输出才是最后要提取的特征。

       原因:最后一个全连接层的输出维度,在设计时是和训练样本的类别数一致的,比如你的训练要本有2622类,那么在设计最后的分类器时要有2622个输入,则最后一个全连接层的输出也是2622维的。这样最后一个全连接层的输出维度就和训练样本有了密切的关系,因此把它作为最后的特征显然不合适。

       注意:以上只是我的个人理解,如有不对之处,感谢指正!

    展开全文
  • 卷积神经网络CNN)用来提取特征,采用SVM分类器进行训练和分类
  • 本篇文章主要介绍了CNN网络中卷积层的计算过程,欲详细了解CNN的其它信息可以参考:技术向:一文读懂卷积神经网络。 卷积神经网络(CNN)是局部连接网络。相对于全连接网络其最大的特点就是:局部连接性和权值共享性...

    前言

    本篇文章主要介绍了CNN网络中卷积层的计算过程,欲详细了解CNN的其它信息可以参考:技术向:一文读懂卷积神经网络

    卷积神经网络(CNN)是局部连接网络。相对于全连接网络其最大的特点就是:局部连接性权值共享性。因为对一副图像中的某个像素p来说,一般离像素p越近的像素对其影响也就越大(局部连接性);另外,根据自然图像的统计特性,某个区域的权值也可以用于另一个区域(权值共享性)。这里的权值共享说白了就是卷积核共享,对于一个卷积核将其与给定的图像做卷积就可以提取一种图像的特征,不同的卷积核可以提取不同的图像特征。概况的讲,卷积层的计算方法就是根据公式

    conv=σ(imgMatW+b)(1)

    其中” σ ”表示激活函数;” imgMat ”表示灰度图像矩阵; ” W ”表示卷积核;”  ”表示卷积操作;” b  ”表示偏置值。

    二、举例说明

    下面用一个具体例子来详细说明卷积层的计算过程。用到的图像为lena图像,如图1所示;卷积核为Sobel卷积核,如图2所示。

    这里写图片描述

    图1 Lena图像(512x512)

    这里写图片描述

    图2 Sobel卷积核(Gx表示水平方向,Gy表示垂直方向)

    1、首先用Sobel—Gx卷积核来对图像做卷积,即公式(1)中的 imgMatW

    这里卷积核大小为3x3,图像大小为512x512如果不对图像做任何其它处理,直接进行卷积的话,卷积后的图像大小应该是:(512-3+1)x(512-3+1)。对卷积不懂的可以参考技术向:一文读懂卷积神经网络或其他读物。最终结果为:

    这里写图片描述

    图3 lena图像与Sobel—Gx卷积核的卷积结果

    2、 将步骤1中所得结果(一个矩阵)的每个元素都加上b(偏置值),并将所得结果(矩阵)中的每个元素都输入到激活函数,这里取sigmoid函数如下式所示

    f(x)=11+ex(2)

    最终结果如图4所示:

    这里写图片描述

    图4 卷积层所得到的最终结果

    3、同理

    利用Sobel—Gy卷积核我们最终可以得到如图5所示的结果。

    这里写图片描述

    图5 Sobel—Gy卷积核卷积层所得到的最终结果

    三、完整代码及结果

    <code
     class="hljs scilab has-numbering" style="display: block; padding: 0px; 
    color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', 
    monospace;font-size:undefined; white-space: pre; border-radius: 0px; 
    word-wrap: normal; background: transparent;"><span 
    class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: 
    border-box;">clear</span>
    clc
    imgRGB = imread(<span class="hljs-string" style="color: rgb(0, 136, 
    0); box-sizing: border-box;">'lena.jpg'</span>);
    imgGray = double(rgb2gray(imgRGB));
    
    Gx = <span class="hljs-matrix" style="box-sizing: 
    border-box;">[-<span class="hljs-number" style="color: rgb(0, 102,
     102); box-sizing: border-box;">1</span> <span 
    class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>;-<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>;-<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>]</span>;
    convImg = conv2(imgGray,Gx,<span class="hljs-string" style="color: 
    rgb(0, 136, 0); box-sizing: border-box;">'valid'</span>);
    whos convImg
    figure
    subplot(<span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>);
    imshow(uint8(convImg));
    title(<span class="hljs-string" style="color: rgb(0, 136, 0); 
    box-sizing: border-box;">'Sobel-Gx卷积结果'</span>)
    b = <span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">0.2</span>;
    sigmImg = <span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1.</span>/(<span 
    class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>+<span class="hljs-built_in" 
    style="color: rgb(102, 0, 102); box-sizing: 
    border-box;">exp</span>(-convImg)) + b;
    subplot(<span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>);
    imshow(sigmImg);
    title(<span class="hljs-string" style="color: rgb(0, 136, 0); 
    box-sizing: border-box;">'Sobel-Gx-sigmoid函数激活结果'</span>)
    
    Gy = <span class="hljs-matrix" style="box-sizing: 
    border-box;">[-<span class="hljs-number" style="color: rgb(0, 102,
     102); box-sizing: border-box;">1</span> <span 
    class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>;-<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>;-<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">0</span> <span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>]'</span>;
    convImg = conv2(imgGray,Gy,<span class="hljs-string" style="color: 
    rgb(0, 136, 0); box-sizing: border-box;">'valid'</span>);
    whos convImg
    figure
    subplot(<span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>);
    imshow(uint8(convImg));
    title(<span class="hljs-string" style="color: rgb(0, 136, 0); 
    box-sizing: border-box;">'Sobel-Gy卷积结果'</span>)
    b = <span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">0.2</span>;
    sigmImg = <span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1.</span>/(<span 
    class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">1</span>+<span class="hljs-built_in" 
    style="color: rgb(102, 0, 102); box-sizing: 
    border-box;">exp</span>(-convImg)) + b;
    subplot(<span class="hljs-number" style="color: rgb(0, 102, 102); 
    box-sizing: border-box;">1</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>,<span class="hljs-number" 
    style="color: rgb(0, 102, 102); box-sizing: 
    border-box;">2</span>);
    imshow(sigmImg);
    title(<span class="hljs-string" style="color: rgb(0, 136, 0); 
    box-sizing: 
    border-box;">'Sobel-Gy-sigmoid函数激活结果'</span>)</code><ul
     class="pre-numbering" style="box-sizing: border-box; position: 
    absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 
    0px 40px; border-right-width: 1px; border-right-style: solid; 
    border-right-color: rgb(221, 221, 221); list-style: none; text-align: 
    right; background-color: rgb(238, 238, 238);"><li 
    style="box-sizing: border-box; padding: 0px 5px;">1</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">2</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">3</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">4</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">5</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">6</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">7</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">8</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">9</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">10</li><li
     style="box-sizing: border-box; padding: 0px 
    5px;">11</li><li style="box-sizing: border-box; padding: 0px
     5px;">12</li><li style="box-sizing: border-box; padding: 
    0px 5px;">13</li><li style="box-sizing: border-box; padding:
     0px 5px;">14</li><li style="box-sizing: border-box; 
    padding: 0px 5px;">15</li><li style="box-sizing: border-box;
     padding: 0px 5px;">16</li><li style="box-sizing: 
    border-box; padding: 0px 5px;">17</li><li style="box-sizing:
     border-box; padding: 0px 5px;">18</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">19</li><li
     style="box-sizing: border-box; padding: 0px 
    5px;">20</li><li style="box-sizing: border-box; padding: 0px
     5px;">21</li><li style="box-sizing: border-box; padding: 
    0px 5px;">22</li><li style="box-sizing: border-box; padding:
     0px 5px;">23</li><li style="box-sizing: border-box; 
    padding: 0px 5px;">24</li><li style="box-sizing: border-box;
     padding: 0px 5px;">25</li><li style="box-sizing: 
    border-box; padding: 0px 5px;">26</li><li style="box-sizing:
     border-box; padding: 0px 5px;">27</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">28</li><li
     style="box-sizing: border-box; padding: 0px 
    5px;">29</li><li style="box-sizing: border-box; padding: 0px
     5px;">30</li></ul><ul class="pre-numbering" 
    style="box-sizing: border-box; position: absolute; width: 50px; top: 
    0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 
    1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); 
    list-style: none; text-align: right; background-color: rgb(238, 238, 
    238);"><li style="box-sizing: border-box; padding: 0px 
    5px;">1</li><li style="box-sizing: border-box; padding: 0px 
    5px;">2</li><li style="box-sizing: border-box; padding: 0px 
    5px;">3</li><li style="box-sizing: border-box; padding: 0px 
    5px;">4</li><li style="box-sizing: border-box; padding: 0px 
    5px;">5</li><li style="box-sizing: border-box; padding: 0px 
    5px;">6</li><li style="box-sizing: border-box; padding: 0px 
    5px;">7</li><li style="box-sizing: border-box; padding: 0px 
    5px;">8</li><li style="box-sizing: border-box; padding: 0px 
    5px;">9</li><li style="box-sizing: border-box; padding: 0px 
    5px;">10</li><li style="box-sizing: border-box; padding: 0px
     5px;">11</li><li style="box-sizing: border-box; padding: 
    0px 5px;">12</li><li style="box-sizing: border-box; padding:
     0px 5px;">13</li><li style="box-sizing: border-box; 
    padding: 0px 5px;">14</li><li style="box-sizing: border-box;
     padding: 0px 5px;">15</li><li style="box-sizing: 
    border-box; padding: 0px 5px;">16</li><li style="box-sizing:
     border-box; padding: 0px 5px;">17</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">18</li><li
     style="box-sizing: border-box; padding: 0px 
    5px;">19</li><li style="box-sizing: border-box; padding: 0px
     5px;">20</li><li style="box-sizing: border-box; padding: 
    0px 5px;">21</li><li style="box-sizing: border-box; padding:
     0px 5px;">22</li><li style="box-sizing: border-box; 
    padding: 0px 5px;">23</li><li style="box-sizing: border-box;
     padding: 0px 5px;">24</li><li style="box-sizing: 
    border-box; padding: 0px 5px;">25</li><li style="box-sizing:
     border-box; padding: 0px 5px;">26</li><li 
    style="box-sizing: border-box; padding: 0px 5px;">27</li><li
     style="box-sizing: border-box; padding: 0px 
    5px;">28</li><li style="box-sizing: border-box; padding: 0px
     5px;">29</li><li style="box-sizing: border-box; padding: 
    0px 5px;">30</li></ul>

    结果

    1、Sobel—Gx卷积核结果

    这里写图片描述

    2、Sobel—Gy卷积核结果

    这里写图片描述

    四、小结。

    以上计算过程,我们只用了两个卷积核。可以看出两个卷积核提取出了不同的图像特征。实际中,我们一般会使用十几个或者几十个卷积核来提取图像特征,进而来进行下一步的运算。

    展开全文
  • Mask R-CNN --CNN提取图像特征

    千次阅读 2018-12-20 15:21:22
    卷积神经网络(CNN)提取图像特征 卷积神经网络(CNN)是局部连接网络。相对于全连接网络其最大的特点就是:局部连接性和权值共享性。因为对一副图像中的某个像素p来说,一般离像素p越近的像素对其影响也就越大(局部...
  • 深度学习-CNN提取图像特征

    万次阅读 多人点赞 2019-01-30 15:14:37
    2.特征提取—"X" or "O"? 二、池化(Pooling) 三、Relu 层 四、全连接层(Fully connected layers) 五、反向传播算法BP 六、总结 作为机器学习的一个分支,深度学习同样需要计算机获得强大的学习能力,那么...
  • pytorch以图搜图通过cnn模型提取特征建立-附件资源
  • 针对传统数据驱动的故障诊断方法难以从QAR数据中提取有效特征的问题,提出一种融合卷积神经网络(convolutional neural network,CNN)与长短时记忆网络(long short-term memory,LSTM)的双通道融合模型CNN-LSTM。...
  • CNN(卷积神经网络提取图像特征

    千次阅读 2021-02-28 14:58:52
    CNN提取图像特征原文链接
  • 给定输入视频,每秒采样一帧,并从预训练的卷积神经网络的中间卷积层的激活中提取其视觉描述符。 然后,将最大卷积激活 (MAC) 函数应用于每一层的激活以生成紧凑的层向量。 最后,连接层向量以生成单个帧描述符。 ...
  • FPN(Features Pyramid Networks)特征金字塔网络是从backbone CNN提取特征用于后续目标检测和语义分割等问题。一个top-down结构结合lateral连接来建立所有不同尺度特征的high-level语义特征。 背景 ...
  • 比如一张32\*32的二进制图像进去,出来的数据是什么样的,这个截图是一个php程序(ml-php)提取特征的出来的数据,我想知道cnn网络出来的数据是不是也是这样的个格式,第一列就是自增的编号,第二列是每个像素点的值 ...
  • 目录人脸图像特征提取方法(一)HOG特征提取(二)Dlib库(三)卷积神经网络特征提取CNN) 人脸图像特征提取方法 (一)HOG特征提取 1、HOG简介 Histogram of Oriented Gridients,缩写为HOG,是目前计算机视觉、...
  • 特征提取模型系列之CNN设计

    千次阅读 2017-10-06 16:36:23
    对看过的一些关于CNN(卷积神经网络)的论文的一个总结,看的论文不多所以内容可能没多少,以后有新的内容会不断加上去,有不正确之处或不同看法之处欢迎指出。
  • R-CNN算法学习(步骤二:特征提取

    千次阅读 2019-01-07 19:35:21
    R-CNN算法学习(步骤二:特征提取) 写完步骤一(候选区域生成),现在来做步骤二,也就是特征提取,话不多说,请看正文! 摘自知乎:https://zhuanlan.zhihu.com/p/23006190 CNN特征提取: 1.算法实现 a、网络结构...
  • 针对传统特征提取方法需要先验知识的不足,提出一种自动编码器(AutoEncoder)与卷积神经网络(convolutional neural network,CNN)相结合的深度学习特征提取方法。该方法给AutoEncoder加入快速稀疏性控制,据此对...
  • pytorch以图搜图通过cnn模型提取特征建立

    千次阅读 热门讨论 2019-03-11 10:46:33
    参考链接: ... 复制这段内容后打开百度网盘手机App,操作更方便哦 ... 提取码: 9mts ) ,static下创建thumb_images文件夹 最后运行代码: python image_retrieval.py 上传的是这张猫搜索类似:
  • 仔细的看,慢慢想就能明白CNN提取特征的思想巧妙之处。 为什么要用CNN提取特征? 1.由于卷积和池化计算的性质,使得图像中的平移部分对于最后的特征向量是没有影响的。从这一角度说,提取到的特征更不容易过拟合...
  • Python人脸图像特征提取(HOG、Dlib、CNN方法)一、HOG人脸图像特征提取1、HOG特征:1) 主要思想:2) 实现方法:3) 性能提高:4) 优点2、HOG特征提取算法的实现过程:二、Dlib人脸图像特征提取1.Dlib介绍2....
  • CNN提取图片特征,之后用SVM分类

    万次阅读 多人点赞 2018-05-28 11:16:27
    先用CNN提取特征,之后用SVM分类,平台是TensorFlow 1.3.0-rc0,python3.6 参考链接点击打开链接# coding=utf8 import random import numpy as np import tensorflow as tf from sklearn import svm right0 = 0.0...
  • 而在实际应用中,并不是所有的操作都是为了分类的,有时候需要提取图像的特征,那么怎么利用已经保存的模型提取特征呢? “桃叶儿尖上尖,柳叶儿就遮满了天” 测试数据转换成tfrecords,教程:点击打开链接 保存...
  • 在自然语言领域,不论是什么问题,首先都会有一种比较主流的操作,就是先对输入基于预...即使特征提取器五花八门,但总的来说可以认为都是基于CNN、RNN、transformer的改进版本,所以他们或多或少都有着这几个模型的...
  • 本文记录如何基于pycaffe提取pretrained model某一层的特征。import numpy as np import matplotlib.pyplot as plt import scipy.io# 设置plt画图显示结果 # 图片尺寸 plt.rcParams['figure.figsize'] = (12,12) ...
  • 原来CNN是这样提取图像特征的。。。

    万次阅读 多人点赞 2018-11-28 15:17:10
    对于即将到来的人工智能时代,作为一个有理想有追求的程序员,不懂深度学习...将一张图像看做是一个个像素值组成的矩阵,那么对图像的分析就是对矩阵的数字进行分析,而图像的特征,就隐藏在这些数字规律中。 深度...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,827
精华内容 21,130
关键字:

cnn特征提取网络