目标检测技术学习

news2024/12/21 19:59:17

最近公司做一个目标检测相关的项目,对目标检测以及相关的深度学习知识有一些了解。这里整理一下。

一、目标检测定义

什么是目标检测?最近还碰到一个朋友做的项目,是无人机目标检测的,很有意思(据说还是军事用途),主要是协助雷达能快速的识别出无人机,无人机在可见视野中其实是比较小的,而且数据源是多桢实时信号,要很快的准确的识别出来,实际上有一定难度的。我问了对方,对方使用的方案是YoLoV8,硬件有用到RK的芯片,也有GPU的NVIDA的芯片。

然后公司接了一个工业相机的目标识别项目,涉及到二维码检测的,需要部署到FPGA上,但是,一切还是从应用层的AI模型开始。所以,详细了解了一些知识。具体我们还是从头说起:

1.1:需要解决的问题

就如下图,目标检测一般解决几个问题:图像分类(需要检测哪些图像),目标定位(图像在哪里?),目标检测(确认是什么?)

1.2:涉及的众多应用

目标检测的项目还是挺多的,罗列一些我了解到的项目:

1:输油管道防挖机的检测,如果有挖掘机靠近,会报警/警示  。(这是一个真实的项目,好像还是针对俄罗斯到中国的输油管道的工程)。

2:智能牧场检测是否有牛靠近,如果靠近到一定位置,喷水为牛降温。这也是真实项目,我一个同学正在做的项目,他们提供完整解决方案和产品定制。

3:物流货品智能录入,传送带上的货品检测二维码,识别后入库。这是工业相机的应用,我司正在做的。

4:仓库流水审计。银行需要监管仓库货物检测,明确仓库内的价值。

5:无人售货(货柜检测),新零售。

6:仓库盘点(立体仓库),可以无人盘点。摄像头移动拍摄。识别标签和内容。

7:安全防护检测,安全检测(有没有合规操作)(发短信通知)。

8:内容审核(暴恐)

9:车流统计。驶入,驶出,当前画面的车辆统计。

10:无人车场景

应该还有很大,大类都属于机器视觉领域。

二、目标检测的评估

目标检测如何评估质量,有一些重要的指标,特别是 mAP,很多人并没有搞得很清楚,这里重点说明一下:

2.1: 先了解什么是 IOU

IoU:实际上就是交并比,目标就是IoU最好接近于1。

如果 IoU接近 1,是最好的效果。如果只是为了把物品框住,可以把框框搞得很大,但仍然不会是很好的数据(因为交并集的值不高)。如果是0,那就是完全没有预测正确。

2.2:相关指标

        另外一些重要的衡量指标:首先确定IoU的阀值,比如:我们认为大于0.9是正确。基于这个0.9 我们再来谈下面的指标。

TP:预测正确的物品数(True positive)

        预测是狗,确实是狗。

TN:True negative

        预测是狗,其实不是。

        这个值很奇怪,一般是不用的。意思是固定位置不是目标,我们确实也没把它当成目标,这个不是很好理解,也没啥用处。

FP:错误测试的数量(False positive)

        预测是狗,但实际上并不是狗。

FN:被漏检测的物品数量(False negative)

        有N只狗,没有被检测出来。

Precision(准确率)

        TP / (TP + FP)——  所有检测的物品的正确率

Recall(召回率)

        TP / TP + FN  —— 有多少被正常检测出来了(漏掉了多少)

        很显然,准确率和召回率是很重要的两个指标,但两者是不同的(两者会有矛盾),很多情况下是两个需要均衡的值,你可以使得召回率很高,但代价可能是准确率下降。同理,你可以把准确率做得很高,但召回率可能很低(有一丝错的可能都不检测)。所以,我们需要找到两者的一均衡点,这就要提到AP值 。

AP(均衡精度)(如下图)

注意;一定要基于IOU的值,还要基于类别。两者都有阀值。(类别仍然是根据概率来确定的)

mAP:目标检测的综合指标

从上图也可以看出,两者的关系。所以,我们有一个更合适的评估:

mAP(Mean Average Precision)是衡量目标检测算法性能的一个重要指标。它综合了多个类别的检测精度和召回率,是评估目标检测模型在整个数据集上表现的常用方法。

具体 计算 mAP 的步骤

  1. 计算每个类别的 Precision-Recall 曲线:

    • Precision(精度): 正确检测到的目标数量(True Positives, TP)占所有检测到的目标数量(TP + FP)的比例。
    • Recall(召回率): 正确检测到的目标数量(TP)占所有实际存在的目标数量(TP + FN)的比例。
  2. 计算每个类别的 Average Precision (AP):

    • AP 是 Precision-Recall 曲线下面积的平均值。
    • AP 通常通过在 Recall 变化的不同点取 Precision 值并求平均来计算。
  3. 计算 mAP:

    • 对所有类别的 AP 取平均值。
mAP@0.5

mAP@0.5 是指在 IoU(Intersection over Union)阈值为 0.5 的情况下计算的 mAP。IoU 是衡量预测框与真实框重叠程度的指标,定义为预测框与真实框交集面积除以并集面积。IoU 为 0.5 意味着预测框和真实框的重叠面积至少占并集面积的一半。

mAP@0.5:0.95

mAP@0.5:0.95 是指在 IoU 阈值从 0.5 到 0.95(步长为 0.05)的多种情况下计算的 mAP 的平均值。它考虑了更高的 IoU 阈值,对模型的检测精度要求更高。

    mAP@0.5 更适合初步评估和低精度要求的任务,而 mAP@0.5:0.95 更适合全面评估和高精度要求的任务。

上面指标计算和理解都很简单,但非常重要。

三、目标检测的技术原理:

3.1:技术历史

        说到技术原理,太旧的技术我们就不提了,只提最新的技术,旧的技术线路图,有兴趣的同学可以自行研究,如下图:

3.2:深度学习技术

从2012年开始,使用深度学习完成目标检测。(解决人做特征工程的事情,变成机器自动生成)

通用的技术分类

方法一:One-stage

        以YoLo,SSD,Retina-Net 为主,回归位置和类别做为同一个任务来完成。特点是速度很快,可以做为工业落地使用。Retina-Net 的特点解决样本平衡的,多尺度学习等……

方法二:Two-stage

        RCNN为主,拆成2个阶段,一个是做框(定位),一个是做分类。分别训练2个模型,一阶段找侯选框,二阶段进行分类。AnchBox,FeatureFusion概念。

从下图可以比较不同模型的效果:

        Faster RCNN的精度最高,但速度慢。用在高精度场景

        YoLo的速度不错,精度一般。用在实时的工业场景

两阶段的模型

RCNN模型(两阶段)

第一步:选择锚框——启发式搜索选择(这个启发式搜索很复杂,这里就不详细讲解了,算是一种老式的选择算法)。Selective Search(可以给出选择框)。

第二步:对每个锚框抽取feature,直接通过CNN抽取。存储到硬盘(量太大)

第三步:训练SVM模型(支持向量机,一种监督学习算法实现分类和回归任务),完成分类。

第四步:训练线性回归模型来预测边缘框的偏移。

特点:非常的慢,运算量太大。

Fast RCNN:

        针对RCNN进行增强,不对每个锚框进行特征提取,而是针对整图进行抽取,节省重复区域的抽取任务。训练时使用并行任务方式提供2个loss函数完成分类和边缘定位。

Faster RCCN:

        使用 一个RPN的网络来替换启发式检索。(选出侯选框的方法)

        另外,可以针对不同尺寸进行训练,检测器可适应不同的图。

Mask R-CNN:

        如果有像素级的标号,可以使用FCN来利用这些信息,可提升性能。

单阶段模型

SSD 单发多框检测:

        只做一次预测,单阶段处理。

        

 第一步:针对单个像素生成,不同大小,不同高宽比的多个锚框。上图只是一个分辨率(4*4),正常应该要取很多个分辨率,用于检测不同大小的特体。

直接对锚框进行检测,产生的锚框会非常的多,有大的,小的,会用于检测不同的样式,可以直接预测,不再需要分阶段处理。

SSD很快,但是精度不是很好。原因是:很早的模型,之前不再维护。需要持续维护。SSD的作者不再继续做。对后面的任务有很多启发。这个相对比较简单(相比RCNN)

SSD的实现其实很简单,自已也可以用python来写代码实现,当然,它的精度并不是很好(并且用python速度不行)。

YOLO模型:(只需要看一次)

        把两阶变成了一个也是阶段。单阶段检测。

和RCNN的比较:

三个步骤:

1:变成特定尺寸的图像(进行Resize)。进行固定格子的划分,切成若干格。将图均分为S * S。锚框不重桑。

2:检测某个物体是否有落在某个格子内。格子需要检测出某个物体。

每个格子都有一个值,标明是什么类别?对多个类别的概率值(相加为1)

每个格子还有一个置信度(不同分类的概率)

YOLO重要的输出向量:S * S * (B * 5 + C)

        S:是分拆的格式数

        B:预测多少个框,这个在不同版本有不同的定义,对于Yolo3是3个边框,这里预测多个,应该是为了预测一些小目标。

        5:包括位置(4个)和框框的置信度。

        C:分类的数量。每种分类都有各自的概率值。

3:NMS处理预测结果,主要是要减少重复检测的准确性。

YoLo的精度要高于SSD,实时性远超 RCNN。

YoloV1

缺点:对于靠得很近的物体会有问题。同一类物体如果大小有很大的不同,可能泛化会有问题。很大和很小的物品检测会有问题(召回率有问题)。(不适合货架,新旧物品外形相同大小不同)

优点:检测非常的快(1秒是45张),背景误检率比较低,通用性比较强(不同类型的物品)位置的精准度比较差,会产生漏检。

YoLoV2 

        速度更快,准确率更高。添加了一些小的技巧(具体技巧见下表)

新的网络结构:Darknet-19

        特别注意:引入了锚点(Anchors)概念,提高小目标检测能力。

YoLoV3

        增加了多级预测,多个Detection针对不同大小的检测。可以支持多个分辨率的输入。

        使用Darknet-53卷积神经网络来提取特征,通过调整模型结构和大小,可提升算法精度和速度,网络结构更复杂,对设备要求高。        

        解决了小目标检测的问题。达到工业级高性能的目标检测器。

Yolo 其它

        V3之后,原作者就不做了,后续版本都是非原作者的扩展版本。

        YoloV4:主要是增强边框的预测。引入特征提取器(CSPDarknet53)、数据增强等技术。主要还是应用在监控,自动驾驶的领域。

        YoLoV5:简化了配置和训练的流程。适用于快速配置和部署的任务。性能应该是不如V4的版本。

        YoLoV6:主要是对主干网络和检测头进行了优化。适用于高效率和高准确度的场景。模型更小,推理速度更快,对小型设备的适用性较强。适合于实时推理的场景。我司的FPGA场景选用了这个版本。

        YoLoV7:改进了模型结构,引入了EfficientNet作为新的主干网络。准确度进一步提升,易于部署。但在处理极低分辨率时,存在问题。

        YoLoV8:基于YoloV5的扩展,性能和精准度更高,支持更多的优化技术,如自适应锚框,自定义损失函数等。

       

算法

作者

发布/创建时间

公司/实验室

YOLOv1

Joseph Redmon

2016.05.09

华盛顿大学艾伦研究所Facebook实验室

YOLOv2

Joseph Redmon

2015.12.25

华盛顿大学艾伦研究所

YOLOv3

Joseph Redmon

2018.04.08

华盛顿大学

YOLOv4

Alexey Bochkovskiy Chien-Yao Wang

2020.04.23

中国台湾中央信息研究所

ScaledYOLOv4

Chien-Yao Wang Alexey Bochkovskiy

2021.06

中国台湾中央信息研究所

YOLOv5

Glenn Jocher

2020.06.26

Ultralytic公司

YOLOX

Zheng Ge

2021.08.18

旷视科技

YOLOR

Chien-Yao Wang

2021.10.03

中国台湾中央信息研究所

YOLOv6

Chui Li

2022.06.23

美团

YOLOv7

Chien-Yao Wang

2022.07.07

中国台湾中央信息研究所

YOLOv8

Glenn Jocher

2023

Ultralytic公司

RetinaNet 模型:

       适合于密集排列的场景(比如:货架物品的检测)

        出现了RCNN和Yolo之后的改进方案。哪些场景可能会有问题:

1:正负样本不平衡。对于RCNN的负样本较多(侯选框太多)。对于YoLo的侯选框也是非常的多。

        新的损失函数:Focal Loss  

        

        这个比R-CNN中抽样的方式更好。

2:解决类别不平衡的问题。

        结合1的处理,形成上述的 Focal Loss

RetinaNet的性能比较:

网络结构:

四、目标检测模型效果影响:

五、数据标注

        可以使用开源的工具来手工标注。这对于小规模的训练数据准备是够了。

        如:LabelImg 

        安装方法:pip install labelImg

六、数据增强

        对于数据,肯定会存在不够的情况,所以,我们必须要对已有数据做增强,常见的增强方法有:

图像翻转:

        

图像切割:(随机高宽比,随机大小,随机位置)

改变颜色:明亮度,色调

可以使用PhotoShop的一些功能,做更多的处理(当然,要结合实际的场景)

以上图像增广的代码,都是比图简单的,可以使用Pytorch来简单完成。

七:常用数据集

Pascal VOC:

Coco数据集:

对于复杂图像比较好用。主要指标是 AP值

ImageNet LSVRC

有一些训练好的模型,可以基于已有模型做迁移学习。

八:目标检测模型在FPGA上部署

对于AI模型在FPGA上部署,实际上是可行的。无非是在算力和空间上需要支持,还有就是FPGA不建议浮点运算,需要转成INT8定点运行。

第一步:模型选型

对于YOLO的模型,有针对受限设备的,比如:YoLoV6-lite S

YoloV6目前在Coco 2017 val的第一名:

对于YoLoV8,准确度会更高,基于单分类的数据如下(因为我们的项目只需要针对二维码进行定位):

P

R

mAP50

mAP50-95

Inference time

Para

Size

YOLOv8n

0.99

0.995

0.994

0.974

2.0ms

3.2M

6.0MB

YOLOv6Lite-S

0.94

0.963

0.987

0.948

1.4ms

0.55M

1.5MB

YOlOv5s

0.894

0.865

0.927

0.8

2.2ms

7.2M

14.3MB

综合以上情况,我们选用YoLoV6 Lite-S作为原始模型。

第二步:模型量化

        采用PTQ方式,对YoLov6Lite-S的模型进行量化。

CUDA_VISIBLE_DEVICES=0 python tools/train.py \
       --data ./data/coco.yaml \
       --output-dir ./runs/opt_train_v6s_ptq \
       --conf configs/repopt/yolov6s_opt_qat.py \
       --quant \
       --calib \
       --batch 32 \
       --workers 0

        如何使用 QAT的实现方式。

CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 python -m torch.distributed.launch --nproc_per_node=8 \
       tools/train.py \
       --data ./data/coco.yaml \
       --output-dir ./runs/opt_train_v6s_qat  \
       --conf configs/repopt/yolov6s_opt_qat.py \
       --quant \
       --distill \
       --distill_feat \
       --batch 128 \
       --epochs 10 \
       --workers 32 \
       --teacher_model_path ./assets/yolov6s_v2_reopt_43.1.pt \
       --device 0,1,2,3,4,5,6,7

 下面是官方的数据(我司的数据就不贴了)

ModelSizePrecisionmAPval
0.5:0.95
SpeedT4
trt b1
(fps)
SpeedT4
trt b32
(fps)
[YOLOv6-S RepOpt]640INT843.3619924
[YOLOv6-S]640FP1643.4377541
[YOLOv6-T RepOpt]640INT839.87411167
[YOLOv6-T]640FP1640.3449659
[YOLOv6-N RepOpt]640INT834.811141828
[YOLOv6-N]640FP1635.9802

1234

在量化时,如果版本不对,需要先变成RepOpt版本。

第三步:模型剪枝

        通过结构化剪枝,结构化剪枝的标准方法。(非结构化剪枝的收益不大)

        具体的结构化剪枝的方法,没有规律,此处略(后面有时间单独讨论)。主要是参考了开源项目YoloV8-pruning的实现。

       

第四步:FPGA算子实现

        标准算子实现:conv,concat,mul,slice,softmax等的实现

        对于FPGA中工作流的控制以及算子实现,如何利用DSP,BRAM,DDR,在这里就不细讲,后面可以单独总结。这个并不难,主要是工作量。

其它:重要工具使用

ONNX转换:

python3 qat_export.py --weights yolov6s_v2_reopt_43.1.pt --quant-weights yolov6s_v2_reopt_qat_43.0.pt --graph-opt --export-batch-size 1

使用netron工具:

        使用工具,直接打开ONNX格式的模型文件即可。

使用 TensorRT工具:(build TRT engine)

trtexec --workspace=1024 --percentile=99 --streams=1 --int8 --fp16 --avgRuns=10 --onnx=yolov6s_v2_reopt_qat_43.0_bs1.sim.onnx --calib=yolov6s_v2_reopt_qat_43.0_remove_qdq_bs1_calibration_addscale.cache --saveEngine=yolov6s_v2_reopt_qat_43.0_bs1.sim.trt

使用TrnsorRT可以查看推理阶段的主要性能损耗。

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

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

相关文章

SpringBoot的冬奥会科普平台 LW +PPT+源码

3 平台分析 3.1 平台可行性分析 3.1.1 经济可行性 由于本平台是作为毕业设计平台,且平台本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该平台的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工…

python离线安装第三方库、及其依赖库(单个安装,非批量移植)

文章目录 1.外网下载第三方库、依赖库2.内网安装第三方库3.补充附录内网中离线安装python第三方库,这时候只能去外网手动下载第三方库,再传回内网进行安装。 问题是python第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…

谷歌个人号14天封闭测试,又添新要求?怎么提高封测通过率?

相信不少在Google Play上架应用的开发者们,对谷歌个人号的20人连续14天的封闭测试感到头疼。谷歌对个人号提出周期长达14天的封测要求,主要是希望开发者们能上架质量更好、体验感更好的app到谷歌商店。 而随着谷歌行业的发展,这项政策要求的执…

双网卡设置路由网络不通原因之一:静态ip设置失败

1.主要现象: 外网通,内网不通 外网IP设置 内网IP设置 路由表设置 内网不通 2.主要原因:在适配器中设置的内网静态IP没有成功 设置静态IP失败 在命令行使用ipconfig命令看到内网适配器的静态IP为192.168.0.55,并不是我们设置的1…

密码学及其应用——GMP库在密码学中的应用

GMP(GNU Multiple Precision arithmetic library,GNU多精度算术库)是一个针对大整数运算的库。这个库提供了许多针对多种多精度类型的计算函数: - 大整数:Z - 大有理数:Q - 大浮点数:R 1. 密码学…

Unity URP简单烘焙场景步骤

Unity URP简单烘焙场景步骤 前言项目场景布置灯光模型Lighting设置环境设置烘焙前烘焙后增加角色 前言 项目中要烘焙一个3D场景,用的URP渲染管线,简单记录一下。 项目 场景布置 灯光 因为场景中有能动的东西,需要一部分实时光照&#xf…

vuejs3+elementPlus后台管理系统,左侧菜单栏制作,跳转、默认激活菜单

默认激活菜单,效果&#xff1a; 默认激活菜单&#xff0c;效果1&#xff1a; 默认激活菜单&#xff0c;效果2&#xff1a; 跳转链接效果&#xff1a; 制作&#xff1a; <script setup> import {useUserStore} from "/stores/userStore.js"; import {ref} fr…

FKA总结

问题点&#xff1a; 原因分析: 工作状态下进入充电模式&#xff0c;程序检测到的电压会降低&#xff0c;比如8.07V的电池电压&#xff0c;它处于充满的临界状态&#xff0c;开机情况下程序检测的电压会降到7.98V&#xff0c;然后进入充电模式显示红灯 关机状态下进入充电模式…

volatile关键字(juc编程)

volatile关键字 3.1 看程序说结果 分析如下程序&#xff0c;说出在控制台的输出结果。 Thread的子类 public class VolatileThread extends Thread {// 定义成员变量private boolean flag false ;public boolean isFlag() { return flag;}Overridepublic void run() {// 线…

数据结构与算法3---栈与队

一、栈 1、顺序栈 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> //开辟空间#define MAXSIZE 50//顺序栈的基本算法 typedef struct {int stack[MAXSIZE];int top; }SqStack;//初始化 void InitStack(SqStack* S) {S->top …

[BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

JEnv-for-Windows 详细使用

管理员执行jenv.bat文件 执行正常, 接下来就是按照官网的命令就行了 文件下载地址 https://download.csdn.net/download/qq_43071699/89462664 JEnv 是一个强大的Java版本管理工具&#xff0c;允许开发者在多个Java版本之间轻松切换。以下是一些常用的JEnv命令&#xff0c;这…

【网络安全产品】---网闸

了解了不少安全产品&#xff0c;但是对网闸的理解一直比较模糊&#xff0c;今天 what 网闸是安全隔离与信息交换系统的简称&#xff0c;使得在不影响数据正常通信的前提下&#xff0c;让络在不连通的情况下数据的安全交换和资源共享&#xff0c;对不同安全域/网络之间实现真正…

vue项目——前端CryptoJS加密、解密

1、vue项目需要安装CryptoJS安装包 npm install crypto-js 2、在项目中引入CryptoJS import CryptoJS from crypto-js 3、使用&#xff0c;代码如下 // 此处key为16进制let key jiajiajiajiajiajiajiajia;console.log(密钥&#xff1a;, key);// key格式化处理key Crypt…

web中间件漏洞-weblogic漏洞-弱口令war包上传

web中间件漏洞-weblogic漏洞-弱口令war包上传 弱口令war包上传 制作war包 jar cvf ma.war.(最后的.代表打包当前目录) 弱口令weblogic/weblogic123 点击部署后、一直点击下一步 访问webshell

网络基础篇:网络模型

目录 一、初识网络 二、网络的分层 OSI七层模型 TCP/IP四层模型 网络与系统的关系 网络传输基本流程 数据包封装和分用 三、IP地址与MAC地址 认识IP地址 认识MAC地址 IP与MAC的关系 一、初识网络 同一台设备上的进程间通信有很多种方式 &#xff1a; 管道&#xff08…

Java基础 - 练习(四)打印九九乘法表

Java基础练习 打印九九乘法表&#xff0c;先上代码&#xff1a; public static void multiplicationTable() {for (int i 1; i < 9; i) {for (int j 1; j < i; j) {// \t 跳到下一个TAB位置System.out.print(j "" i "" i * j "\t"…

【CPP】选择排序:冒泡排序、快速排序

目录 1.冒泡排序简介代码分析 2.快速排序2.1霍尔版本简介代码分析 2.2挖坑版本2.3前后指针版本2.4非递归的快排思路代码 什么是交换排序&#xff1f; 基本思想&#xff1a;所谓 交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0…

Python基础教程(二十六):对接MongoDB

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

maxKb+ollama+lama2-chinese 基于知识库+本地模型的知识问答系统

maxKbollamalama2-chinese 基于知识库本地模型的知识问答系统 搭建步骤 搭建maxKb docker run -d --namemaxkb -p 8080:8080 -v ~/.maxkb:/var/lib/postgresql/data cr2.fit2cloud.com/1panel/maxkb# 用户名: admin # 密码: MaxKB123..github的访问地址&#xff1a;https://…