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

图像识别

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

模式识别

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

图像识别的过程

  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.rhkb.cn/news/267773.html

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

相关文章

在Golang中简化日志记录:提升性能和调试效率

最大化效率和有效故障排除:在Golang中简化日志记录 日志记录是软件开发的一个基本方面,有助于调试、监控和理解应用程序的流程。在Golang中,有效的日志记录实践可以显著提高性能并简化调试过程。本文探讨了优化Golang日志记录的技术&#xf…

[HackMyVM]靶场 VivifyTech

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Unk…

基于Java的超市商品管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 简介1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 超市区域模块2.3 超市货架模块2.4 商品类型模块2.5 商品档案模块 三、系统设计3.1 用例图3.2 时序图3.3 类图3.4 E-R图 四、系统实现4.1 登录4.2 注册4.3 主页4.4 超市区域管理4.5 超市货架管理4.6 商品类型…

浅谈 Linux fork 函数

文章目录 前言fork 基本概念代码演示示例1:体会 fork 函数返回值的作用示例2:创建多进程,加深对 fork 函数的理解 前言 本篇介绍 fork 函数。 fork 基本概念 pid_t fork(void) fork 的英文含义是"分叉",在这里就是 …

Java知识点整理(一)

反射 反射是在运行状态中,动态获取类信息,以及动态调用对象的方法的功能叫做反射机制。在JDBC,Servlet,SpringIOC中 优点:能够灵活的创建代码,动态执行方法访问属性。 缺点:破坏了封装性&…

Mysql学习之MVCC解决读写问题

多版本并发控制 什么是MVCC MVCC (Multiversion Concurrency Control)多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之&#xff0…

从零自制docker-1-【环境配置 docker go介绍与安装】

文章目录 docker简介举例docker安装go语言go安装go 配置 docker简介 Docker可以看作是一种极其轻巧的“虚拟机”,它允许你将一个或多个程序及其运行环境打包在一起,形成一个标准化的单元,这个单元可以在任何支持Docker的系统上运行&#xff…

神经网络之万能定理python-pytorch实现,可以拟合任意曲线

神经网络之万能定理python-pytorch实现,可以拟合任意曲线 博主,这几天一直在做这个曲线拟合的实验,讲道理,网上可能也有很多这方面的资料,但是博主其实试了很多,效果只能对一般的曲线还行,稍微…

114.龙芯2k1000-pmon(13)- 串口如何用

本文是讲原理图的部分,跟pmon的关系不大!! 参考手册:《龙芯2K1000处理器用户手册.pdf》 刚刚看数据手册,让我是有点惊讶,但是也让我迷惑。(一个串口复用为4个是啥意思?)…

MogaNet实战:使用MogaNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文:https://arxiv.org/pdf/2211.03295.pdf 作者多阶博弈论交互这一全新视角探索了现代卷积神经网络的表示能力。这种交互反映了不同尺度上下文中变量间的相互作用效…

#WEB前端(DIV、SPAN)

1.实验&#xff1a;DIV、SPAN 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; 类? 4.代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdev…

Python3零基础教程之数学运算专题进阶

大家好,我是千与编程,今天已经进入我们Python3的零基础教程的第十节之数学运算专题进阶。上一次的数学运算中我们介绍了简单的基础四则运算,加减乘除运算。当涉及到数学运算的 Python 3 刷题使用时,进阶课程包含了许多重要的概念和技巧。下面是一个简单的教程,涵盖了一些常…

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件&#xff0c;是一个.pcap文件 3.放在wireshark中&#xff0c;仔细观察数据流&#xff0c;会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式&#xff0c;接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…

VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”

解决办法&#xff0c;安装虚拟网卡&#xff0c;win11查找方式&#xff1a;控制面板→网络和共享中心→更改适配器设置 此时出现下面情况就算安装成功 但是如果报错&#xff1a;找不到指定的模块 则按下面步骤删除干净垃圾重新上面操作 先安装CCleaner, 链接:CCleaner Makes Y…

Day10:基础入门-HTTP数据包Postman构造请求方法请求头修改状态码判断

目录 数据-方法&头部&状态码 案例-文件探针 案例-登录爆破 工具-Postman自构造使用 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&#xff1a;文件…

51单片机-(定时/计数器)

51单片机-&#xff08;定时/计数器&#xff09; 了解CPU时序、特殊功能寄存器和定时/计数器工作原理&#xff0c;以定时器0实现每次间隔一秒亮灯一秒的实验为例理解定时/计数器的编程实现。 1.CPU时序 1.1.四个周期 振荡周期&#xff1a;为单片机提供定时信号的振荡源的周期…

k8s.gcr.io/pause:3.2镜像丢失解决

文章目录 前言错误信息临时解决推荐解决onetwo 前言 使用Kubernetes&#xff08;k8s&#xff09;时遇到了镜像拉取的问题&#xff0c;导致Pod沙盒创建失败。错误显示在尝试从k8s.gcr.io拉取pause:3.2镜像时遇到了超时问题&#xff0c;这通常是因为网络问题或者镜像仓库服务器的…

springcloud:3.3测试重试机制

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http:/…

守护无价数据:文件备份的重要性与实用方案

一、数据安全之盾&#xff1a;文件备份的必要性 在数字化时代&#xff0c;我们生活的各个方面都与电子文件紧密相连。从工作文档、个人照片到珍贵视频&#xff0c;这些文件记录着我们的成长、工作与生活。然而&#xff0c;随着电子设备的使用频率增加&#xff0c;数据丢失的风…

mTSL: netty单向/双向TLS连接

创建证书 不管是单向tls还是双向tls(mTLS)&#xff0c;都需要创建证书。 创建证书可以使用openssl或者keytool&#xff0c;openssl 参考 mTLS: openssl创建CA证书 单向/双向tls需要使用到的相关文件: 文件单向tls双向tlsServer端Client端备注ca.key----需要保管好&#xff0…