深度学习与神经网络总结2
深度学习与神经网络学习笔记第4讲卷积神经网络基础 第5讲深度学习视觉应用一、为什么要深度学习1. 全连接网络的问题全连接网络连接权过多算得慢难收敛同时可能进入局部极小值也容易产生过拟合问题。全连接网络直接处理图像会导致参数数量巨大计算速度慢模型难以收敛容易过拟合可能陷入局部极小值。2. 局部连接网络的思想为了解决“算得慢”的问题减少权值连接每一个节点只连到上一层的少数神经元即局部连接网络。也就是说不让每个神经元看完整张图而是只看局部区域。图像本身具有局部相关性例如边缘、纹理、角点通常由附近像素共同决定所以局部连接很适合图像任务。3. 分层特征处理信息分层处理每一层在上层提取特征的基础上获取进行再处理得到更高级别的特征。可以理解为层级提取内容低层边缘、方向、纹理中层局部形状、部件高层目标、类别、语义二、深度学习平台与 PyTorch 基础1. 常见深度学习平台平台发布者主要支持语言常见系统TensorFlowGooglePython/C/Java/GoLinux、Mac OS、Android、iOSCaffeUC BerkeleyPython/C/MatlabLinux、Mac OS、WindowsJAXGooglePythonLinux、WindowsMindSpore华为PythonLinux、Mac OS、Windows、Android、iOS、OpenHarmonyTorch/PyTorchFacebookC/Python 等Linux、Mac OS、Windows、Android、iOSPaddlePaddle百度PythonLinux、WindowsMMDetection商汤/港中文PythonLinux、Windows2. PyTorch 简介PyTorch 是一个 Python 的深度学习库最初由 Facebook 人工智能研究小组开发。PyTorch 在 Python 中重新设计和实现 Torch同时后端代码共享相同的核心 C 库。3. PyTorch 基本概念Tensor 张量数据形式名称标量0 维张量向量1 维张量矩阵2 维张量多维数组高阶张量计算图计算图用“节点”和“线”的有向图来描述数学计算。“节点”表示数学操作、输入或输出“线”表示节点之间的输入/输出关系。三、卷积神经网络基础1. 特征提取思想神经生理学研究发现人类等高等动物的视觉感知首先对原始图像进行不同方向的滤波也就是卷积。这说明卷积操作可以看作一种特征提取方式不同卷积核可以提取不同方向、不同形态的局部特征。2. 卷积 Convolution图像卷积时根据定义需要首先把卷积核上下左右转置。此处卷积核是对称的所以忽视。在深度学习中我们通常把卷积理解为卷积核在图像上滑动对局部区域做加权求和得到新的特征图。卷积层前向传播形式卷积层前向传播定义[zl(x,y)∑u0p∑v0qal−1(xu,yv)wl,k(u,v)][ z^l(x,y)\sum_{u0}^{p}\sum_{v0}^{q}a^{l-1}(xu,yv)w^{l,k}(u,v) ][zl(x,y)u0∑pv0∑qal−1(xu,yv)wl,k(u,v)][al(x,y)f(zl(x,y))][ a^l(x,y)f(z^l(x,y)) ][al(x,y)f(zl(x,y))]其中符号含义(al−1)(a^{l-1})(al−1)上一层输出(wl,k)(w^{l,k})(wl,k)第 (l) 层第 (k) 个卷积核(zl(x,y))(z^l(x,y))(zl(x,y))卷积后的加权和(f)(f)(f)激活函数(al(x,y))(a^l(x,y))(al(x,y))当前层输出3. Padding 填充填充 Padding就是在矩阵的边界上填充一些值以增加矩阵的大小通常用 0 或者复制边界像素来进行填充。作用控制输出特征图大小保留边缘信息让卷积后图像尺寸不至于过快变小。4. Stride 步长含义步长是卷积核每次移动的距离stride 越大输出特征图越小stride 越小保留的空间信息越多但计算量更大。5. 多通道卷积对于 RGB 图像输入图像尺寸 H × W × 3如果卷积核大小为3 × 3那么实际卷积核尺寸是3 × 3 × 3如果有多个卷积核就会得到多个输出通道即多个 feature map。6. 池化 Pooling思想使用局部统计特征如均值或最大值。解决特征过多问题。常见池化方式池化方式含义特点Max Pooling取局部区域最大值保留最显著特征Mean/Average Pooling取局部区域平均值保留整体统计趋势池化层通常没有可学习参数因此它主要用于下采样和减少计算量。7. CNN 的基本结构卷积神经网络结构构成由多个卷积层和下采样层构成后面可连接全连接网络。卷积层(k) 个滤波器称为通道。下采样层采用 mean 或 max。后面连着全连接网络。典型结构Input → Conv → Pool → Conv → Pool → FC → Softmax → Output四、卷积神经网络的学习算法如果第 (l) 层是卷积 池化层则输出可以表示为[al(x,y)downsample(∑u0p∑v0qal−1(xu,yv)ws(u,v))][ a^l(x,y)downsample\left( \sum_{u0}^{p}\sum_{v0}^{q}a^{l-1}(xu,yv)w_s(u,v) \right) ][al(x,y)downsample(u0∑pv0∑qal−1(xu,yv)ws(u,v))]也就是说上一层特征 → 卷积 → 激活 → 下采样/池化 → 当前层特征五、LeNet-5 网络1. LeNet-5 网络结构LeNet-5 网络结构为In → Conv → Pool → Conv → Pool → FC → FC → Softmax → Out这是早期经典卷积神经网络主要用于手写数字识别。2. C1 层C1层由 6 个 feature map 构成每个神经元对输入进行5 × 5卷积每个神经元对应5 × 5 1个参数共有[(5×51)×6×(28×28)122304][ (5 \times 5 1) \times 6 \times (28 \times 28)122304 ][(5×51)×6×(28×28)122304]个连接。3. C5 层120 个神经元每个神经元同样对输入进行5 × 5卷积与 S4 全连接总连接数[(5×5×161)×12048120][ (5 \times 5 \times 16 1) \times 120 48120 ][(5×5×161)×12048120]4. F6 层84 个神经元与 C5 全连接总连接数[(1201)×8410164][ (1201)\times 84 10164 ][(1201)×8410164]5. 输出层输出层由欧式径向基函数单元构成每类一个单元输出 RBF 单元计算输入向量和参数向量之间的欧式距离。6. LeNet-5 与现代 CNN 的区别卷积时不进行填充 padding池化层选用平均池化而不是最大池化激活函数选用 Sigmoid 或 tanh而不是 ReLU层数较浅参数数量小约为 6 万。7. CNN 的普遍规律空间尺寸逐渐变小 通道数量逐渐变多 语义信息逐渐增强六、基本卷积神经网络AlexNet、VGG-16、ResNet1. AlexNetAlexNet 的主要改进AlexNet 的改进池化层均采用最大池化使用 ReLU 作为非线性激活函数网络规模扩大参数数量接近 6000 万出现“多个卷积层 一个池化层”的结构网络一共有 8 层可学习层包括 5 层卷积层和 3 层全连接层。输入样本增强PPT 中列出的图像数据增强方式从原始图像256 × 256中随机 crop 出224 × 224图像水平翻转图像给图像增加随机光照即 color jittering。激活函数采用 ReLU 替代 tanh / Sigmoid用于卷积层与全连接层之后。ReLU 形式[ReLU(x)max(0,x)][ ReLU(x)max(0,x) ][ReLU(x)max(0,x)]Dropout在每个全连接层后面使用一个 Dropout 层以概率 § 随机关闭激活函数。作用减少过拟合提高泛化能力。2. VGG-16VGG-16 网络结构特点[CONV x] × y表示用 x 个 filter 进行 y 次卷积VGG 常使用3 × 3卷积池化常使用2 × 2max pool卷积层和池化层的超参数基本相同整体结构规整。VGG-16 网络说明网络规模进一步增大参数数量约为 1.38 亿由于各卷积层、池化层超参数基本相同整体结构呈现规整特点随网络深入高和宽衰减通道数增多。3. ResNet 残差网络为什么需要残差网络普通深层网络存在缺陷并引出残差网络优势和梯度消失问题。网络加深后普通网络可能更难训练 反向传播过程中可能出现梯度消失 层数增加不一定带来性能提升。残差块思想残差网络的核心思想传统网络直接学习 H(x) 残差网络学习 F(x) H(x) - x 最终输出H(x) F(x) x也就是通过“跳连”或“支路”让浅层信息直接传到深层。ResNet 网络说明PPT 中总结 ResNet 设计规则普通网络的基准模型受 VGG 网络启发卷积层主要有3 × 3的过滤器对输出特征图尺寸相同的各层都有相同数量的过滤器如果特征图大小减半那么过滤器数量增加一倍以保证每一层时间复杂度相同ResNet 模型比 VGG 网络有更少过滤器和更低复杂性。第4讲总结P经典网络以“一个或多个卷积层 一个池化层”作为一个基本单元进行堆叠在网络尾部使用全连接层最后以 Softmax 为分类器输出结果。残差网络在普通网络的基础上将浅层的激活项通过支路直接传向深层克服深层神经网络中梯度消失的问题为训练极深的神经网络提供便利。七、任务评价指标1. TP、FP、FN、TN指标含义TP被正确划分为正例的个数即实际为正例且被分类器划分为正例FP被错误划分为正例的个数即实际为负例但被分类器划分为正例FN被错误划分为负例的个数即实际为正例但被分类器划分为负例TN被正确划分为负例的个数即实际为负例且被分类器划分为负例2. Precision 精确率[PTPTPFP][ P\frac{TP}{TPFP} ][PTPFPTP]精确率标识“挑剔”的程度。预测为正例的样本中有多少是真的正例。3. Recall 召回率PPT 中公式【第5讲 p.26】[R\frac{TP}{TPFN}]PPT 中解释召回率标识“通过”的程度。【第5讲 p.26】理解所有真实正例中有多少被模型找出来。4. Accuracy 精度[AccuracyTPTNTPFPTNFN][ Accuracy\frac{TPTN}{TPFPTNFN} ][AccuracyTPFPTNFNTPTN]所有样本中预测正确的比例。5. 阈值、Precision 与 Recall调整阈值可改变准确率或召回值。当阈值较高时模型只接受非常有把握的样本 Precision 往往较高 Recall 往往较低当阈值较低时模型接受更多样本 Recall 往往较高 Precision 可能下降6. P-R 曲线P-R 关系曲线表示召回率和准确率之间的关系。精度越高召回率越低。P-R 曲线用于观察不同阈值下 Precision 和 Recall 的变化。7. AP 平均精度[AP∑k1NP(k)Δr(k)][ AP\sum_{k1}^{N}P(k)\Delta r(k) ][APk1∑NP(k)Δr(k)]其中符号含义(N)测试集中所有图片个数(P(k))能识别出 (k) 个图片时的 Precision(\Delta r(k))识别图片个数从 (k-1) 到 (k) 时 Recall 的变化8. mAP每一个类别均可确定对应的 AP多类检测中取每个类 AP 的平均值即为 mAP。公式[mAP1C∑i1CAPi][ mAP\frac{1}{C}\sum_{i1}^{C}AP_i ][mAPC1i1∑CAPi]八、目标检测与 YOLO1. 目标检测问题目标检测是在给定的图片中精确找到物体所在位置并标注出物体的类别。目标检测的难点物体尺寸变化范围很大物体角度和姿态不定物体可以出现在图像任意位置一张图中可能存在多个类别的多个物体。2. 目标检测发展目标检测发展路线R-CNN → SPP NET → Fast R-CNN → Faster R-CNN → YOLO3. YOLOYOLO 的核心思想可以概括为只看一次图像就同时预测目标类别和目标位置。它把目标检测看作一个端到端的预测问题因此速度快适合实时检测场景。九、全卷积网络与语义分割1. 语义分割任务语义分割与分类、检测的区别任务输出图像分类整张图的类别目标检测类别 边界框语义分割每个像素的类别实例分割每个像素类别 不同实例编号2. FCN 与 DeepLab v3FCN 是语义分割的经典方法FCN 语义分割实例参见“配套材料6-3语义分割与FCN”DeepLab v3 是现在广泛使用的语义分割方法DeepLab v3 演示参见程序deeplab.ipynb。FCN 的核心思想将传统 CNN 后面的全连接层改为卷积层使网络能够输出空间结构化结果。