《深度学习与图像分析——基础与应用》书籍阅读

news/2024/10/21 5:53:17/

李松斌,刘鹏著,科学出版社
2023年5月20日16:32:38开始阅读,2023年7月12日读完。

1.基础知识

获得泛化能力是深度学习的最终目标。泛化能力是指处理未被观察个的数据的能力(即不包含在训练数据中的数据)。
训练集:训练模型
测试集:测试模型的泛化能力
验证集:验证模型是否过拟合

数据增强的常用方法:
● 翻折(类似于镜面的翻折);
● 旋转
● 缩放
● 裁剪
● 平移
● 添加噪声

神经网络学习的目的就是为了找出能使得损失函数的值达到最小的权重参数。
深度学习中常见的两大类问题:分类和回归。分类问题是依据已有的信息进行整合,最后输出离散的类别值;回归是指通过已知去预测未知,输出是连续的。

最优化的方法:
● 梯度下降法(寻找最小值)
● 梯度上升法 (寻找最大值)
● 随机梯度下降法 SGD
● 自适应梯度法(AdaGrad):对每个参数乘以不同的系数,每个参数所乘的系数通过之前积累的梯度大小的平方和来决定,对于更新频率高的参数,可以设置较小的学习率,更新慢一点;对于更新频率低的参数可以设置较大一点的学习率,更新快一点。【具体做法】将每一维参数各自的历史梯度的平方叠加起来,然后在更新的时候除以该历史梯度值。
● 自适应矩估计(Adam)

2.深度学习图像分类算法核心

图像分类要解决的“是什么”的问题,也就是输入一张图像,输出该图像所属的类别。
基于深度学习的图像分类属于一种端到端的模型。
图像分类的难点可以分为:实例层次、类别层次、语义层次。
● 实例层次:尺度、光照、视角、变形、遮挡
● 类别层次:类内差别、类间模糊、背景干扰
● 语义层次:多重稳定。

  1. 基于深度学习图像分类算法的诞生——LeNet5,1998年
  2. 开创基于深度学习图像分类算法的新局面——AlexNet,2012年
  3. 基于小卷积核的图像分类算法——VGGNet,2014年
  4. 基于最优局部稀疏结构的图像分类算法——Inception系列
    ● Inception-v1,2014年
    ● Inception-v2、v3,2016年
  5. 基于恒等映射残差单元的图像分类算法——ResNet,2015年
  6. 基于聚合转换残差单元的图像分类算法——ResNeXt,2016年,在ResNet的基础上同时采用VGGNet和Inception的思想,提出一种可扩展性更强的“聚合转换残差单元”,可以在增加准确率的同时降低或者不改变模型的复杂度。
  7. 基于多层密集连接的图像分类算法——DenseNet,2017年,受ResNet的启发,提出一种更加密集的前馈式跳跃连接。从特征的角度出发,通过增加网络信息流的隐性深层监督和特征复用极大程度上缓解了梯度消失的问题,也使得模型的性能得到大幅度的提升。
  8. 基于特征通道重标定的图像分类算法——SENet,2018年。并非是一个完整的网络,可以嵌入到任何主干网络中的子模块。
  9. 基于通道压缩与扩展的图像分类算法——SqueezeNet,2016年。开启了模型轻量化的开端,对神经网络走向实际化具有重要的意义。
  10. 基于深度可分离卷积的图像分类算法——MobileNet,2017年。一种专注于资源受限的移动设备或嵌入式设备的轻量级卷积神经网络。基于逐点群卷积与通道混洗的图像分类算法——ShuffleNet,2017年。基于神经架构自动搜索的图像分类算法——NASNet,2018年。

从图像中提取关键信息并转化为能够进行分类的特征是图像分类算法的最基本的要求,关键信息提取是完成图像分类最基本的先决条件。图像分类的本质实际上就是滤除非关键信息,保留关键信息的过程。

3.深度学习目标检测算法核心

目标检测是计算机视觉领域一个基础但十分重要的研究方向。
如何充分利用深度卷积神经网络产生的浅层和深层特征来增强网络对多尺度目标的检测性能,并在一定检测精度的前提下降低网络的时间复杂度,是当前基于深度学习的目标检测算法的主要研究目标。
目标检测要解决目标定位的回归问题,又要解决目标分类的问题。
为评估定位精度,需要计算交并比IoU(预测框与真实框之间的重叠程度)。

  1. R-CNN,2014年(候选区域推荐 -> 候选区域特征提取 -> 候选区域分类 -> 候选区域边界框回归)
  2. 基于空间金字塔池化的目标检测算法——SPPNet, 2015年。
  3. 基于R-CNN和SPPNet改进的目标检测算法—— Fast R-CNN,2015年。
  4. 基于语义分割和Faster R-CNN的目标检测网络——Mask R-CNN,2017年。解决图像实例分割问题。
  5. 一步式目标检测算法的提出——YOLO系列,2015年。
  6. 基于特征金字塔的目标检测算法——FPN,2017年。利用特征图间不同的表达特性,提出对输入图像生成多维度特征表达的方法,从而生成更具有代表性、表达能力更强的特征图以供后续使用。本质上说,FPN是一种加强骨干网络特征表达的方法。
  7. 基于单发细化目标的检测算法——RefineDet,基于SSD,融合了一步式和两步式的思想,在保持一步式方法速度的前提下,获得了二步式的精度。(Faster R-CNN两步式,YOLO一步式)。该算法由锚框优化模块ARM和目标检测模块ODM两个模块,由转换连接模块TCB连接。
  8. 基于主干架构搜索的目标检测算法——DetNAS,基于单步检测网络空间提出搜索目标检测骨干网络框架。
  9. 基于神经架构搜索的目标检测算法——NAS-FPN,FPN是一种有效表达深度卷积网络特征的方法,通过提取多维度特征形成强表达特征,可缓解不同尺度检测的难题,能极大提升小物体的检测效果。NAS-FPN基于RetinaNet一步式网络(两个主要模块:骨干网络模块和FPN网络模块)。

4.深度学习语义分割算法本质与革新

语义分割是计算机视觉领域捏较为典型的像素点标注问题,不仅解决是什么的问题,还需对该物体所在的图像区域
进行精确的定位。

  1. 基于深度学习的语义分割算法——FCN,首个。2015年,Long等。全卷积神经网络FCN的提出,实现了基于深度学习的图像语义分割,使得语义分割模型也能够进行端到端的训练。
  2. 基于深度编解码结构的语义分割算法——SegNet。
  3. 基于空洞卷积的语义分割算法—— dilate convolution 。传统卷积方式,保留空间细节信息与获得全局上下文信息是相互矛盾的。Yu引入空洞卷积,通过在卷积核之间产生空洞,从而在不增加参数量的前提下扩大感受野。
  4. 基于金字塔池化句很多尺度信息的语义分割算法——PSPNet,2016年。通过全局先验表示能够有效生成高质量的场景解析结果,且PSPNet为像素级预测提供了一个优越的框架。
  5. 基于卷积神经网络与条件随机场的语义分割算法——DeepLab-v1,。
  6. 基于空洞空间金字塔池化与条件随机场的语义分割算法——DeepLab-v2,2017年。
  7. 基于级联空洞卷积与并行多空洞率金字塔池化的语义分割算法——DeepLab-v3
  8. 基于深度可分离卷积与并行多空洞率金字塔池化的语义分割算法——DeepLab-v3+,2018年。
  9. 基于多路径优化的语义分割算——RefineNet。通过远距离的残差连接有效利用不同分宾利的图像信息,可以直接使用来自早期卷积的细粒度特性对捕获高级语义特性的更深层进行细化。
  10. 基于注意力优化与特征融合的语义分割算法——BiSeNet(双通道语义分割网络),空间路径和上下文语义路径。
  11. 基于增强特征融合的语义分割算法——ExFuse
  12. 基于双路注意力机制的语义分割算法——DANet,通过自注意力机制捕获丰富的上下文依赖关系来解决场景分割任务。
    基于卷积神经网络的语义分割算法首先需要利用卷积神经网络提取特征,必然会面临多次下采样而导致细节信息丢失,过少的下采样又会导致无法捕获足够视野的上下文信息。编码结构能够融合不同尺度的高低层次特征,从而使得语义分割算法在回复分辨率的过程中有效利用了不同层次的特征;金字塔池化成功解决了高层特征无法捕获全局语义信息的问题;空洞卷积能够在有限下采样次数的情况下,扩大编码端的感受野,捕获足够尺度上的上下文信息;自注意力机制能够增强特征点之间的空间关联关系以及通道间的一致性,从而达到优化语义分割结果的目的。

5.深度学习的图像生成算法原理及发展

5章和剩下的应用部分在目前看来可能不是很好吸收,觉得最重要的是自己没有想过的项目经验,有必要抽出部分部件来做与代码相关的项目,目前吸收更多的是理论知识,而且理论知识也是那种广泛泛泛而谈的理论,实践的东西是越做越少了。

书评

是一本不错的深度学习与图像分析基础与应用的书籍,在梳理算法的时候,从应用(分割、分类、生成等几个部分)到时间上的细分,从基础到改进上的细分,相对来说,比较适合新手做系统的概念了解和老手做系统知识梳理与回顾。


http://www.ppmy.cn/news/1026004.html

相关文章

HarmonyOS开发(DevEco Studio)

目录 开发环境搭建 下载DevEco Studio 进行环境配置 系统开发前端基础 应用开发目录结构 文件使用规则 基础组件介绍 Chart组件使用(线型图案例) 使用image-animator组件构建多图帧动画 TodoList应用构建 自定义组件使用 父子组件通信功能 路…

监控Kubernetes 控制面组件的关键指标

控制面组件的监控,包括 APIServer、Controller-manager(简称 CM)、Scheduler、etcd 四个组件。 1、APIServer APIServer 的核心职能是 Kubernetes 集群的 API 总入口,Kube-Proxy、Kubelet、Controller-Manager、Scheduler 等都需…

从后往前读取列表的方法

从后往前读取列表的方法 方法1:使用for循环遍历列表时,可以使用reverse()函数将列表反转,然后再遍历。 # 列表 num [0, 1, 2, 3]# 反向遍历 for i in reversed(num):print(i)输出结果: 3 2 1 0方法2:先计算列表长度…

并发和并行的概念

并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力。在操作系统中,引入进程的目的是使程序能够并发执行 注意同一时间间隔(并发&#xff0…

mybatis 中的<![CDATA[ ]]>用法及说明

<![CDATA[ ]]>作用 <![CDATA[ ]]> 在mybatis、ibatis等书写SQL的xml中比较常见&#xff0c;是一种XML语法&#xff0c;他的作用是 可以忽略xml的转义&#xff08;在该标签中的语句和字符原本是什么样的&#xff0c;在拼接成SQL后还是什么样的&#xff09; 使用&a…

ubuntu22.04-无法update:

1、报错原因 使用命令&#xff1a;sudo apt-get update 报错 获取:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic InRelease [242 kB] 获取:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease [88.7 kB] 获取:3 https://mirrors.t…

IDEA提示:StringBuffer xxx‘ may be declared as ‘StringBuilde

如图所示&#xff0c;编写代码时遇见了如下IDEA警告&#xff1a; 原因&#xff1a;StringBuilder是线程不安全的&#xff0c;但是其效率高&#xff0c;而StringBuffer则相反&#xff0c;虽然其线程安全&#xff0c;但是效率低下。 由于 StringBuilder 相较于 StringBuffer 有速…

对文件的读取和修改 JAVA

目录 1、try catch:2、hasNextLine():3、java读取某个文件夹信息&#xff1a;4、修改&#xff1a; 1、try catch: 1、try语句对你觉得可能会有问题的语句进行尝试 2、try内语句出现错误会被catch语句捕捉&#xff0c;且整个程序不会崩溃 3、try语句出错才会执行下方catch语句…