计算机视觉基础知识(十六)--图像识别

图像识别

  • 信息时代的一门重要技术;
  • 目的是让计算机代替人类处理大量的物理信息;
  • 随着计算机技术的发展,人类对图像识别技术的认识越来越深刻;
  • 图像识别技术利用计算机对图像进行处理\分析\理解,识别不同模式的目标和对象;
  • 过程分为信息的获取\预处理\特征抽取和选择\分类器设计\分类决策;

模式识别

  • 是人工智能和信息科学的重要组成部分;
  • 指对表示事物或现象的不同形式的信息做分析和处理,得到对事物或现象描述\辨认和分类的过程;
  • 计算机图像识别技术是模拟人类的图像识别过程;
  • 在图像识别的过程中进行模式识别是必不可少的;
  • 模式识别是人类的一项基本智能;
  • 随着计算机的发展和人工智能的兴起;
  • 人类本身的模式识别满足不了生活的需要;
  • 希望用计算机代替或扩展人类的部分脑力劳动,于是产生了计算机模式识别;
  • 模式识别就是对数据进行分类,与数学紧密结合,所用思想大部分是概率与统计;

图像识别的过程

  1. 信息的获取;
  2. 预处理;
  3. 特征抽取和选择;
  4. 分类器设计;

信息的获取

  • 通过传感器,将光或声音等信息转化为电信号;
  • 通过某种方法将其转变为机器能够认识的信息;

预处理

  • 指图像处理中的去噪\平滑\变换等操作;
  • 加强图像的重要特征;
  • 图像增强;

特征抽取和选择

  • 模式识别中,需要进行特征抽取和选择;
  • 是图像识别过程中非常关键的技术;

分类器设计

  • 通过训练得到一种识别规则;
  • 通过该识别规则得到一种特征分类;
  • 使得图像识别技术可以得到高德识别率;
  • 分类决策时在特征空间中对被识别对象进行分类;
  • 从而更好的识别所研究的对象;

图像识别的应用

  • 图像分类
  • 网络搜索
  • 以图搜图
  • 智能家居
  • 拍照识别/扫描识别
  • 农林:森林调查;
  • 金融
  • 安防
  • 医疗
  • 娱乐监管

机器学习方法的发展

分类与检测

  • 分类是识别图片内容,并进行归类的过程;
  • 检测是知道了图片的内容,在图片中将其框选出来的过程;
  • 分类与检测在很多领域广泛应用;

分类与检测的应用领域

  •  人脸识别
  • 行人检测
  • 智能视频分析
  • 行人跟踪
  • 交通场景物体识别
  • 车辆计数
  • 逆行检测
  • 车牌检测与识别;
  • 基于内容的图像检索
  • 相册自动归类

常见的卷积神经网络

 

VGG

  • VGG的经典之处在首次将深度学习做的非常"深",达到16-19层;
  • 同时使用了非常小的卷积核(3x3);

VGG16

  • 一张原始图片,resize到(224,224,3);
  • conv1两次[3,3]卷积,输出特征层64,形状为(224,224,64),2x2最大池化,输出net(112,112,64);
  • conv2两次[3,3]卷积,输出特征层128,形状为(112,112,128),2x2最大池化,输出net(56,56,128);
  • conv3三次[3,3]卷积,输出特征层256,形状为(56,56,256),2x2最大池化,输出net(28,28,256);
  • conv3三次[3,3]卷积,输出特征层256,形状为(28,28,512),2x2最大池化,输出net(14,14,512);
  • conv3三次[3,3]卷积,输出特征层256,形状为(14,14,512),2x2最大池化,输出net(7,7,512);
  • 卷积模拟全链接层,效果等同,输出net(1,1,4096),进行两次;
  • 卷积模拟全链接层,效果等同,输出net(1,1,1000);

卷积层与全链接层的区别

  • 卷积层为局部链接;
  • 全链接层使用图像的全局信息;
  • 最大的局部等于全局;
  • 说明全链接层使用卷积层替代可行;

卷积层代替全链接层

  • 卷积层和全链接层都进行了一个点乘操作;
  • 他们的函数形式相同;
  • 全链接层可以转化为对应的卷积层;
  • 只需要把卷积核的尺寸变为和输入的feature map大小一致,为(h,w);
  • 这样卷积和全链接层的参数一样多;

1X1卷积的作用

  • 实现特征通道的升维和降维;
  • 控制卷积核的数量,从而控制通道数;
  • 池化层只改变尺寸,无法改变通道数;

Residual net(残差网络)

  • 将靠前若干层的某一层数输出直接跳过多层引入到后面数据层的输入;

残差神经单元

  • 某段神经网络的输入为x;
  • 期望输出为H(x);
  • 如果我们直接将输入x传到输出作为初始结果;
  • 需要学习的目标为:F(x)=H(x)-x;
  • 这就是一个残差神经单元;
  • 相当于改变了学习目标;
  • 不再是学习一个完整的输出H(x);
  • 而是学习输出和输入的差别:H(x)-x,即残差;

 直连卷积神经网络与ResNet的区别

  • ResNet有很多旁路的支线将输入直连到后面的层;
  • 后面的层可以直接学习残差;
  • 这种结构也被称为shortcut或skip connections;
  • 传统卷积层或全连接层在信息传递时会存在信息丢失\损耗等问题;
  • ResNet直接将输入信息绕道传到输出,保护信息的完整性;
  • 整个网络只学习输入\输出差别的那部分,简化了学习目标和难度;

ResNet50

  • ResNet50有两个基本的模块;
  • 分别是Conv Block和Identity Block;
  • Conv Block的输入和输出维度不一样,不能连续串联;
  • 其作用是改变网络的维度;
  • Identity Block输入维度和输出维度相同,可串联,用于加深网络;

BatchNormalization

  • 所有输出保证在0~1之间;
  • 所有输出数据的均值接近0;
  • 标准差接近1的正态分布;
  • 这样能够使数据落入激活函数的敏感区,避免梯度消失,加快收敛;
  • 加快模型收敛速度,并具有一定的泛化能力;
  • 可减少dropout的使用;

\widehat{x}^{(k)}=\frac{x^{(k)}-E[x^{(k)}]}{\sqrt{Var[x^{(k)}]}}

卷积神经网络迁移学习-fine tuning

  • 实践中,由于数据集不够大,很少有人从头开始训练网络;
  • 常见的做法是使用预训练的网络;
  • 对预训练的网络来重新fine-tuning;
  • 或者使用预训练网络作为特征提取器;
  • 迁移学习就是将训练好的模型,通过简单的调整快速移动到另一个数据集上;
  • 随模型层数及复杂度的增加,错误率不断降低;
  • 训练复杂的神经网络需要非常多的标注信息;
  • 也需要长至几天甚至几周的训练时间;
  • 为了解决上述问题可以使用迁移学习;

常见的两类迁移学习场景

  • 卷积网络当做特征提取器;
  • Fine-tuning卷积网络;

卷积网络当做特征提取器

  • 使用在ImageNet上预训练的网络;
  • 去掉最后的全连接层;
  • 剩余部分当做特征提取器;
  • 这样提取的特征称为CNN节点;
  • 可以使用线性分类器来分类图像;

Fine-tuning卷积网络

  • 替换网络的输入层;
  • 使用新的数据来训练;
  • 可以选择fine-tune全部曾或部分层;
  • 通常前面的层提取图像的通用特征(generic features);
  • 通用特征对许多任务都有用;
  • 后面的层提取与特定类别有关的特征;
  • Fine-tuning常常只需要微调后面的层;

Inception

  • Inception网络是CNN发展史上的一个重要里程碑;
  • Inception出现之前的CNN仅是堆叠卷积层,网络越来越深;
  • 以期得到更好的性能;

多层卷积网络深度存在的问题

  • 图像中突出部分的大小差别很大;
  • 由于信息位置的巨大差异,卷积操作选择合适大小的卷积核比较困难;
  • 信息分布更全局的图像偏好较大的卷积核;
  • 信息分布较局部的图像偏好较小的卷积核;
  • 非常深的网络更容易过拟合;
  • 将梯度更新传到整个网络是困难的;
  • 简单堆叠卷积层非常消耗计算资源;

Inception module解决方案

  • 鉴于多层卷积神经网络具有的以上问题;
  • 为什么不在同一层上运行多个尺寸的滤波器呢?
  • 那么网络本质上变得宽一些,而不是更深一些;

Inception模块

  • 使用三个不同尺寸的滤波器:1X1,3x3,5x5,以及最大池化;
  • 对输入执行卷积操作;
  • 所有子层的输出最后被级联起来;
  • 传送至下一个模块;
  • 一方面增加了网络的宽度;
  • 另一方面增加了网络的尺度适应性;

降维Inception模块

  •  如前,深度神经网络耗费大量资源;
  • 为了降低算力成本,在3x3,5x5卷积层之前添加额外的1x1卷积层;
  • 以此来限制输入通道的数量;
  • 尽管添加额外的卷积操作反直觉;
  • 但是1x1的卷积较5x5的卷积廉价许多;
  • 输入通道数量的减少有利于降低计算成本;

1x1卷积降低运算成本比较

 

Inception V1 

  • Googlenet出品
  • 采用了Inception 模块化结构;
  • 共计9个模块,22层;
  • 避免梯度消失,增加2个辅助softmax;
  • 用于前向传导梯度;

Inception V2

  •  输入增加了BatchNormalization;
  • 用两个连续的3x3卷积层(stride=1)组成的小网络代替单个5x5卷积;
  • 5x5卷积核参数是3x3卷积核参数的25/9=2.78倍;

  • 此外,作者将 nxn的卷积核尺寸分解为1xn和nx1的两个卷积;

  •  前面三个原则用来构建三种不同类型的Inception模块;
typepatch size/strideinput  size
conv3x3/2299x299x3
conv3x3/1149x149x32
conv padded3x3/1147x147x32
pool3x3/2147x147x64
conv3x3/173x73x64
conv3x3/271x71x80
conv3x3/135x35x192
3 X Inception35x35x288
5 X Inception17x17x768
2 x Inception8x8x1280
pool8x88x8x2048
linearlogits1x1x2048
softmaxclassifier1x1x1000

Inception V3

  • 整合了InceptionV2的所有升级,使用了7X7卷积
typepatch size/strideinput  size
conv3x3/2299x299x3
conv3x3/1149x149x32
conv3x3/1147x147x32
pool3x3/2147x147x64
conv3x3/173x73x64
conv3x3/271x71x80
conv3x3/135x35x192
3 X Inception35x35x288
3 X Inception17x17x768
3 x Inception8x8x1280
pool8x88x8x2048
linearlogits1x1x2048
softmaxclassifier1x1x1000

Inception V3 设计思想

  • 分解成小卷积很有效;
  • 可以降低参数量,减轻过拟合;
  • 增加网络非线性的表达能力;
  • 卷积网络从输入到输出;
  • 应该让图片尺寸逐渐减小;
  • 输出通道数逐渐增加;
  • 让空间结构化,将空间信息转化为高阶抽象的特征信息;
  • Inception Module使用多个分支;
  • 提取不同抽象程度的高阶特征;
  • 丰富网络的表达能力;

Inception V4

  • 图中1为基本的Inception V2/V3模块;
  • 使用两个3x3卷积代替5x5卷积;
  • 并且使用average pooling;
  • 该模块主要处理尺寸为35x35的feature map;
  • 图2中模块使用1xn和nx1卷积代替nxn卷积;
  • 同样使用average pooling;
  • 该模块主要处理尺寸为17x17的feature map; 
  • 图3将3x3卷积用1x3卷积和3x1卷积代替;
  • Inception V4中基本的Inception module沿袭了Inception V2/V3的结构;
  • 不同的是结构看起来更为简洁统一;
  • 且使用更多的Inception module,实验效果更好;

 

 Inception模型优势

  • 采用1x1卷积核,性价比高;
  • 很少的计算量可增加一层特征变换和非线性变换;
  • 提出Batch Normalization;
  • 通过一定手段,将每层神经元的输入分布拉到均值0方差1的正态分布;
  • 使其落入激活函数的敏感区;
  • 避免梯度消失,加快收敛;
  • 引入Inception module 4个分支结合的结构;

卷积神经网络迁移学习

  • 现在工程中最常用的是vgg\resnet\Inception这几种结构;
  • 设计者通常先直接套用原版模型;
  • 对数据进行一次训练;
  • 选择较好的模型进行微调与模型缩减;
  • 工程上使用的模型必须高进度和高速度;
  • 常用模型缩减的方法是减少卷积个数与减少resnet的模块数;

卷积神经网络迁移学习-Inception

  • 据相关论文,保留训练好的Inception模型所有卷积层的参数;
  • 只替换最后一层全链接层;
  • 最后全链接层之前的网络称为瓶颈层;
  • 瓶颈层输出的节点向量可作为任何图像的一个具有表达能力的特征向量;
  • 在新的数据集上,利用训练好的网络对图像进行特征提取;
  • 提取的特征向量作为输入训练一个全新的单层全连接神经网络;
  • 处理新的分类问题;
  • 在数据量足够的情况下;
  • 迁移学习的效果不如完全重新训练的效果;
  • 迁移学习所需的训练时间和样本远小于完整模型的训练;
  • Inception模型与Alexnet结构完全不同;
  • Alexnet模型中,不同卷积层串联连接;
  • Inception模型中Inception结构并联不同的卷积层;

Mobilenet

  • google针对手机等嵌入式设备提出;
  • 一种轻量级的深层神经网络;
  • 其核心思想为深度可分离卷积;
  • depthwise separable convolution;
  • 3x3卷积核厚度只有一层;
  • 卷积核在输入张量上一层层的滑动;
  • 每一次卷积生成一个输出通道;
  • 卷积完成后,利用1x1的卷积调整厚度;

  • 对于一个卷积点;
  • 假设有一个3x3大小的卷积层;
  • 其输入通道为16,输出通道为32;
  • 32个3x3大小的卷积核会遍历16个通道中的每个数据;
  • 可得所需的32个输出通道;
  • 所需参数为16x32x3x3=4608个;
  • 应用深度可分离卷积;
  • 用16个3x3大小的卷积核遍历16通道的数据;
  • 得到16个特征图谱;
  • 接着用32个1x1大小的卷积核遍历16个特征图谱;
  • 所需参数为16x3x3+16x32x1x1=656个;
  • 可以看出,depression separable convolution 可减少模型的参数;

卷积神经网络设计的问题背景

  • 熟练掌握训练神经网络的能力并不容易;
  • 与机器学习的思维一样,细节决定成败;
  • 训练神经网络需要处理更多的技术细节;
  • 应该了解数据和硬件;
  • 知道从何种网络开始;
  • 了解需要建立多少卷积层;
  • 熟悉激励函数的设置;
  • 学习速率是调整神经网络训练的最重要超参数;
  • 也是最难优化的参数之一;
  • 学习率太小,可能永远不会得到一个解决方案;
  • 学习率太大,可能会错过最优解;
  • 自适应的匹配学习率,可能需要花费代价在硬件资源上;
  • 设计选择和超参数的设置极大影响了CNN训练和性能;
  • 资源的稀缺和分散对深度学习的新进者,可能更有利于架构设计的直觉培养;

卷积神经网络的设计技巧

1.架构遵循应用

  • Google Brain 或者Deep Mind 实验室有许多耀眼的新模型;
  • 但其中很多是不可实现,或于你的需求不适用;
  • 应该使用对特定的应用最有意义的模型;
  • 这种模型或许非常简单,但仍然强大,比如VGG;

2.路径激增

  • 每年ImageNet Challenge的冠军都比上一年使用更加深层的网络;
  • 从AlexNet到Inception再到Resnets;
  • 网络路径的数量有成倍增长的趋势;

3.追求简约

  • 更大的不一定是更好的

4.增加对称性

  • 对称性是质量和工艺的标志;

5.金字塔形状

  • 总是在表征能力和减少冗余或者无用信息之间权衡;
  • CNNs通常会降低激活函数的采样;
  • 增加从输入层到最终层之间的连接通道;

6.过度训练

  • 训练准确度和泛化能力是衡量模型的另一个标准;
  • 可使用drop-out或dro-path提升泛化能力;
  • 这是神经网络的重要优势;
  • 用比实际用例更难的问题训练网络,以提高泛化能力;

7.覆盖问题的空间

  • 为了扩大训练数据和提升泛化能力;
  • 使用噪声和人工增加训练集的大小;
  • 比如随机旋转\裁剪和一些图像增强操作;

8.递增的功能结构

  • 成功的结构会简化每一层的工作;
  • 在非常深的神经网络中,每层会递增的修改输入;
  • 在ResNet中,每一层的输出可能类似于输入;
  • 在实践中,请在ResNet中使用短的跳过长度;

9.标准化层的输入

  • 标准化是可以使计算层的工作变得更加容易的一条捷径;
  • 在实际中可以提升训练的准确性;
  • 标准化 把所有曾的输入样本放在了一个平等的基础上;
  • 允许反向传播可以更有效的训练;

10.使用微调过的预训练网络(fine tuning)

  • 如果你的视觉数据和ImageNet相似;
  • 可用预训练网络使得模型学习的更快;
  • 低水平的CNN通常可被重复使用;
  • 他们大多能够检测线条和边缘这些常见的模式;
  • 比如用自己的层替换分类层,用特定的数据训练最后几层;

11.使用循环的学习率

  • 学习率的实验会消耗大量时间;
  • 且中间会遇到错误;
  • 自适应学习率在计算上可能是非常昂贵的;
  • 循环学习率不会大量消耗计算资源;
  • 使用循环学习率,可设置一组最大最小边界;
  • 并在最大最小范围内改变;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/714931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebServer -- 注册登录

目录 🍉整体内容 🌼流程图 🎂载入数据库表 提取用户名和密码 🚩同步线程登录注册 补充解释 代码 😘页面跳转 补充解释 代码 🍉整体内容 概述 TinyWebServer 中,使用数据库连接池实现…

【深度学习笔记】计算机视觉——图像增广

图像增广 sec_alexnet提到过大型数据集是成功应用深度神经网络的先决条件。 图像增广在对训练图像进行一系列的随机变化之后,生成相似但不同的训练样本,从而扩大了训练集的规模。 此外,应用图像增广的原因是,随机改变训练样本可以…

Python + Selenium —— 下拉菜单处理!

传统的下拉菜单 Select 元素&#xff0c;由一个 Select 一系列的 option 元素构成。 <select id"source" name"source"><option value"">--请选择--</option><option value"1001">网络营销</option>&…

3.3 序列式容器-deque、stack、queue、heap、priority_queue

deque 3.1定义 std::deque&#xff08;双端队列&#xff09;是C标准模板库&#xff08;STL&#xff09;中的一种容器&#xff0c;表示双端队列数据结构。它提供了在两端高效地进行插入和删除操作的能力。与vector的连续线性空间类似&#xff0c;但有所不同&#xff0c;deque动…

基于ssm旅社客房收费管理系统+vue

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

STM32使用FlyMcu串口下载程序与STLink Utility下载程序

文章目录 前言软件链接一、FlyMcu串口下载程序原理优化手动修改跳线帽选项字节其他功能 二、STLink Utility下载程序下载程序选项字节固件更新 前言 本文主要讲解使用FlyMcu配合USART串口为STM32下载程序、使用STLink Utility配合STLink为STM32下载程序&#xff0c;以及这两个…

代码随想录算法训练营第62/63天| 503.下一个更大元素II、42. 接雨水、84.柱状图中最大的矩形

文章目录 503.下一个更大元素II思路代码 42. 接雨水思路代码 84.柱状图中最大的矩形思路代码 503.下一个更大元素II 题目链接&#xff1a;503.下一个更大元素II 文章讲解&#xff1a;代码随想录|503.下一个更大元素II 思路 和739. 每日温度 (opens new window)也几乎如出一辙&…

C++/数据结构:AVL树

目录 一、AVL树的概念 二、AVL树的实现 2.1节点定义 2.2节点插入 三、AVL树的旋转 3.1新节点插入较高左子树的左侧&#xff1a;右单旋 3.2新节点插入较高右子树的右侧&#xff1a;左单旋 3.3新节点插入较高左子树的右侧---左右&#xff1a;先左单旋再右单旋 3.4新节点插…

SLAM基础知识-卡尔曼滤波

前言&#xff1a; 在SLAM系统中&#xff0c;后端优化部分有两大流派。一派是基于马尔科夫性假设的滤波器方法&#xff0c;认为当前时刻的状态只与上一时刻的状态有关。另一派是非线性优化方法&#xff0c;认为当前时刻状态应该结合之前所有时刻的状态一起考虑。 卡尔曼滤波是…

SD NAND:为车载显示器注入智能与安全的心脏

SD NAND 在车载显示器的应用 在车载显示器上&#xff0c;SD NAND&#xff08;Secure Digital NAND&#xff09;可以有多种应用&#xff0c;其中一些可能包括&#xff1a; 导航数据存储&#xff1a; SD NAND 可以用于存储地图数据、导航软件以及车载系统的相关信息。这有助于提…

微服务day03-Nacos配置管理与Nacos集群搭建

一.Nacos配置管理 Nacos不仅可以作为注册中心&#xff0c;可以进行配置管理 1.1 统一配置管理 统一配置管理可以实现配置的热更新&#xff08;即不用重启当服务发生变更时也可以直接更新&#xff09; dataId格式&#xff1a;服务名-环境名.yaml&#xff0c;分组一般使用默认…

蓝桥杯备战刷题two(自用)

1.杨辉三角形 #include<iostream> using namespace std; #define ll long long const int N2e510; int a[N]; //1 0 0 0 0 0 0 //1 1 0 0 0 0 0 //1 2 1 0 0 0 0 //1 3 3 1 0 0 0 //1 4 6 4 1 0 0 //1 5 10 10 5 1 //前缀和思想 //第一列全为1,第二列为从0开始递增1的序…

信息检索(七):Transformer Memory as a Differentiable Search Index

Transformer Memory as a Differentiable Search Index 摘要1. 引言2. 相关工作3. 可微搜索索引3.1 索引策略3.1.1 索引方法3.1.2 文档表示策略 3.2 用于检索的 Docids 表示3.3 训练和优化 4. 实验4.1 基线4.2 实验结果 5. 结论参考资料 原文链接&#xff1a;https://proceedin…

Revit-二开之创建线性尺寸标注-(5)

创建线性尺寸标注 对应的Revit界面的按钮 线性尺寸标注源码 本篇文章实现的逻辑是从rvt文章中拾取一面墙,然后对墙添加再水平方向上的线性尺寸标注 protected override Result OnExecute(ExternalCommandData commandData, ref string message, ElementSet elements

LeetCode 刷题 [C++] 第55题.跳跃游戏

题目描述 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 题目分析 题目中…

2.1 mov、add和sub加减指令实操体验

汇编语言 1. mov操作 1.1 mov移动值 mov指令把右边的值移动到左边 mount c d:masm c: debug r ax 0034 r 073f:0100 mov ax,7t1.2 mov移动寄存器的值 把右边寄存器的值赋值给左边的寄存器 a 073f:0105 mov bx,axt1.3 mov高八位&#xff08;high&#xff09;和低八位&am…

设计模式——中介者模式(mediator pattern)

概述 如果在一个系统中对象之间的联系呈现为网状结构&#xff0c;如下图所示。对象之间存在大量的多对多联系&#xff0c;将导致系统非常复杂&#xff0c;这些对象既会影响别的对象&#xff0c;也会被别的对象所影响&#xff0c;这些对象称为同事对象&#xff0c;它们之间通过彼…

​用细节去解释,如何打造一款行政旗舰车型

高山行政加长版应该是这个级别里最大的几款 MPV 之一了&#xff0c;对于一款较大的车型&#xff0c;其最重要的是解决行驶的便利性。 这次我们就试试魏牌高山行政加长版&#xff0c;从产品本身出发看几个纬度的细节&#xff1a; 行政该如何定义加长后产品的功能变化加长之后到…

Ladder类创建梯形对象共享一个下底

package Absent;public class Chapter5 {public static void main(String[] args) {Ladder.bottom100;Ladder ladderOnenew Ladder();Ladder ladderTwonew Ladder();ladderOne.top23;ladderTwo.top34;System.out.println("ladderOne的上底&#xff1a;"ladderOne.get…

Java 数组(详细)

目录 一、数组的概述 1. 数组的理解&#xff1a; 2. 数组相关的概念&#xff1a; 3. 数组的特点&#xff1a; 4. 数组的分类&#xff1a; 5.数据结构&#xff1a; 二、一维数组 1. 一维数组的声明与初始化 2. 一维数组元素的引用&#xff1a; 3. 数组的属性&#xff1…