relu

很值得套用的keras经典Unet版本

无人久伴 提交于 2020-03-09 09:37:13
代码如下: 1 from model import * 2 from data import *#导入这两个文件中的所有函数 3 4 #os.environ[“CUDA_VISIBLE_DEVICES”] = “0” 5 6 7 data_gen_args = dict(rotation_range=0.2, 8 width_shift_range=0.05, 9 height_shift_range=0.05, 10 shear_range=0.05, 11 zoom_range=0.05, 12 horizontal_flip=True, 13 fill_mode=‘nearest’)#数据增强时的变换方式的字典 14 myGene = trainGenerator(2,‘data/membrane/train’,‘image’,‘label’,data_gen_args,save_to_dir = None) 15 #得到一个生成器,以batch=2的速率无限生成增强后的数据 16 17 model = unet() 18 model_checkpoint = ModelCheckpoint(‘unet_membrane.hdf5’, monitor=‘loss’,verbose=1, save_best_only=True) 19 #回调函数,第一个是保存模型路径

Tensorflow2.0的迁移学习

不想你离开。 提交于 2020-03-08 20:52:30
当在做使用神经网络做分类(或回归)问题时,我们倾向于选择较复杂的网络来提高准确率,但是网络的复杂会使得训练时间变很长。而如果我们使用其他人已经训练好的模型来给我们的任务做分类,需要训练的参数数量就会大大减少。 下面,使用已经训练好的MobileNetV2模型来给猫狗数据集进行分类。 导入需要的库 import os import numpy as np import tensorflow as tf import matplotlib . pyplot as plt import tensorflow_datasets as tfds 导入猫狗数据集并处理数据 ( raw_train , raw_validation , raw_test ) , metadata = tfds . load ( 'cats_vs_dogs' , split = [ 'train[:80%]' , 'train[80%:90%]' , 'train[90%:]' ] , shuffle_files = True , batch_size = None , with_info = True , as_supervised = True , ) IMG_SIZE = 160 # All images will be resized to 160x160 def format_example (

深度学习-卷积神经网络笔记

懵懂的女人 提交于 2020-03-04 05:25:05
卷积神经网络组成 : input--CONV--ReLU--pooling--FC 输入层--卷积层--激活函数--池化层--全连接层 在这里需要指出的是:--卷积层--激活函数--池化层--全连接层,它的组合不唯一,也可以看一下关于卷积神经网络的 概括 : 由于它们的组合可以作出相应的改变,所以使得卷积神经网络有很多不同的表达,尤其是在深度上的提高。 卷积层 卷积层一般是由3x3或5x5,甚至是11x11的卷积核与传入数据进行卷积得到的,下图是3x3Filter与绿色的图像做卷积的过程,粉红色的图是卷积之后的结果。 局部感受野 :上图中的3x3卷积核,先与图像中的左上角的 3x3局部感受野 做点积并将所有的结果进行加和才得到粉色图像中的第一个数字4,接着每移动一列进行一次内积并作加和,直到所有的 局部感受野 处理完毕为止。就得到了第一个卷积特征图。在这里面的移动步长S为1。补充一下:卷积核的行列值一般都是奇数。上图的计算过程中不难发现,输入图的矩阵的四个边只利用到了一次,如果想要充分利用边上的特征就需要扩边。在下图中就是对一个RGB图进行了边的扩充,当然RGB是三维的,所以可以利用三个卷积核对每一维进行卷积,然后将所有的卷积结果进行相加,即图中的绿色输出的第一个图的左上角数字5是由,w0三个卷积核分别对不同维度做卷积后的结果的总和。 权值共享 :在我看来

(三)MobileNet_v2论文学习

∥☆過路亽.° 提交于 2020-03-03 18:24:25
发表:2019.3.21 CVPR MobileNet_v1遗留问题:简单的直筒结构性价比低可以复用图像特征提升网络的性价比、depthwise的卷积核比普通Conv的维度低在经过ReLU操作后会带来大量损失 方法:Linear Bottlenecks、Inverted residuals 参考博客1 参考博客2 参考博客3 一、Linear Bottlenecks 作者认为满足感兴趣流形区域(manifold of interest)坐落在高维激活空间的低维子空间的条件下: 感兴趣流形区域在ReLU之后保持了非0,相当于线性转换。 ReLU能够保持输入流性的完整性。 (这一部分没有搞清楚) 此处线性瓶颈就是在原基础上去掉最后一层的ReLU,因为特征经过高维向低维的变换后再经过ReLU会带来很大的损失,ReLU对低维特征的变换带来的损失要比高维大很多。第三张图是本文采取的模块,此处有一个疑问就是原本用可分离卷积是为了减少计算量,但是此时因为可分离卷积的特性需要将通道扩大这样不会又带来更多的计算吗,一增一减带来的效益如何呢。是因为计算量都集中在了1×1的点卷积上所以即使扩大了3×3的通道数带来的计算量也不会特别大吗? 二、Inverted residuals 瓶颈实际上包含所有必要的信息,倒残差在瓶颈之间直接使用shortcut,扩张层仅仅作为一个伴随张量非线性变换的实现细节。 三

06-01 DeepLearning-图像识别

房东的猫 提交于 2020-03-03 11:50:33
文章目录 深度学习-图像识别 人脸定位 手工提取特征的图像分类 识图认物 传统分类系统的特征提取 计算机眼中的图像 什么是图像特征? 卷积运算 利用卷积提取图像特征 基于神经网络的图像分类 传统图像分类系统和深度神经网络 深度神经网络的架构 卷积层 池化层 全连接层 归一化指数层 非线性激活层 Sigmoid函数 双曲正切函数 ReLU函数 深度神经网络的训练 反向传播算法 图像分类应用——人脸识别 人脸识别的流程 人脸识别应用场景 小结 深度学习-图像识别 人脸定位   相信你们外出游玩的时候,都不会带上你的牛逼plus诺基亚手机出门,而是带上你的智能手机给自己美美的拍上一张。当你用手机镜头对准人脸的时候,都会出现一个矩形框,如下图所示(前方高能),那么这个技术是怎么做到的呢?   相机中的人脸定位技术用的是二分类技术。该技术流程如下图所示。   如上图所示,相机首先会将照片分割成一块块的图像块,一张照片往往会有成千上万的图像块被切割出来。   然后每一个图像块都会经过人脸分类器去判别是否是人脸。人脸分类器是预先训练好的分类器,类似于我们之前讲的手写数字识别应用程序中的支持向量机分类器。如果人脸分类器预测该图像块为人脸,相机则会在这个图像块中显示出框的位置。   在人脸定位中,为了解决由于手机离人的距离不同,导致手机上显示的人脸大小不一致的问题。手机在切割图像的时候

Deformable convolutional networks(可变形卷积)使用keras/tensorflow主要代码及注释

旧城冷巷雨未停 提交于 2020-03-02 04:09:22
以下对Deformable convolutional networks(可变形卷积)keras/tensorflow主要的代码进行理解和注释 代码原地址: https://github.com/kastnerkyle/deform-conv layers.py from __future__ import absolute_import, division import tensorflow as tf from keras.layers import Conv2D from keras.initializers import RandomNormal from deform_conv.deform_conv import tf_batch_map_offsets class ConvOffset2D(Conv2D): #继承2D卷积 """ConvOffset2D""" def __init__(self, filters, init_normal_stddev=0.01, **kwargs): """Init""" self.filters = filters super(ConvOffset2D, self).__init__( self.filters * 2, (3, 3), padding='same', use_bias=False, #由于要计算x,y坐标的偏移量

关于torchvision.models中VGG的笔记

寵の児 提交于 2020-02-28 14:36:29
VGG 主要有两种结构,分别是 VGG16 和 VGG19,两者并没有本质上的区别,只是网络深度不一样。 对于给定的感受野,采用堆积的小卷积核是优于采用大的卷积核的,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。 比如,三个步长为 $1$ 的 $3 \times 3$ 卷积核的叠加,即对应 $7 \times 7$ 的感受野(即三个 $3 \times 3$ 连续卷积相当于一个 $7 \times 7$ 卷积),如果我们假设卷积输入输出的 channel 数均为 $C$,那么三个 $3 \times 3$ 连续卷积的参数总量为 $3 \times (9 C^2)$(一个卷积核的大小 $3 \times 3 \times C$,一层有 $C$ 个卷积核,总共有三层),而如果直接使用 $7 \times 7$ 卷积核,其参数总量为 $49 C^2$。很明显 $27C^2 < 49C^2$,即减少了参数。 VGG的网络结构非常简单,全部都是 $(3,3)$ 的卷积核,步长为 $1$,四周补 $1$ 圈 $0$(使得输入输出的 $(H,W)$ 不变): 我们可以参考 torchvision.models 中的源码: class VGG(nn.Module): def __init__(self, features, num_classes=1000,

U-Net: Convolutional Networks for Biomedical Image Segmentation

一曲冷凌霜 提交于 2020-02-27 18:22:56
U-Net: Convolutional Networks for Biomedical Image Segmentation 引用:Ronneberger O , Fischer P , Brox T . U-Net: Convolutional Networks for Biomedical Image Segmentation[J]. 2015. U-Net:用于生物医学图像分割的卷积网络 论文地址: https://arxiv.org/pdf/1505.04597v1.pdf GitHub源码地址: https://lmb.informatik.uni-freiburg.de/people/ronneber/u-net/ https://github.com/zhixuhao/unet https://github.com/yihui-he/u-net http://blog.leanote.com/post/zongwei/Pa http://blog.csdn.net/hjimce/article/details/50268555 一、摘要 人们普遍认为,成功地训练深度网络需要 数千个带注释 的训练样本。在本文中,我们提出了一种网络和培训策略,该策略依赖于 数据增强 的强大使用来更有效地 使用可用的带注释的样本

论文-MobileNetV2: Inverted Residuals and Linear Bottlenecks

别来无恙 提交于 2020-02-27 18:03:23
1、主要创新   1)提出了一种新的layer module: the inverted residual with linear bottleneck,   2)short connect被置于bottleneck层之间,比置于expanded层之间可以取得更好的效果   3)采用线性bottleneck层(即不同ReLU函数),因为非线性会破坏低维空间信息   4)使用ReLU6作为非线性函数,因为它在低精度计算时具有鲁棒性 2、网络结构   1)传统Residual block     先用1x1降通道过ReLU,再3x3空间卷积过ReLU,再用1x1ReLU卷积恢复通道,并和输入相加。之所以要1x1卷积降通道,是为了减少计算量,不然中间的3x3空间卷积计算量太大。所以Residual block是沙漏形,两边宽中间窄。   2)Inverted residual block   现在中间的3x3卷积变为了Depthwise的了,计算量很少了,通道可以多一点,效果更好,所以通过1x1卷积先提升通道数,再Depthwise的3x3空间卷积,再用1x1卷积降低维度。两端的通道数都很小,所以1x1卷积升通道或降通道计算量都并不大,而中间通道数虽然多,但是Depthwise 的卷积计算量也不大。作者称之为Inverted Residual Block,两边窄中间宽,像柳叶

零基础入门深度学习(四):卷积神经网络基础之池化和Relu

天涯浪子 提交于 2020-02-27 10:03:27
课程名称 | 零基础入门深度学习 授课讲师 | 孙高峰 百度深度学习技术平台部资深研发工程师 授课时间 | 每周二、周四晚20:00-21:00 编辑整理 | 孙高峰 内容来源 | 百度飞桨深度学习集训营 出品平台 | 百度飞桨 01 导读 本课程是百度官方开设的零基础入门深度学习课程,主要面向没有深度学习技术基础或者基础薄弱的同学,帮助大家在深度学习领域实现从0到1+的跨越。从本课程中,你将学习到: 深度学习基础知识 numpy实现神经网络构建和梯度下降算法 计算机视觉领域主要方向的原理、实践 自然语言处理领域主要方向的原理、实践 个性化推荐算法的原理、实践 本周为开讲第三周,百度深度学习技术平台部资深研发工程师孙高峰,开始讲解深度学习在计算机视觉方向实践应用。今天为大家带来的是卷积神经网络基础之池化和Relu。 02 池化(Pooling) 池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知道眼睛的精确位置,这时候通过约化某一片区域的像素点来得到总体统计特征会显得很有用。由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。如 图10 所示