深度学习常用算子(一)

转自:https://blog.youkuaiyun.com/zhuhaodonglei/article/details/100013802

1、起始输入

Data:输入数据第一层

2、激活算子

作用:引入非线性(通常需要区分的区域,直线是无法完全区分的)

 

1)Relu

公式:ReLU(x)=max(0,x)

2)LeakyRelu

公式:LeakyRelu(x) = (x >= 0 ? x : x*negative_slope);

3)Relu6

公式:LeakyRelu(x) = max(max(x, 0), 6);

4)Tan

公式:tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x));

5)sigmoid

公式:sigmoid(x) = 1. / (1. + exp(x))

6)PRelu

公式:f(x) = max(x, 0) + slope_data[c] * min(x, 0);

3、两个Tensor计算

1)+、-、*、/:Add、Sub、Mul、RealDiv

2)BiasAdd:用于增加bias操作,通常bias是一维Tensor

3)MatMul:矩阵乘

4)Axpy:向量求和,公式:y += a * x

4、多个Tensor计算

EltwiseOp

作用:多个Tensor对应位置元素进行相乘、相加、取最大值中一种操作

5、归一化

1)BatchNorm

参考:https://blog.youkuaiyun.com/life_is_amazing/article/details/51839438

作用:加快神经网络的训练收敛速度

2)LRN

全称:Local Response Normalization,即局部响应归一化层

作用:

LRN这个概念和运用是出现在AlexNet中。
LRN最初是生物学里的概念“相邻神经元抑制”,对局部神经元的活动创建竞争机制。
使用LRN增加了泛化能力(使输出中响应比较大的值变得相对更大,并抑制其他响应较小的神经元),做了平滑处理,提高了1%~2%的识别率。

其他:

在2015年的《Very Deep Convolutional Networks for Large-Scale Image Recognition》中,说明了LRN在IILSVRC数据集上不能对性能进行改善。
主流的模型中基本不使用LRN。

3)SsdNormalize

作用:限制了一次归一化的范围

使用网络:SSD

6、特征提取

1)Convolution

作用:分区域进行特征值提取

2)FullConnection

作用:

看作一种特殊卷积层,或者看作矩阵乘;整个输入作为feature map,进行特征提取

FC是一种迁移学习的结果,具体作用参考:https://www.zhihu.com/question/41037974

通常FC后面接Softmax,所以FC层的功能还包括矩阵维度变换,将维度变换为Softmax对应的维度

3)Correlation

与Convolution的区别,参考:https://www.cnblogs.com/linyuanzhou/p/4846499.html

4)DeConvolution

参考:https://www.jianshu.com/p/91e07efe2f32

作用:将一个低维度的空间映射到高维度,同时保持他们之间的连接关系/模式

5)DepConvolution

参考:https://baijiahao.baidu.com/s?id=1625255860317955368&wfr=spider&for=pc

作用:采用分步计算的方法,完成普通3D核的计算,其好处在于提升卷积计算的效率

7、防过拟合

1)Pooling

作用:Pooling的作用是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值或平均值。Pooling减少了参数的数量,防止过拟合现象的发生。

2)Mean

作用:只有取均值功能的滑窗算子

3)ROIPooling

参考:https://blog.youkuaiyun.com/u011436429/article/details/80279536

作用:对ROI进行pooling操作,从不同大小的方框得到固定大小相应 的feature maps

使用网络:Faster RCNN

4)ROIAlign

作用:解决ROIPooling两次量化带来的问题,使用线性插值的方式来解决。

使用网络:Mask-RCNN

5)PSROIPooling

参考:https://blog.youkuaiyun.com/wfei101/article/details/80766812

使用网络:R-FCN
————————————————
版权声明:本文为优快云博主「gapostal」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/zhuhaodonglei/article/details/100013802

### 图像边缘检测中的梯度算子 为了实现有效的图像边缘检测,获取图像的梯度信息至关重要。Sobel算子常用的用于计算图像梯度幅值和方向的方法[^1]: ```python import cv2 import numpy as np def sobel_edge_detection(image_path): image = cv2.imread(image_path, 0) # 使用Sobel算子分别沿X轴和Y轴求导数 grad_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=3) grad_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=3) magnitude = np.sqrt(grad_x**2 + grad_y**2) direction = np.arctan2(grad_y, grad_x) return magnitude, direction ``` 然而,当存在噪声干扰时,简单的梯度算子可能无法提供理想的边缘检测效果。为此,Laplacian of Gaussian (LoG) 算子通过引入高斯滤波器来减少噪声的影响,从而提高边缘检测的质量[^3]。 ### 深度学习在图像边缘检测的应用 近年来,随着深度学习技术的发展,卷积神经网络(CNN)被广泛应用于图像边缘检测领域。相较于传统方法,基于CNN模型能够自动提取特征并适应不同类型的输入数据。种典型的做法是利用预训练好的深层架构作为基础框架,并在此基础上调整优化以满足特定任务需求。 #### U-Net 架构简介 U-Net 是个专门为医学影像分割设计的经典网络结构,同样适用于边缘检测任务。该模型由编码路径(下采样过程)和解码路径(上采样恢复细节)组成,两者之间通过跳跃连接传递多尺度上下文信息,有助于捕捉更精细的目标边界。 ```python from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate def unet(input_size=(256, 256, 1)): inputs = Input(input_size) conv1 = Conv2D(64, 3, activation='relu', padding='same')(inputs) pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) conv2 = Conv2D(128, 3, activation='relu', padding='same')(pool1) pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) up7 = UpSampling2D(size=(2, 2))(conv2) merge7 = concatenate([conv1, up7], axis=3) conv7 = Conv2D(64, 3, activation='relu', padding='same')(merge7) outputs = Conv2D(1, 1, activation='sigmoid')(conv7) model = Model(inputs=[inputs], outputs=[outputs]) return model ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值