人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

目录

人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码

1. 前言

2.人体关键点检测方法

(1)Top-Down(自上而下)方法

(2)Bottom-Up(自下而上)方法:

3.人体关键点检测数据集

4.人体检测模型训练

5.人体关键点检测模型训练

(1)项目安装

(2)准备Train和Test数据

(3)配置文件configs

(4)开始训练

(5)Tensorboard可视化训练过程

6.人体关键点检测检测模型效果

7.人体关键点检测(推理代码)下载

8.人体关键点检测(训练代码)下载

9.人体关键点检测C++/Android版本


1. 前言

人体关键点检测(Human Keypoints Detection)又称为人体姿态估计2D Pose,是计算机视觉中一个相对基础的任务,是人体动作识别、行为分析、人机交互等的前置任务。一般情况下可以将人体关键点检测细分为单人/多人关键点检测、2D/3D关键点检测,同时有算法在完成关键点检测之后还会进行关键点的跟踪,也被称为人体姿态跟踪。

本项目将实现人体关键点检测算法,其中使用YOLOv5模型实现人体检测(Person Detection),使用HRNet,LiteHRNet和Mobilenet-v2模型实现人体关键点检测。项目分为数据集说明,模型训练C++/Android部署等多个章节,本篇是项目《人体关键点检测(人体姿势估计)》系列文章之Pytorch实现人体关键点检测(人体姿势估计);为了方便后续模型工程化和Android平台部署,项目支持高精度HRNet检测模型,轻量化模型LiteHRNet和Mobilenet模型训练和测试,并提供Python/C++/Android多个版本;

轻量化Mobilenet-v2模型在普通Android手机上可以达到实时的检测效果,CPU(4线程)约50ms左右,GPU约30ms左右 ,基本满足业务的性能需求。下表格给出HRNet,以及轻量化模型LiteHRNet和Mobilenet的计算量和参数量,以及其检测精度

模型input-sizeparams(M)GFLOPsAP
HRNet-w32192×25628.48M5734.05M0.7585
LiteHRNet18192×2561.10M182.15M0.6237
Mobilenet-v2192×2562.63M529.25M0.6181

先展示一下人体关键点检测效果:

Android人体关键点检测APP Demo体验(下载):https://download.csdn.net/download/guyuealian/88610359

【尊重原创,转载请注明出处】https://blog.csdn.net/guyuealian/article/details/134837816


更多项目《人体关键点检测(人体姿势估计)》系列文章请参考:

  • 人体关键点检测1:人体姿势估计数据集(含下载链接) https://blog.csdn.net/guyuealian/article/details/134703548
  • 人体关键点检测2:Pytorch实现人体关键点检测(人体姿势估计)含训练代码和数据集 https://blog.csdn.net/guyuealian/article/details/134837816
  • 人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测 https://blog.csdn.net/guyuealian/article/details/134881797
  • 人体关键点检测4:C/C++实现人体关键点检测(人体姿势估计)含源码 可实时检测 https://blog.csdn.net/guyuealian/article/details/134881797
  • 手部关键点检测1:手部关键点(手部姿势估计)数据集(含下载链接)https://blog.csdn.net/guyuealian/article/details/133277630
  • 手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)https://blog.csdn.net/guyuealian/article/details/133279222
  • 手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集https://blog.csdn.net/guyuealian/article/details/133277726
  • 手部关键点检测4:Android实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133931698
  • 手部关键点检测5:C++实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133277748

  


2.人体关键点检测方法

目前主流的人体关键点检测(人体姿势估计)方法主要两种:一种是Top-Down(自上而下)方法,另外一种是Bottom-Up(自下而上)方法;

(1)Top-Down(自上而下)方法

将人体检测和人体关键点检测(人体姿势估计)检测分离,在图像上首先进行人体目标检测,定位人体位置;然后crop每一个人体图像,再估计人体关键点;这类方法往往比较慢,但姿态估计准确度较高。目前主流模型主要有CPN,Hourglass,CPM,Alpha Pose,HRNet等。

(2)Bottom-Up(自下而上)方法:

先估计图像中所有人体关键点,然后在通过Grouping的方法组合成一个一个实例;因此这类方法在测试推断的时候往往更快速,准确度稍低。典型就是COCO2016年人体关键点检测冠军Open Pose。

通常来说,Top-Down具有更高的精度,而Bottom-Up具有更快的速度;就目前调研而言, Top-Down的方法研究较多,精度也比Bottom-Up(自下而上)方法高。本项目采用Top-Down(自上而下)方法,先使用YOLOv5模型实现人体检测,然后再使用HRNet进行人体关键点检测(人体姿势估计);

本项目基于开源的HRNet进行改进,关于HRNet项目请参考GitHub

HRNet: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch


3.人体关键点检测数据集

本项目主要使用COCO数据集和MPII数据集,关于人体关键点检测数据集说明,请参考《人体关键点检测1:人体姿势估计数据集》https://blog.csdn.net/guyuealian/article/details/134703548


4.人体检测模型训练

本项目采用Top-Down(自上而下)方法,使用YOLOv5模型实现人体目标检测,使用HRNet进行人体关键点检测(人体姿势估计);关于人体检测模型训练方法,可参考 :

行人检测(人体检测)2:YOLOv5实现人体检测(含人体检测数据集和训练代码)


5.人体关键点检测模型训练

 整套工程项目基本结构如下:

.
├── configs              # 训练配置文件
├── data                 # 一些数据
├── libs                 # 一些工具库
├── pose                 # 姿态估计模型文件
├── work_space           # 训练输出工作目录
├── demo.py              # 模型推理demo文件
├── README.md            # 项目工程说明文档
├── requirements.txt     # 项目相关依赖包
└── train.py             # 训练文件

(1)项目安装

推荐使用Python3.8或Python3.7,更高版本可能存在版本差异问题,项目依赖python包请参考requirements.txt,使用pip安装即可,项目代码都在Ubuntu系统和Windows系统验证正常运行,请放心使用;若出现异常,大概率是相关依赖包版本没有完全对应

numpy==1.21.6
matplotlib==3.2.2
Pillow==8.4.0
bcolz==1.2.1
easydict==1.9
onnx==1.8.1
onnx-simplifier==0.2.28
onnxoptimizer==0.2.0
onnxruntime==1.6.0
opencv-contrib-python==4.5.2.52
opencv-python==4.5.1.48
pandas==1.1.5
PyYAML==5.3.1
scikit-image==0.17.2
scikit-learn==0.24.0
scipy==1.5.4
seaborn==0.11.2
sklearn==0.0
tensorboard==2.5.0
tensorboardX==2.1
torch==1.7.1+cu110
torchvision==0.8.2+cu110
tqdm==4.55.1
xmltodict==0.12.0
pycocotools==2.0.2
pybaseutils==0.9.4
basetrainer

项目安装教程请参考(初学者入门,麻烦先看完下面教程,配置好Python开发环境):

  • 推荐使用Python3.8或Python3.7,更高版本可能存在版本差异问题
  • 项目开发使用教程和常见问题和解决方法
  • 视频教程:1 手把手教你安装CUDA和cuDNN(1)
  • 视频教程:2 手把手教你安装CUDA和cuDNN(2)
  • 视频教程:3 如何用Anaconda创建pycharm环境
  • 视频教程:4 如何在pycharm中使用Anaconda创建的python环境

(2)准备Train和Test数据

下载COCO数据集或者MPII数据集(建议使用COCO数据集),然后:

  • COCO数据集下载并解压到本地,存储目录结构参考如下(原始图片目录和标注信息文件在同一级目录)
─── COCO├── train2017│   ├── images                           # COCO训练集原始图片目录│   └── person_keypoints_train2017.json  # COCO训练集标注信息文件└── val2017├── images                           # COCO验证集原始图片目录└── person_keypoints_val2017.json    # COCO验证集标注信息文件
  • MPII数据集下载并解压到本地,存储目录结构参考如下
─── MPII├── images      # MPII数据集原始图片目录├── train.json  # MPII训练集标注信息文件└── valid.json  # MPII训练集标注信息文件

(3)配置文件configs

项目支持HRNet以及轻量化模型LiteHRNet和Mobilenet模型训练,并提供对应的配置文件;你需要修改对应配置文件的数据路径;本篇以训练HRNet-w32为例子,其配置文件在configs/coco/hrnet/w32_adam_192_192.yaml,修改该文件的训练数据集路径TRAIN_FILE(支持多个数据集训练)和测试数据集TEST_FILE的数据路径为你本地数据路径,其他参数保持默认即可,如下所示:

WORKERS: 8
PRINT_FREQ: 10
DATASET:DATASET: 'custom_coco'TRAIN_FILE:- 'D:/COCO/train2017/person_keypoints_train2017.json'TEST_FILE: 'D:/COCO/val2017/person_keypoints_val2017.json'FLIP: trueROT_FACTOR: 45SCALE_FACTOR: 0.3SCALE_RATE: 1.25JOINT_IDS: [0,1]FLIP_PAIRS: [ ]SKELETON: [ ]

配置文件的一些参数说明,请参考

参数类型参考值说明
WORKERSint8数据加载处理的进程数
PRINT_FREQint10打印LOG信息的间隔
DATASETstrcustom_coco数据集类型,目前仅支持COCO数据格式
TRAIN_FILEList-训练数据集文件列表(COCO数据格式),支持多个数据集
TEST_FILEstring-测试数据集文件(COCO数据格式),仅支持单个数据集
FLIPboolTrue是否翻转图片进行测试,可提高测试效果
ROT_FACTORfloat45训练数据随机旋转的最大角度,用于数据增强
SCALE_FACTORfloat1.25图像缩放比例因子
SCALE_RATEfloat0.25图像缩放率
JOINT_IDSlist[ ][ ]表示所有关键点,也可以指定需要训练的关键点序号ID
FLIP_PAIRSlist[ ]图像翻转时,关键点不受翻转影响的ID号
SKELETONlist[ ]关键点连接线的序列列表,用于可视化效果

(4)开始训练

修改好配置文件后,就可以开始准备训练了:

  • 训练高精度模型HRNet-w48或者HRNet-w32
# 高精度模型:HRNet-w32
python train.py  -c "configs/coco/hrnet/w48_adam_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
# 高精度模型:HRNet-w48
python train.py  -c "configs/coco/hrnet/w32_adam_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
  • 训练轻量化模型LiteHRNet
# 轻量化模型:LiteHRNet
python train.py  -c "configs/coco/litehrnet/litehrnet18_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"
  • 训练轻量化模型Mobilenetv2
# 轻量化模型:Mobilenet
python train.py  -c "configs/coco/mobilenet/mobilenetv2_192_192.yaml" --workers=8 --batch_size=32 --gpu_id=0 --work_dir="work_space/person"

下表格给出HRNet,以及轻量化模型LiteHRNet和Mobilenet的计算量和参数量,以及其检测精度AP; 高精度检测模型HRNet-w32,AP可以达到0.7585,但其参数量和计算量比较大,不合适在移动端部署;LiteHRNet18和Mobilenet-v2参数量和计算量比较少,合适在移动端部署;虽然LiteHRNet18的理论计算量和参数量比Mobilenet-v2低,但在实际测试中,发现Mobilenet-v2运行速度更快。轻量化Mobilenet-v2模型在普通Android手机上可以达到实时的检测效果,CPU(4线程)约50ms左右,GPU约30ms左右 ,基本满足业务的性能需求

模型input-sizeparams(M)GFLOPsAP
HRNet-w32192×25628.48M5734.05M0.7585
LiteHRNet18192×2561.10M182.15M0.6237
Mobilenet-v2192×2562.63M529.25M0.6181

(5)Tensorboard可视化训练过程

训练过程可视化工具是使用Tensorboard,使用方法,在终端输入:
# 基本方法
tensorboard --logdir=path/to/log/
# 例如
tensorboard --logdir="work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/log"

点击终端TensorBoard打印的链接,即可在浏览器查看训练LOG信息等:


6.人体关键点检测检测模型效果

demo.py文件用于推理和测试模型的效果,填写好配置文件,模型文件以及测试图片即可运行测试了;demo.py命令行参数说明如下:

参数类型参考值说明
-c,--config_filestr-配置文件
-m,--model_filestr-模型文件
targetstr-骨骼点类型,如hand,coco_person,mpii_person
image_dirstrdata/image测试图片的路径
video_filestr,int-测试的视频文件
out_dirstroutput保存结果,为空不保存
thresholdfloat0.3关键点检测置信度
devicestrcuda:0GPU ID

下面以运行HRNet-w32为样例,其他模型修改--config_file或者--model_file即可

  • 测试图片
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --image_dir data/test_images --out_dir output
  • 测试视频文件
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --video_file data/video-test.mp4 --out_dir output
  •  测试摄像头
python demo.py -c work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_17_192_256_custom_coco_20231115_092948_1789/model/best_model_195_0.7585.pth --video_file 0 --out_dir output

项目同时支持MPII数据集格式人体关键点检测

  • 测试图片(MPII格式的人体关键点检测)
python demo.py -c work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/w32_adam_192_192.yaml -m work_space/person/hrnet_w32_16_192_256_mpii_20231127_113836_6644/model/best_model_148_89.4041.pth --image_dir data/test_images --out_dir output --target mpii_person

运行效果(支持单人和多人人体关键点检测):


7.人体关键点检测(推理代码)下载

人体关键点检测推理代码下载地址:Pytorch实现人体关键点检测(人体姿势估计)推理代码

资源内容包含:

  1. 提供YOLOv5人体检测推理代码(不包含训练代码)
  2. 提供人体关键点检测(人体姿势估计)推理代码demo.py(不包含训练代码)
  3. 提供高精度版本HRNet人体关键点检测(人体姿势估计)(不包含训练代码)
  4. 提供轻量化模型LiteHRNet,以及Mobilenet-v2人体关键点检测(人体姿势估计)(不包含训练代码)
  5. 提供训练好的模型:HRNet-w32,LiteHRNet和Mobilenet-v2模型权重文件,配置好环境,可直接运行demo.py
  6. 推理代码demo.py支持图片,视频和摄像头测试

 如果你需要配套的训练数据集和训练代码,请查看下面部分


8.人体关键点检测(训练代码)下载

人体关键点检测训练代码下载地址: 

资源内容包含:

  1. 提供YOLOv5人体检测推理代码
  2. 提供整套完整的项目工程代码,包含人体关键点检测(人体姿势估计)的训练代码train.py和推理测试代码demo.py
  3. 提供高精度版本HRNet人体关键点检测(人体姿势估计)训练和测试代码
  4. 提供轻量化模型LiteHRNet以及Mobilenet-v2人体关键点检测(人体姿势估计)训练和测试代码
  5. 项目代码支持MPII数据集和COCO数据集人体关键点检测模型训练和测试
  6. 根据本篇博文说明,简单配置即可开始训练:train.py
  7. 提供训练好的模型:HRNet-w32,LiteHRNet和Mobilenet-v2模型权重文件,配置好环境,可直接运行demo.py
  8. 推理代码demo.py支持图片,视频和摄像头测试

9.人体关键点检测C++/Android版本

  • 人体关键点检测3:Android实现人体关键点检测(人体姿势估计)含源码 可实时检测 https://blog.csdn.net/guyuealian/article/details/134881797
  • 人体关键点检测4:C/C++实现人体关键点检测(人体姿势估计)含源码 可实时检测 https://blog.csdn.net/guyuealian/article/details/134881797

 Android人体关键点检测APP Demo体验(下载):https://download.csdn.net/download/guyuealian/88610359 

  

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

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

相关文章

听GPT 讲Rust源代码--src/tools(8)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs 在Rust源代码中,rust-analyzer是一个Rust编程语言的语言服务器。它提供了代码补全、代码重构和代码导航等功能来帮助开发者提高编码效率。 在rust-analyzer的代码目…

【改进YOLOv8】杂草识别系统:融合YOLO-MS的MS-Block改进YOLOv8

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义 随着人工智能技术的不断发展,计算机视觉领域的研究也取得了巨大的进展。目标检测是计算机视觉中的一个重要任务,它的应用范围广泛&#x…

安装anaconda

以管理员身份运行 配置环境变量(图中五个都要配置)

Opencv UI自动化应用人脸识别

OpenCV: Open Source Computer Vision Library OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法 OpenCV官网:http://www.opencv.org.cn/ OpenCV 使用 C/C 开发,同时也提供了 Python、Ja…

智能无人零售:革新零售消费体验的未来

智能无人零售:革新零售消费体验的未来 在当今数字化时代,智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展,为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…

【模拟】LeetCode-48. 旋转图像

旋转图像。 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6]…

Citespace、vosviewer、R语言的文献计量学可视化分析

文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体,注重量化的综合性知识体系。特别是,信息可视化技术手段和方法的运用,可直观的展示主题的研究发展历程、研究现状、研究…

2023年【烟花爆竹储存】考试及烟花爆竹储存证考试

题库来源:安全生产模拟考试一点通公众号小程序 烟花爆竹储存考试参考答案及烟花爆竹储存考试试题解析是安全生产模拟考试一点通题库老师及烟花爆竹储存操作证已考过的学员汇总,相对有效帮助烟花爆竹储存证考试学员顺利通过考试。 1、【单选题】B级成品(…

Nginx首页修改及使用Nginx实现端口转发

按照我之前博客给的方法搭建好这样一个CTF靶场 但是呢它默认是在8000端口 如何直接访问IP地址或者域名就可以实现直接访问到靶场呢 我们需要将80端口的内容转发到8000,使用nginx实现端口转发功能 首先我们安装nginx: 安装工具和库 yum -y install gc…

AI 种菜革命:农业科学家们的探索/《流浪地球》导演感受到AI的威胁,《浪球3》也遇灵感洗礼 | 魔法半周报

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件🔥,更新AIGC的最新动态,生成相应的魔法简报,节省阅读时间👻 🔥 资讯预览 AI 种菜革命:农业科学家们的探索 《流浪地球》导演感受到AI的威…

Go语言学习:第1天

一、为什么开始学go语言 我自己是做测试的,所测试项目使用的是go语言。开始学习go语言的原因有两个:一方面,为了更好的做好工作; 另一方面,为了提高自己的核心竞争力。 二、第1天学习到的内容 2.1 Go是怎么解决包依…

托盘四向穿梭车自动化密集库供应|单机智能向系统智能跨越的HEGERLS托盘四向车系统

随着物流产业的迅猛发展,托盘四向穿梭式自动化密集仓储系统可认为是在穿梭车货架系统基础上提出的一种新仓储概念。托盘四向穿梭式立体库因其在流通仓储体系中所具有的高效密集存储功能优势、运作成本优势与系统化智能化管理优势,已发展为仓储物流的主流…

vue的el-table多选对某个选项进行禁用

文档相关链接 el-table多选官方文档 用法 <el-table-column type"selection" width"55" :selectable"selectable"></el-table-column>selectable(row, index) { // row当前列队数据if (row.disabled) { // 判断条件return false; …

仿短视频风格的自适应苹果CMS模板源码

这是一款仿短视频风格的自适应苹果CMS模板源码&#xff0c;设计简洁&#xff0c;适合用于搭建个人视频网站或者短视频分享平台。模板支持响应式布局&#xff0c;演示地 址 runruncode.com/yingshimanhau/19650.html 适配各种屏幕尺寸&#xff0c;功能丰富&#xff0c;用户体验良…

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!

​ 11月&#xff0c;StoneDB 新版本如期而至&#xff0c;这一个月来我们的研发同学加班加点&#xff0c;持续迭代&#xff1a;在 2.2.0 版本中&#xff0c;我们针对用户提出的需求和做出了重量级更新&#xff0c;修复了一些已知和用户反馈的 Bug&#xff0c;同时对部分代码进行…

3 Mycat读写分离实现

1、读写分离介绍 基于Mysql主从复制&#xff0c;我们通过Mycat&#xff0c;能够实现读写分离&#xff0c;即master主服务器实现写操作(insert,update,delete等)&#xff0c;salve从服务器实现读操作(select等)主服务器一旦有写入操作&#xff0c;从服务器通过读取binlog&#x…

c#读取XML文件实现晶圆wafermapping显示demo计算电机坐标控制电机移动

c#读取XML文件实现晶圆wafermapping显示 功能&#xff1a; 1.读取XML文件&#xff0c;显示mapping图 2.在mapping视图图标移动&#xff0c;实时查看bincode,x,y索引与计算的电机坐标 3.通过设置wafer放在平台的位置x,y轴电机编码值&#xff0c;相机在wafer的中心位置&#…

写实3D游戏模型纹理贴图设置

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xff1a; …

kyuubi整合flink yarn session mode

目录 概述配置flink 配置kyuubi 配置kyuubi-defaults.confkyuubi-env.shhive 验证启动kyuubibeeline 连接使用hive catlogsql测试 结束 概述 flink 版本 1.17.1、kyuubi 1.8.0、hive 3.1.3、paimon 0.5 整合过程中&#xff0c;需要注意对应的版本。 注意以上版本 配置 ky…

Python从入门到精通四:Python循环语句

前言 循环普遍存在于日常生活中&#xff0c;同样&#xff0c;在程序中&#xff0c;循环功能也是至关重要的基础功能。 为什么学习循环语句 循环在程序中同判断一样&#xff0c;也是广泛存在的&#xff0c;是非常多功能实现的基础&#xff1a; while循环的基础语法 学习目标&…