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

访问网站速度很慢5款免费网站管理系统

访问网站速度很慢,5款免费网站管理系统,广告公司管理制度,微信答题抽奖小程序制作如今#xff0c;机器已经能够在理解、识别图像中的特征和对象等领域实现99#xff05;级别的准确率。生活中#xff0c;我们每天都会运用到这一点#xff0c;比如#xff0c;智能手机拍照的时候能够识别脸部、在类似于谷歌搜图中搜索特定照片、从条形码扫描文本或扫描书籍…如今机器已经能够在理解、识别图像中的特征和对象等领域实现99级别的准确率。生活中我们每天都会运用到这一点比如智能手机拍照的时候能够识别脸部、在类似于谷歌搜图中搜索特定照片、从条形码扫描文本或扫描书籍等。造就机器能够获得在这些视觉方面取得优异性能可能是源于一种特定类型的神经网络——卷积神经网络CNN。如果你是一个深度学习爱好者你可能早已听说过这种神经网络并且可能已经使用一些深度学习框架比如caffe、TensorFlow、pytorch实现了一些图像分类器。然而这仍然存在一个问题数据是如何在人工神经网络传送以及计算机是如何从中学习的。为了从头开始获得清晰的视角本文将通过对每一层进行可视化以深入理解卷积神经网络。 卷积神经网络 在学习卷积神经网络之前首先要了解神经网络的工作原理。神经网络是模仿人类大脑来解决复杂问题并在给定数据中找到模式的一种方法。在过去几年中这些神经网络算法已经超越了许多传统的机器学习和计算机视觉算法。“神经网络”是由几层或多层组成不同层中具有多个神经元。每个神经网络都有一个输入和输出层根据问题的复杂性增加隐藏层的个数。一旦将数据送入网络中神经元就会学习并进行模式识别。一旦神经网络模型被训练好后模型就能够预测测试数据。 另一方面CNN是一种特殊类型的神经网络它在图像领域中表现得非常好。该网络是由YanLeCunn在1998年提出的被应用于数字手写体识别任务中。其它应用领域包括语音识别、图像分割和文本处理等。在CNN被发明之前多层感知机MLP被用于构建图像分类器。图像分类任务是指从多波段彩色、黑白光栅图像中提取信息类的任务。MLP需要更多的时间和空间来查找图片中的信息因为每个输入元素都与下一层中的每个神经元连接。而CNN通过使用称为局部连接的概念避免这些将每个神经元连接到输入矩阵的局部区域。这通过允许网络的不同部分专门处理诸如纹理或重复模式的高级特征来最小化参数的数量。下面通过比较说明上述这一点。 比较MLP和CNN 因为输入图像的大小为28x28784MNIST数据集MLP的输入层神经元总数将为784。网络预测给定输入图像中的数字输出数字范围是0-9。在输出层一般返回的是类别分数比如说给定输入是数字“3”的图像那么在输出层中相应的神经元“3”与其它神经元相比具有更高的类别分数。这里又会出现一个问题模型需要包含多少个隐藏层每层应该包含多少神经元这些都是需要人为设置的下面是一个构建MLP模型的例子 Num_classes 10 Model Sequntial() Model.add(Dense(512, activation’relu’, input_shape(784, ))) Model.add(Dropout(0.2)) Model.add(Dense(512, activation’relu’)) Model.add(Dropout(0.2)) Model.add(Dense(num_classes, activation’softmax’)) 上面的代码片段是使用Keras框架实现暂时忽略语法错误该代码表明第一个隐藏层中有512个神经元连接到维度为784的输入层。隐藏层后面加一个dropout层丢弃比例设置为0.2该操作在一定程度上克服过拟合的问题。之后再次添加第二个隐藏层也具有512谷歌神经元然后再添加一个dropout层。最后使用包含10个类的输出层完成模型构建。其输出的向量中具有最大值的该类将是模型的预测结果。 这种多层感知器的一个缺点是层与层之间完全连接这导致模型需要花费更多的训练时间和参数空间。并且MLP只接受向量作为输入。 卷积使用稀疏连接的层并且其输入可以是矩阵优于MLP。输入特征连接到局部编码节点。在MLP中每个节点都有能力影响整个网络。而CNN将图像分解为区域像素的小局部区域每个隐藏节点与输出层相关输出层将接收的数据进行组合以查找相应的模式。 计算机如何查看输入的图像 看着图片并解释其含义这对于人类来说很简单的一件事情。我们生活在世界上我们使用自己的主要感觉器官即眼睛拍摄环境快照然后将其传递到视网膜。这一切看起来都很有趣。现在让我们想象一台计算机也在做同样的事情。 在计算机中使用一组位于0到255范围内的像素值来解释图像。计算机查看这些像素值并理解它们。乍一看它并不知道图像中有什么物体也不知道其颜色。它只能识别出像素值图像对于计算机来说就相当于一组像素值。之后通过分析像素值它会慢慢了解图像是灰度图还是彩色图。灰度图只有一个通道因为每个像素代表一种颜色的强度。0表示黑色255表示白色二者之间的值表明其它的不同等级的灰灰色。彩色图像有三个通道红色、绿色和蓝色它们分别代表3种颜色三维矩阵的强度当三者的值同时变化时它会产生大量颜色类似于一个调色板。之后计算机识别图像中物体的曲线和轮廓。。 下面使用PyTorch加载数据集并在图像上应用过滤器 # Load the libraries import torch import numpy as npfrom torchvision import datasets import torchvision.transforms as transforms# Set the parameters num_workers 0 batch_size 20# Converting the Images to tensors using Transforms transform transforms.ToTensor()train_data datasets.MNIST(rootdata, trainTrue,downloadTrue, transformtransform) test_data datasets.MNIST(rootdata, trainFalse,downloadTrue, transformtransform)# Loading the Data train_loader torch.utils.data.DataLoader(train_data, batch_sizebatch_size,num_workersnum_workers) test_loader torch.utils.data.DataLoader(test_data, batch_sizebatch_size, num_workersnum_workers)import matplotlib.pyplot as plt %matplotlib inlinedataiter iter(train_loader) images, labels dataiter.next() images images.numpy()# Peeking into dataset fig plt.figure(figsize(25, 4)) for image in np.arange(20):ax fig.add_subplot(2, 20/2, image1, xticks[], yticks[])ax.imshow(np.squeeze(images[image]), cmapgray)ax.set_title(str(labels[image].item())) 下面看看如何将单个图像输入神经网络中 img np.squeeze(images[7])fig plt.figure(figsize (12,12)) ax fig.add_subplot(111) ax.imshow(img, cmapgray) width, height img.shape thresh img.max()/2.5 for x in range(width):for y in range(height):val round(img[x][y],2) if img[x][y] !0 else 0ax.annotate(str(val), xy(y,x),colorwhite if img[x][y]thresh else black) 上述代码将数字3图像分解为像素。在一组手写数字中随机选择“3”。并且将实际像素值0-255 标准化并将它们限制在0到1的范围内。归一化的操作能够加快模型训练收敛速度。 构建过滤器 过滤器顾名思义就是过滤信息。在使用CNN处理图像时过滤像素信息。为什么需要过滤呢计算机应该经历理解图像的学习过程这与孩子学习过程非常相似但学习时间会少的多。简而言之它通过从头学习然后从输入层传到输出层。因此网络必须首先知道图像中的所有原始部分即边缘、轮廓和其它低级特征。检测到这些低级特征之后传递给后面更深的隐藏层提取更高级、更抽象的特征。过滤器提供了一种提取用户需要的信息的方式而不是盲目地传递数据因为计算机不会理解图像的结构。在初始情况下可以通过考虑特定过滤器来提取低级特征这里的滤波器也是一组像素值类似于图像。可以理解为连接卷积神经网络中的权重。这些权重或滤波器与输入相乘以得到中间图像描绘了计算机对图像的部分理解。之后这些中间层输出将与多个过滤器相乘以扩展其视图。然后提取到一些抽象的信息比如人脸等。 就“过滤”而言我们有很多类型的过滤器。比如模糊滤镜、锐化滤镜、变亮、变暗、边缘检测等滤镜。 下面用一些代码片段来理解过滤器的特征 Import matplotlib.pyplot as plt Import matplotib.image as mpimg Import cv2 Import numpy as npImage mpimg.imread(‘dog.jpg’) Plt.imshow(image) # 转换为灰度图 gray cv2.cvtColor(image, cv2.COLOR_RB2GRAY)# 定义sobel过滤器 sobel np.array([-1, -2, -1], [0, 0, 0], [1, 2, 1])) # 应用sobel过滤器 Filtered_image cv2.filter2D(gray, -1, sobel_y) # 画图 Plt.imshow(filtered_image, cmp’gray’) 以上是应用sobel边缘检测滤镜后图像的样子 可以看到检测出轮廓信息。 完整的CNN结构 到目前为止已经看到了如何使用滤镜从图像中提取特征。现在要完成整个卷积神经网络cnn使用的层是 1.卷积层Convolutional layer2.池层(Pooling layer)3.全连接层(fully connected layer) 典型的cnn网络结构是由上述三类层构成 下面让我们看看每个图层起到的的作用* 卷积层CONV——使用过滤器执行卷积操作。因为它扫描输入图像的尺寸。它的超参数包括滤波器大小可以是2x2、3x3、4x4、5x5或其它和步长S。结果输出O称为特征映射或激活映射具有使用输入层计算的所有特征和过滤器。下面描绘了应用卷积的工作过程 池化层POOL——用于特征的下采样通常在卷积层之后应用。池化处理方式有多种类型常见的是最大池化max pooling和平均池化ave pooling分别采用特征的最大值和平均值。下面描述了池化的工作过程 全连接层FC——在展开的特征上进行操作其中每个输入连接到所有的神经元通常在网络末端用于将隐藏层连接到输出层下图展示全连接层的工作过程 在PyTorch中可视化CNN 在了解了CNN网络的全部构件后现在让我们使用PyTorch框架实现CNN。步骤1加载输入图像 import cv2 import matplotlib.pyplot as plt %matplotlib inlineimg_path dog.jpgbgr_img cv2.imread(img_path) gray_img cv2.cvtColor(bgr_img, cv2.COLOR_BGR2GRAY)# Normalise gray_img gray_img.astype(float32)/255plt.imshow(gray_img, cmapgray) plt.show() 步骤2可视化过滤器 对过滤器进行可视化以更好地了解将使用哪些过滤器 import numpy as npfilter_vals np.array([[-1, -1, 1, 1],[-1, -1, 1, 1],[-1, -1, 1, 1],[-1, -1, 1, 1] ])print(Filter shape: , filter_vals.shape)# Defining the Filters filter_1 filter_vals filter_2 -filter_1 filter_3 filter_1.T filter_4 -filter_3 filters np.array([filter_1, filter_2, filter_3, filter_4])# Check the Filters fig plt.figure(figsize(10, 5)) for i in range(4):ax fig.add_subplot(1, 4, i1, xticks[], yticks[])ax.imshow(filters[i], cmapgray)ax.set_title(Filter %s % str(i1))width, height filters[i].shapefor x in range(width):for y in range(height):ax.annotate(str(filters[i][x][y]), xy(y,x),colorwhite if filters[i][x][y]0 else black)步骤3定义CNN模型 本文构建的CNN模型具有卷积层和最大池层并且使用上述过滤器初始化权重 import torch import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self, weight):super(Net, self).__init__()# initializes the weights of the convolutional layer to be the weights of the 4 defined filtersk_height, k_width weight.shape[2:]# assumes there are 4 grayscale filtersself.conv nn.Conv2d(1, 4, kernel_size(k_height, k_width), biasFalse)# initializes the weights of the convolutional layerself.conv.weight torch.nn.Parameter(weight)# define a pooling layerself.pool nn.MaxPool2d(2, 2)def forward(self, x):# calculates the output of a convolutional layer# pre- and post-activationconv_x self.conv(x)activated_x F.relu(conv_x)# applies pooling layerpooled_x self.pool(activated_x)# returns all layersreturn conv_x, activated_x, pooled_x# instantiate the model and set the weights weight torch.from_numpy(filters).unsqueeze(1).type(torch.FloatTensor) model Net(weight)# print out the layer in the network print(model) Net( (conv): Conv2d(1, 4, kernel_size(4, 4), stride(1, 1), biasFalse) (pool): MaxPool2d(kernel_size2, stride2, padding0, dilation1, ceil_modeFalse) ) 步骤4可视化过滤器 快速浏览一下所使用的过滤器 def viz_layer(layer, n_filters 4):fig plt.figure(figsize(20, 20))for i in range(n_filters):ax fig.add_subplot(1, n_filters, i1)ax.imshow(np.squeeze(layer[0,i].data.numpy()), cmapgray)ax.set_title(Output %s % str(i1))fig plt.figure(figsize(12, 6)) fig.subplots_adjust(left0, right1.5, bottom0.8, top1, hspace0.05, wspace0.05) for i in range(4):ax fig.add_subplot(1, 4, i1, xticks[], yticks[])ax.imshow(filters[i], cmapgray)ax.set_title(Filter %s % str(i1))gray_img_tensor torch.from_numpy(gray_img).unsqueeze(0).unsqueeze(1) 步骤5每层过滤器的输出 在卷积层和池化层输出的图像如下所示卷积层 池化层 可以看到不同层结构得到的效果会有所差别正是由于不同层提取到的特征不同在输出层集合到的特征才能很好地抽象出图像信息。 原文链接 本文为云栖社区原创内容未经允许不得转载。
http://wiki.neutronadmin.com/news/291520/

相关文章:

  • 网站建设标准依据怎么做网站代拍
  • 网站报价网站建设中静态页面模板
  • 上海建筑电工证查询网站新网 如何建设网站
  • asp.net做登录注册网站wordpress首页标题
  • 电子商务网站建设与维护管理上传到网站去的文档乱码
  • 单页面seo搜索引擎优化优化大师破解版app
  • 方一凡和磊儿做家教的网站免费下载精神文明建设宣传网站
  • 花店网站建设论文网站建设哪家公司最好
  • 仿漫画网站建设定制小说网站系统源码建设哪个平台买东西最便宜
  • 石家庄栾城区建设局网站wordpress 修改ssl
  • 上海网站建筑公司cpa怎么做网站
  • iis为网站子目录绑定二级域名济南网站优化公司
  • 网站建设费用 会计分录网站数据库网络错误怎么解决方案
  • 做服装广告素材网站有哪些门户网站html
  • 广州建网站有哪些东莞百度网站快速排名
  • wordpress编辑器添加代码工具搜索引擎优化涉及到内容
  • 我做淘宝网站卖东西怎么激活建设银行信用卡网站是哪个好
  • 个人博客网站开发毕业设计类似快手网站开发
  • 网站建设报价模板视频网站开发策划书
  • 用php做网站需要什么网站开发所需资料
  • 深圳制作网站多少费用网站模板切换
  • 怎么创个网站北京网站建设方案策划
  • 河北商城网站搭建多少钱网站制作开发策划
  • 青浦门户网站做ppt音乐怎么下载网站
  • 国外ui设计网站c 视频播放网站开发
  • 做网站端口映射wordpress站名在哪改
  • html5国外网站模板html源码下载wordpress建立一个页面模板
  • 口碑好的昆明网站建设免费的短视频app有哪些
  • wordpress如何看访问量湛江seo哪家好
  • 个人如何做公益网站昆山建设公司网站