Convolution Neural Network Notes

Coding Skill目录下的所有Tutorials、Notes博客都会不定期迭代更新

卷积神经网络CNN

像素、分辨率

http://baijiahao.baidu.com/s?id=1601797930021194629&wfr=spider&for=pc
https://zhidao.baidu.com/question/252088649.html
图像质量评价

What Is CNN?

对于CNN来说,它是一块一块地来进行比对。它拿来比对的这个“小块”我们称之为Features(特征)。在两幅图中大致相同的位置找到一些粗糙的特征进行匹配,CNN能够更好的看到两幅图的相似性,相比起传统的整幅图逐一比对的方法。
在这里插入图片描述
每一个feature就像是一个小图(就是一个比较小的有值的二维数组)。不同的Feature匹配图像中不同的特征。在字母"X"的例子中,那些由对角线和交叉线组成的features基本上能够识别出大多数"X"所具有的重要特征。这些features很有可能就是匹配任何含有字母"X"的图中字母X的四个角和它的中心。
在这里插入图片描述
当给你一张新的图时,CNN并不能准确地知道这些features到底要匹配原图的哪些部分,所以它会在原图中每一个可能的位置进行尝试。这样在原始整幅图上每一个位置进行匹配计算,我们相当于把这个feature变成了一个过滤器。这个我们用来匹配的过程就被称为卷积操作,这也就是卷积神经网络名字的由来。

这个卷积操作背后的数学知识其实非常的简单。要计算一个feature和其在原图上对应的某一小块的结果,只需要简单地将两个小块内对应位置的像素值进行乘法运算,然后将整个小块内乘法运算的结果累加起来,最后再除以小块内像素点总个数即可。如果两个像素点都是白色(也就是值均为1),那么11 = 1,如果均为黑色,那么(-1)(-1) = 1。不管哪种情况,每一对能够匹配上的像素,其相乘结果为1。类似地,任何不匹配的像素相乘结果为-1。如果一个feature(比如nn)内部所有的像素都和原图中对应一小块(nn)匹配上了,那么它们对应像素值相乘再累加就等于n2,然后除以像素点总个数n2,结果就是1。同理,如果每一个像素都不匹配,那么结果就是-1。具体过程如下:

最后整张图算完,大概就像下面这个样子:
在这里插入图片描述
为了完成我们的卷积,我们不断地重复着上述过程,将feature和图中每一块进行卷积操作。最后通过每一个feature的卷积操作,我们会得到一个新的二维数组。这也可以理解为对原始图像进行过滤的结果,我们称之为feature map它是每一个feature从原始图像中提取出来的“特征”。其中的值,越接近为1表示对应位置和feature的匹配越完整,越是接近-1,表示对应位置和feature的反面匹配越完整,而值接近0的表示对应位置没有任何匹配或者说没有什么关联。

在这里插入图片描述
这样我们的原始图,经过不同feature的卷积操作就变成了一系列的feature map。我们可以很方便,直观地将这整个操作视为一个单独的处理过程。在CNN中,我们称之为卷积层(convolution layer),这样你可能很快就会想到后面肯定还有其他的layer。

Why CNN?

事实上,可以这样理解 VGGNet 的结构: 前面的卷积层是从图像中提取 “特征”, 而后面的全连接层把图片的“特征”转换为类别概率。真中, VGGNet 中的浅层(如 convl_l, conv1_2 ),提取的特征往往是比较简单的(如检测点、线、 亮度), VGGNet中的深层(如conv5 1 conv5 2), 提取的特征往往比 较复杂(如有无人脸或某种特定物体 )。
VGGNet 的本意是输入图像 , 提取特征,并输出图像 类别 。 图像风格迁 移正好与真相反 ,输入的是特征,输出对应这种特征的圄片

CNN Theory

一文详解卷积神经网络的演变历程!
https://mp.weixin.qq.com/s/bBQGDyh8pflBpYSsBuEYTA
教程 | 如何使用纯NumPy代码从头实现简单的卷积神经网络
https://mp.weixin.qq.com/s?__biz=MzU2MDc1MjEyMQ==&mid=2247486116&idx=4&sn=66dd2be47d1680bfbac5f050b08ce811&source=41#wechat_redirect
https://github.com/ahmedfgad/NumPyCNN

图文并茂地讲解卷积神经网络
https://mp.weixin.qq.com/s/ixwEVn_WMkH28w5aYITnBw
卷积神经网络VGG16这么简单,为什么没人能说清?
https://mp.weixin.qq.com/s/D5Fx0yx9FJb5gF93-c0xZA
[透析] 卷积神经网络CNN究竟是怎样一步一步工作的?
https://mp.weixin.qq.com/s/G5hNwX7mnJK11Cyr7E5b_Q
从AlexNet剖析-卷积网络CNN的一般结构
https://mp.weixin.qq.com/s/D6ok6dQqyx6cCJKc2M8YpA
卷积神经网络CNN学习笔记
https://mp.weixin.qq.com/s/t8jg_bpEcQiJmgIqKarefQ

变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作
https://mp.weixin.qq.com/s/V6o7rjmIaY6uhSS-H1TLcw
一文读懂 12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)
https://mp.weixin.qq.com/s/287vamTc6QD4wo6maX0dbQ
卷积神经网络基础
https://mp.weixin.qq.com/s/ZHV-lyTUAG3CwqlxaRD62g
全卷积网络
https://mp.weixin.qq.com/s/TBdKb0rAuQPqUeSQKdM9WA
反卷积介绍
https://mp.weixin.qq.com/s/U_bFm0iuaTwOUNgN-NMWDQ
七个基本框架TensorFlow代码实战
https://mp.weixin.qq.com/s/CrKO2_0zYpe_BeV-KA05Yg
改进卷积神经网络,你需要这14种设计模式
https://mp.weixin.qq.com/s/Lh_lJNvV9BGhc6no2ln-_g
卷积神经网络调参经验
https://blog.youkuaiyun.com/qq_28413479/article/details/77542818
bp调参tricks
https://blog.youkuaiyun.com/zouxy09/article/details/45288129

High Parameters Skills

learning rate setup rules

https://blog.youkuaiyun.com/u012513618/article/details/78454652
https://blog.youkuaiyun.com/qq_33485434/article/details/80452941

普林斯顿中国籍教授:中国学生是怎样被一步步淘汰掉的?

https://mp.weixin.qq.com/s/Rpy6-LxFaVEuleO5CVmIaA

### 自动睡眠分期方法概述 自动睡眠分期对于医疗诊断和个人健康管理具有重要意义。一种有效的方法是利用单通道脑电图(EEG)数据结合上下文缩放图(contextual scalograms)和注意力卷积神经网络(attention convolutional neural networks, ACNNs)[^1]。 #### 上下文缩放图的作用 上下文缩放图是一种用于增强时间序列信号表示的技术,在此背景下,通过多尺度分析来捕捉不同频率范围内的特征变化模式。这种方法能够有效地提取出与睡眠阶段密切相关的频谱特性,并将其转换成二维图像形式以便于后续处理。 ```python import numpy as np from scipy.signal import cwt, ricker def create_scalogram(signal, widths=np.arange(1, 31)): """创建给定信号的连续小波变换(CWT)作为其scalogram""" coef = cwt(signal, ricker, widths) return abs(coef) # 假设我们有一个长度为N的一维EEG信号数组eeg_signal scalogram_image = create_scalogram(eeg_signal) ``` #### 注意力机制的应用 为了进一步提高模型性能并更好地模拟人类专家的知识结构,引入了注意力机制到卷积层中去。这使得网络可以自适应地聚焦于输入中最重要部分的信息,从而改善分类效果的同时也增加了可解释性。 ```python import torch.nn.functional as F class AttentionBlock(nn.Module): def __init__(self, in_channels, out_channels): super().__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.attention_conv = nn.Conv2d(out_channels, 1, kernel_size=1) def forward(self, x): conv_out = F.relu(self.conv(x)) attn_weights = F.softmax(self.attention_conv(conv_out), dim=-1) attended_features = (conv_out * attn_weights).sum(dim=(-1,-2)).unsqueeze(-1).unsqueeze(-1) return attended_features.expand_as(conv_out) + conv_out ``` #### 实验验证与结论 实验表明该方法能够在多个公开数据库上取得优异的成绩,证明了所提出的框架不仅适用于实验室环境下的高质量记录,而且对实际应用场景也有着良好的鲁棒性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值