Yolov5

您所在的位置:网站首页 yolov5图像识别的数字是什么 Yolov5

Yolov5

#Yolov5| 来源: 网络整理| 查看: 265

Yolov5_v6.2训练数据集进行预测

记录一下第一次进行Yolov5的部署,调试,训练,预测。

Yolov5_v6.2训练数据集进行预测 学习笔记

记录一下第一次进行Yolov5的部署,调试,训练,预测。第一次发布在了CSDN:链接: https://blog.csdn.net/C_1Y1_T/article/details/127691617?spm=1001.2014.3001.5502现在在博客园也发布一下

1.Yolov5环境部署 我使用的环境是:Yolov5_v6.2 + Minconda + torch_v1.13.0(CPU版本) 1.1.Minconda安装 这里不是重点,可以查询专门的安装配置教程。 使用Anaconda是一样的。 在安装后,建议设置国内镜像源,否则后面下载会很慢。 1.2.Pytorch安装 在Yolov5的 requirements.txt中,有设置下载Pytorch,但Pytorch相对于其他东西比较大,所以这里选择单独安装,避免出错。 在Pytorch官网 https://pytorch.org选择配置(有NVIDIA独显和没独显不一样)后,复制生成的代码,在conda中安装 例如我这里没有NVIDIA的独立显卡,所以选择CPU版本 #我选择的CPU版本,生成的下载链接 conda install pytorch torchvision torchaudio cpuonly -c pytorch

Yolov5_v6.2训练数据集进行预测* 安装完成后,查看torch版本 #python 查看torch版本 >>> import torch >>> print(torch.__version__) #python 判断cuda能否使用 >>> import torch >>> torch.cuda.is_available() #True 有cuda False没有cuda,我没有NVIDIA独显且安装的CPU版本,所以为False

Yolov5_v6.2训练数据集进行预测 1.3.下载Yolov5模型 Github下载地址: https://github.com/ultralytics/yolov5 如果访问慢,可以访问国内的Gitee,同步更新Github上的源码: https://gitee.com/monkeycc/yolov5 我下载的是yolov5_v6.2版本,下载后,打开yolov5的目录

Yolov5_v6.2训练数据集进行预测 在conda终端(建议单独创一个训练Yolo的虚拟环境),例如,我这里创建了一个名为Yolov5的虚拟环境,在这个环境下,安装Yolov5的 requirements.txt中的包 前面已安装好Pytorch,安装 requirements.txt中的包时会自动检测,只要满足Yolov5的配置需求,就不会再下载Pytorch了(当然,前面下载Pytorch时,也应该放在同一个虚拟环境) # 安装requirements.txt中的依赖文件 pip install -r requirements.txt # install 1.4.下载Yolov5的权重文件 下载地址: https://github.com/ultralytics/yolov5/releases 训练速度:n>s>m>l>x,速度快,意味着精度低,但一般使用s就行了 Yolov5_v6.2训练数据集进行预测 下载后的 .pt权重文件可以直接放在yolov5的根目录下,也可以在yolov5的根目录下新建一个 weights文件夹,把权重文件放到里面 2.在Pycharm中初步调试运行yolov5 2.1.Pycharm配置conda虚拟环境 在Pycharm中打开yolov5文件夹,并配置好你之前创建的用于yolov5的虚拟环境 Yolov5_v6.2训练数据集进行预测 Yolov5_v6.2训练数据集进行预测 2.2. 运行yolov5根目录下的detect.py 运行yolov5根目录下的 detect.py,看能否正常运行(这个就是预测/目标检测,在官方下载的yolov5中,已经配置好了示例用的参数,配置好环境后,就可以直接运行) Yolov5_v6.2训练数据集进行预测 这样就是运行成功,结果保存在 run\detect\exp4目录中,预测结果如下: Yolov5_v6.2训练数据集进行预测 Yolov5_v6.2训练数据集进行预测 也可以在终端中运行 Yolov5_v6.2训练数据集进行预测 2.3.可能存在的问题 抛异常: AttributeError: 'Detect' object has no attribute 'm' 解决:参考博客: https://blog.csdn.net/Joseph__Lagrange/article/details/108255992 建议使用官网上的每个版本对应权重文件 3.训练自己的数据集 由于我的电脑没有独立显卡,所以我就不在本地进行训练了,后面介绍使用云服务器进行训练 但在训练我们自己的数据集之前,我们需要对进行训练的图片进行类别标注 如果你使用官网或其他人的已经标注好的数据集(例如:yolov5中已经配置好模型,参数的COCO128数据集),则可以直接配置参数后进行训练,不需要自己标注训练用的图片 3.1.图片类别标注 标注工具有很多,这里我使用 Labellmg,方便操作,且可以直接保存为适用于yolo的 .txt格式,省去了格式转换的麻烦 3.1.1.Labellmg安装 官网下载地址: https://github.com/heartexlabs/labelImg 安装方式,以官网给出的 Windows + Anaconda方式为例 下载 labellmg的code压缩包,或使用 git方式克隆到本地 使用 Anaconda Prompt进入下载的 labellmg文件夹 Yolov5_v6.2训练数据集进行预测 #安装配置相关环境 conda install pyqt=5 conda install -c anaconda lxml pyrcc5 -o libs/resources.py resources.qrc #启动labellmg python labelImg.py #指定参数启动labellmg python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE] 每次启动都需要到你的 Labellmg的目录下启动,例如我这里放在 D:\DeveloperTools\labelImg目录,启动界面如下 Yolov5_v6.2训练数据集进行预测 安装可能遇到的问题 # (1).出现:'pyrcc5' 不是内部或外部命令,也不是可运行的程序 或批处理文件。 # 解决:直接使用Anaconda/Minconda的默认(base)环境安装即可,不要用自己另外创建的虚拟环境 #(2).出现:EnvironmentNotWritableError: The current user does not have write permissions to the target environm 当前用户没有对目标环境的写入权限 #解决:以管理员身份运行cmd或Anaconda Prompt即可 3.1.2.Labellmg使用 使用前的一个注意点 在 labellmg\data目录下,存在一个 predefined_classes.txt文件 Yolov5_v6.2训练数据集进行预测 predefined_classes.txt文件内存在一些预设的标注类型,有15个,索引从0开始,[0,14] Yolov5_v6.2训练数据集进行预测 需要注意,如果你用不到这么多类型,则因该启动 labellmg之前就因该把这些预设删除,或替换为自己需要的标注类型名称, 这些名称的顺序 必须和 你自己训练数据时的 xxx.yaml 文件中标注的类型一致,且顺序一致,索引从0开始,如果不一致,可能存在问题 例如,后面我这里才发现我只需要两个类别,但最开始是有15个类别的 Yolov5_v6.2训练数据集进行预测 主要的原因就是我的两个类别的顺序索引和 labellmg生成的标签顺序索引不一致,现在只能手动修改 .txt中的索引了,所以建议一开始就指明自己需要哪些标签类别 Yolov5_v6.2训练数据集进行预测 Labellmg使用 Labellmg的特点是可以自己选择标注的保存类型,而 labelme是没有的。 Yolov5_v6.2训练数据集进行预测 使用时的一些设置 设置标注的标签的保存路径(文件夹) Yolov5_v6.2训练数据集进行预测 设置自动保存 Yolov5_v6.2训练数据集进行预测 快捷键: A:上一张图, B:下一张图, W:创建区块(手动标注) 标注时是鼠标选择一个起点后点击,按住鼠标左键拖动,画一个矩形框。 Yolov5_v6.2训练数据集进行预测 最终结果:一张图片对应一个txt文件 Yolov5_v6.2训练数据集进行预测 3.2.train.py和detect.py参数了解 参考视频: https://www.bilibili.com/video/BV1tf4y1t7ru/?spm_id_from=333.999.0.0&vd_source=45352058e2e0900c3d75ba93406d8fdb 以下是观看视频时做的笔记,可能有失偏颇,仅供参考,详细的可以去看原视频 3.2.1.detect.py文件部分参数

Yolov5_v6.2训练数据集进行预测

点击查看detect.py的各参数含义

""" # default是默认,action是选择。需要的话自己配置参数 #有default值的参数,你不设置值,就会使用作者给你配好的默认参数值 *******************************下面是有default值的参数************************************* 1.'--weight' 权重 default 'yolo5s.pt'表示默认选择'yolo5s.pt'文件进行训练,也可以改为其他的权重文件。 例如'yolo5l.pt','yolo5m.pt','yolo5x.pt' 2.'--source' 数据源 2.1.default 'data/images'存放目标检测文件的文件夹,在/images文件夹中可以存放图片/视频(图片推荐.jpg,视频推荐.mp4格式),同时建议只放同一类的文件类型,比如只放图片,或只放视频。 2.2.手机下载ip摄像头,路径改为http://admin:admin@手机上打开之后显示的ip地址,就可以实时检测 电脑要和他在同一WiFi下,ip地址:后面的也写 3.'--data' default 'data/coco128.yaml' 默认使用官方yaml文件 4.'--imgsz' 图片尺寸大小 default=[640] 默认检测时设置图片尺寸为640,这个和图片本身的尺寸不想关,并不是说会把目标图片的大小或输出的图片大小改为设置的大小,而是在检测图片时,会等比例缩放为指定尺寸,这样比较节约算力资源,如果按照图片原本的尺寸去检测,如果原本的图片尺寸很大,则需要更多的算力与时间去检测。但缩放图片比例去检测也意味着检测精度的损失。 5.'--conf-thres' 检测阈值 default=0.25 默认为0.25 检测阈值设置越低,则检测到的物体越多,但检测精度也越低。在检测结果中,图片上会标出检测到的物体有多少的概率是什么已知的物体。比如:阈值设置越低,则可能将"猫"检测标识为"狗"。反之,阈值设置得越高,则检测精度越高,但检测到的物体可能就很少,有时可能检测不到物体。 6.'--iou-thres' 一般默认(NMS IoU threshold(阈值)) default=0.45,数值越大,则检测结果中每个目标的标注会很多(原理就是值越大,就代表检测的块必须完全一致才算同一部份,否则就会算多个不同的部分),反之,数值越小,则检测结果中每个目标标注就会较少,因为会把相似的部分当作同一个部分来标注。 7.'--max-det' 8.'--device'设备 默认为空,会自动检测使用的设备,比如CPU,cuda等 *******************************下面是没有default值的参数************************************* #没有default值的参数,不是需要设置什么,而是用户自己选择是否启用,默认为false,关闭状态。如果用户要启用这些功能,只需要在运行时添加对应的参数(即设置为true)即可,运行时,会自动检测,检测到对应的参数为true,就会启用对应的功能。 #比如在命令行中运行'detect.py'且实时显示结果: > python detect.py --view-img 9.'--view-img'实时显示结果 运行过程中,会实时显示检测出的结果,如果是图片,则每张每张的显示结果(注:如果检测很多张图片,不要设置这个参数,否则会把每一张图片都挨个显示出来),如果是视频,则以视频形式实时播放检测结果(如果电脑卡,那就是一帧一帧的播放,所以也不太建议设置这个参数) 10.'--save-txt'保存检测结果中的标注的坐标 保存结果为'.txt'文件类型,结果中会多一个'./labels/'文件夹,保存了生成的'.txt'文件 11.'--save-conf' 保存置信度 12.'--save-crop' 保存裁剪的预测框 13.'--nosave' 不保存检测结果的图片/视频 14.'--classes'过滤(可用于只保留指定的类型) 在检测中的'.txt'文件中,保存了检测目标的 类别(用不同的数字表示不同的类别),还有坐标信息(x,y,w,h) 例如:--classes 0 只保留0这个类别的文件 --classes 0 2 3 只保留0,2,3这三个类别的文件 例如:".txt"文件中,人这个类别用'0'表示,如果设置参数--classes 0 ,则结果图片中只会检测人这个类别,即使图片中有车,信号,动物等,都不会检测。 15.'--agnostic-nms' 增强nms效果 16.'--augment' 增强检测(识别度可能会有提升,但也有翻车的(把狗识别为人),结果中标注框的颜色会加深一些) 17.'--visualize' 可视化特征 18.'--update' 优化 设置之后,会将运行过程中没用到的部分设置为None,只保存用到的部分 *******************************下面是有default值的参数************************************* 19.'--project' 检测结果保存的路径 default=ROOT / 'runs/detect' 即默认保存到项目下的'runs/detect/'文件夹 20.'--name' 检测结果保存到的文件夹的名称 default='exp' 所以每次运行后,保存结果的文件夹都叫'exp...' *******************************下面是没有default值的参数************************************* 21.'--exist-ok' 对于已存在的文件夹是否覆盖 默认为false,即:如果已存在'--name'参数指定的文件夹'exp',则创建新的文件夹保存结果,例如'exp2'。 同理,如果'exp2'也存在,就继续增加数字,例如'exp3',直到不存在同名的文件夹 如果用户设置了这个参数,则表示,始终把检测结果保存到'--name'参数指定的文件夹'exp'中,即使'exp'文件夹存在,里面有文件,也会保存到这里面。 *******************************下面是有default值的参数************************************* 22.'--line-thickness' 官方解释:help='bounding box thickness (pixels)' 边界框厚度(像素) default=3 23.'--hide-labels' 官方解释:help='hide labels' 隐藏标签 default=False 24.'--hide-conf' 官方解释:help='hide confidences' 隐藏置信度 *******************************下面是没有default值的参数************************************* 25.'--half' 官方解释:help='use FP16 half-precision inference' 使用FP16半精确推理 26.'--dnn' 官方解释:help='use OpenCV DNN for ONNX inference' 使用OpenCV DNN进行ONNX推理 *******************************下面是有default值的参数************************************* 27.'--vid-stride' 官方解释:help='video frame-rate stride' 视频帧速率步幅 default=1,即默认一帧一帧的处理 """ Pycharm中设置运行 detect.py时的参数 在命令行中加入参数,就是加在 python detect.py的后面,例如 python detect.py --view-img Yolov5_v6.2训练数据集进行预测 参数中设置外部图片文件夹 Yolov5_v6.2训练数据集进行预测 设置外部视频文件 Yolov5_v6.2训练数据集进行预测 Yolov5_v6.2训练数据集进行预测 3.2.2.train.py文件部分参数 主要参数如下 Yolov5_v6.2训练数据集进行预测 Yolov5_v6.2训练数据集进行预测

点击查看train.py的各参数含义

`python“””

default是默认,action是选择。需要的话自己配置参数

****下面是有default值的参数******

有default值的参数,你不设置值,就会使用作者给你配好的默认参数值

1.’–weights’ default=’yolov5s.pt’ 默认使用’yolov5s.pt’权重文件进行训练。也可以改为其他的权重文件。 例如’yolo5l.pt’,’yolo5m.pt’,’yolo5x.pt’,当然你也可以使用其他训练好的权重文件。 如果是自己训练数据集,则可以设置空参(即:default=”),让程序来生成权重文件。

2.’–cfg’ 训练用的模型文件 default=” 默认为空,可以自己添加,例如使用官方的模型,在项目的’/models/’文件夹下 官方的有:’yolov5l.yaml’,’yolov5m.yaml’,’yolov5n.yaml’,’yolov5s.yaml’,’yolov5x.yaml’模型

3.’–data’ 指定训练用的数据集 default=’data/coco128.yaml’ 默认使用官方的数据集图片(coco128即coco数据集的前128张图片,因为完整的coco数据集图片很多),打开’data/coco128.yaml’文件,可以发现其中指定的内容: 如果在本地项目中没有找到coco128数据集,则会自动下载,但由于有些电脑可能自动下载失败,可以复制给出的下载链接,手动去下载。download: https://ultralytics.com/assets/coco128.zip ‘coco128.yaml’中还指定了数据集的路径:path,train(训练集),val(验证集),test(测试集)的路径。 其中 #Classes表示类别,names总共有80个,表示分了80个类别 当然,也可以使用其他的数据集,例如’coco.yaml’,’VOC.yaml’等官方提供的,或是别人的。

4.’–hpy’ 超参数,用于对项目进行微调 default=’data/hyps/hyp.scratch-low.yaml’ 需要指定文件路径 需要注意:官方的’data/hyps/’文件夹下的’.yaml’文件并不适合每个数据集,例如’hyp.scratch-low.yaml’的开头几行就标明了:# Hyperparameters for low-augmentation COCO training from scratch #用于从无到有的低增强COCO训练的超参数,即这个超参数文件只适用于COCO数据集进行训练

5.’–epochs’ 训练几轮 default=300,默认为训练300轮

6.’–batch-size’ 批量大小(一次训练多少张图片)(一次处理的数据量多少) default=16,跑多少的数据打包成一个batch送到网络中,低配电脑建议调小,否则可能会爆显存 建议default=4

7.’–imgsz’ 设置训练时图像的大小(不是把训练的图片的尺寸改为指定的尺寸) default=640

****下面是没有default值的参数******

8.’–rect’ 矩阵训练 以前,对于不是正方形的图片,会自动填充图片边缘使其成为一个正方形图片,现在用矩阵训练,在满足网络模型输入要求的时候,就可以不必填充,原来是一个长方形图片,还是按长方形算,减少不必要的冗余信息,提高处理效率。

9.’–resume’ 从最近的(上一个)训练模型中继续训练(断点续训) default=False 如果要使用,除了启用设置参数,还需要指定上一个训练模型的路径(.pt文件的路径) 将default=False改为default=’权重.pt文件的路径’ 断点续训,这个在epoch(训练次数)太多,训练容易卡死时可设置,这样就可以接着上一次中断的地方继续训练。 例如:上一次训练到第7轮时中断了,则可以设置这个参数,这样就可以从第7轮继续训练。 但需要注意,不是指定了一个.pt文件就可以了,还需要原来训练时的所有相关联的文件。

10.’–nosave’ help=’only save final checkpoint’只保存最后一次训练的权重文件 训练过程中,每一轮都会生成一个.pt权重文件,但训练次数越多,权重文件的精度越好。

11.’–noval’ help=’only validate final epoch’ 仅验证最后一轮 一般是每一轮都会验证。有些版本的这个参数叫’–notest’

12.’–noautoanchor’ help=’disable AutoAnchor’ 禁用自动定位(禁用锚点) 以前检测图像,需要一个一个遍历,有了锚点后,就能快速定位,减少资源占用。所以默认是开启锚点的

13.’–noplots’ help=’save no plot files’不保存打印文件

14.’–evolve’ help=’evolve hyperparameters for x generations’ 调整超参数的一种方式,对参数进行遗传算法

15.’–bucket’ help=’gsutil bucket’

16.’–cache’ 缓存图像 help=’–cache images in “ram” (default) or “disk”‘ 在RAM或DISK(磁盘)中缓存图像,以提供更快的速度 默认关闭状态

17.’–image-weights’ help=’use weighted image selection for training’ 使用加权图像选择进行训练 理解:在上一轮的测试中,对于某些效果不太好的图片,在下一轮测试中加一些权重

18.’–device’ 设备 默认为空,会自动检测使用的设备,比如CPU,cuda等

19.’–multi-scale’ 对图像进行缩放比例变换

20.’–single-cls’ help=’train multi-class data as single-class’训练的数据集是单类别还是多类别 数据集图像中,每一种物体定义为一个类别,例如:人、车、狗、猫……

21.’–optimizer’ help=’optimizer’ 优化器 choices=[‘SGD’, ‘Adam’, ‘AdamW’], default=’SGD’ 官方提供了3种,默认为’SGD’

22.’–sync-bn’ help=’use SyncBatchNorm, only available in DDP mode’ 仅对于那些有很多张显卡的电脑/服务器,可以适用DDP分布式训练

23.’–workers’ help=’max dataloader workers (per RANK in DDP mode)’ 最大数据加载器工人数 对于DDP模式的参数设置

****下面是有default值的参数******24.’–project’ 训练数据集后的输出路径 default=’runs/train’

25.’–name’ 训练结果保存到的文件夹的名称 default=’exp’ 所以每次运行后,保存结果的文件夹都叫’exp…’

****下面是没有default值的参数******26.’–exist-ok’ 对于已存在的文件夹是否覆盖 默认为false,即:如果已存在’–name’参数指定的文件夹’exp’,则创建新的文件夹保存结果,例如’exp2’。 同理,如果’exp2’也存在,就继续增加数字,例如’exp3’,直到不存在同名的文件夹 如果用户设置了这个参数,则表示,始终把检测结果保存到’–name’参数指定的文件夹’exp’中,即使’exp’文件夹存在,里面有文件,也会保存到这里面。

27.’–quad’ help=’quad dataloader’ 四数据加载器 实验性功能,可能效果会更好,但也不确定,有时也更差

28.’–cos-lr’ help=’cosine LR scheduler’ 余弦调度 如果开启,适用余弦方式进行处理(余弦退火算法),如果没有开启则使用线性处理

****下面是有default值的参数******29.’–lable-smoothing’ elp=’Label smoothing epsilon’ 标签平滑 避免在一些分类算法中,一些过拟合的情况产生 default=0.0

30.’–patience’ help=’EarlyStopping patience (epochs without improvement)’ 提前停止训练(每一轮没有变化) default=100

31.’–freeze’ help=’Freeze layers: backbone=10, first3=0 1 2′ 冻结层:主干=10,第一层=0 1 2 default=[0]

32.’–save-preiod’ help=’Save checkpoint every x epochs (disabled if < 1)’ 每x轮保存日志,不过好像要装WandB这个插件(这个插件好像没什么用),装了之后才能设置 default=-1,即禁用,装了插件后启用,则将参数值改为>1的

33.’–seed’ help=’Global training seed’ 全局训练传递 default=0

34.’–local_rank’ help=’Automatic DDP Multi-GPU argument, do not modify’ 自动DDP多GPU参数,请勿修改 default=-1

Original: https://www.cnblogs.com/jhy-ColdMoon/p/17055124.htmlAuthor: 镜花月-冷月Title: Yolov5_v6.2训练数据集进行预测

相关阅读 Title: 【安全框架】快速了解安全框架 【安全框架】快速了解安全框架

🏆 一个有梦有戏的人 @怒放吧德德🌝分享学习心得,欢迎指正,大家一起学习成长!

这篇文章就来说说市面上的安全框架,并没有详细解释。

【安全框架】快速了解安全框架 说说安全框架 什么是安全框架?安全框架又有哪些? Shiro SpringSecurity Sa-Token 说说安全框架 什么是安全框架?安全框架又有哪些?

简单来说就是对访问权限进行控制,主要是用户认证和权限鉴权。在安全框架中有这么几位角色。Shiro:是一个很早的框架,是比较轻量级的安全框架,提供许多功能,上手简单。SpringSecurity:这个安全框架搭建起来就比较重,但是最为流行,现如今基本都是使用SpringSecurity作为安全框架,它提供了非常多的过滤器,也方便扩展。Sa-Token:这个安全框架是比较近期的开源框架,是一个容易上手的轻量级框架,只需要使用注解就可以,内置提供了非常多的方法和注解,也是方便扩展。

Shiro

Yolov5_v6.2训练数据集进行预测官方地址:https://shiro.apache.org/Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。Yolov5_v6.2训练数据集进行预测 Authentication:身份认证 / 登录,验证用户是不是拥有相应的身份; Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; Session Management:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的; Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Web Support:Web 支持,可以非常容易的集成到 Web 环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色 / 权限不必每次去查,这样可以提高效率; Concurrency:shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; Testing:提供测试支持; Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

更多可看Shiro – w3school

SpringSecurity

Yolov5_v6.2训练数据集进行预测

官方地址:https://spring.io/projects/spring-security中文文档:https://docs.gitcode.net/spring/guide/spring-security/overview.html

Spring 安全性是提供认证、授权和防范常见攻击的框架,是spring整合的安全框架。SpringSecurity上手比较难,整个架构比较复杂,但是提供了许多功能。相比其他安全框架而言,是比较重量级。在SpringSecurity中有两大核心功能,就是认证与授权。Spring安全是一个框架,提供身份验证,授权和针对常见攻击的保护。它是保护基于Spring的应用程序的事实标准。SpringSecurity 就是通过一些过滤器、拦截器,实现登陆鉴权的流程的。我们可以通过重写这些过滤器以及一些方法从而达到我们自身想要的效果。SpringSecurity有内置登录界面,首先将maven坐标导入后,访问接口就会需要登录认证,而在没自定义登录界面的时候,SpringSecurity会有自带的登录界面,并且在后端控制台中会显示登录密码,当然也可以通过配置去设置好密码,就不用每次都是随机生成。当然,这样的场景远远不够我们的使用,我们需要自己去扩展完成自己想要的功能。

SpringSecurity通过长长的过滤器链完成认证与鉴权,具体看一下一张图片:

Yolov5_v6.2训练数据集进行预测此图来自 _江南一点雨 文章地址:Spring Security 工作原理概览 写的非常详细 Sa-Token

Yolov5_v6.2训练数据集进行预测官方地址:https://sa-token.dev33.cn/doc/index-backup.html#/Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token是一个近年来出来的开源安全框架,相比 Shiro和 SpringSecurity来说是一个好用又简单的安全框架,只需要少少的配置就能完成 SpringSecurity的相关功能,并且各种继承,方便好用。可以简单看一下 satoken的功能: 登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录 权限认证 —— 权限认证、角色认证、会话二级认证 Session会话 —— 全端共享Session、单端独享Session、自定义Session 踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线 账号封禁 —— 指定天数封禁、永久封禁、设定解封时间 持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失 分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定 OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式 二级认证 —— 在已登录的基础上再次认证,保证安全性 Basic认证 —— 一行代码接入 Http Basic 认证 独立Redis —— 将权限缓存与业务缓存分离 临时Token验证 —— 解决短时间的Token授权问题 模拟他人账号 —— 实时操作任意用户状态数据 临时身份切换 —— 将会话身份临时切换为其它账号 前后台分离 —— APP、小程序等不支持Cookie的终端 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权 花式token生成 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀 注解式鉴权 —— 优雅的将鉴权与业务代码分离 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式 自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签 会话治理 —— 提供方便灵活的会话查询接口 记住我模式 —— 适配[记住我]模式,重启浏览器免验证 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用

看一下satoken的功能结构图

Yolov5_v6.2训练数据集进行预测认证流程与SpringSecurity大同小异Yolov5_v6.2训练数据集进行预测Satoken封装了许多的api,只需要调用api就能够完成认证登录,通过拦截器进行权限验证,对于权限校验也可以使用注解方式,比较方便。权限判断通过实现StpInterface类并注入spring管理,实现其getPermissionList和getRoleList方法就能够得到权限。还有更多功能可以观看官方文档。

👍创作不易,可能有些语言不是很通畅,如有错误请指正,感谢观看!记得点赞哦!👍

今天就只是做个整体简单的分享,后续与大家共同学习!不断地在改变,不断地在学习,只为用心写好文章,奋力学习!

Original: https://www.cnblogs.com/lyd-code/p/16721499.htmlAuthor: 怒放吧德德Title: 【安全框架】快速了解安全框架

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/370049/

转载文章受原作者版权保护。转载请注明原作者出处!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3