AI视界引擎 | ​基于 YOLOv8 和计算机视觉 CV 的实时识别系统!

news2024/12/23 4:38:07

本文来源公众号“AI视界引擎”,仅用于学术分享,侵权删,干货满满。

原文链接:​基于 YOLOv8 和计算机视觉 CV 的实时识别系统!

技术进步和创新正在尽可能地推进作者的日常生活,但仍有很大一部分社会群体因为身体障碍而无法享受到这些好处。为了真正收获利益,并让更广泛的社会群体能够无障碍地使用这些创新,这些具有特殊才能和天赋的人们也应该在没有障碍的情况下使用这些创新。

如今开发的许多应用程序都在解决这些挑战,但本地社区和其他受限制的语言群体可能发现使用它们存在困难。马拉雅拉姆语是一种在印度喀拉拉邦使用的达罗毗荼语系语言,是印度官方认定的二十二种语言之一。近年来,针对喀拉拉邦的需求,马拉雅拉姆语系统的开发和应用工具激增,但其中许多并没有以同理心设计来满足听障人士的需求。

主要的挑战之一是马拉雅拉姆语手语数据的有限或无法获取,且在这方面没有付出足够的努力。为此,本文提出了一种利用先进的深度学习和计算机视觉技术对马拉雅拉姆语手语进行识别的方法。

作者从开发一个标记的马拉雅拉姆字母数据集开始,并使用先进的深度学习技术如YOLOv8和计算机视觉进行识别。实验结果表明,该识别准确度与其他手语识别系统相当,其他在手语识别领域的研究行人可以将该模型作为开发更先进模型的 Baseline 。

1 Introduction

在当今技术创新的背景下,各领域的进步已经改变了人类的存在方式,从教育(Abulibdeh等人,2024年)和医疗保健(Younis等人,2024年)到娱乐(Takale等人,2024年)和通信(Gholami和Al Abdwani,2024年)。尽管这些变革性的进步已经发生,但某些社区仍然面临阻碍他们获得基本特权的障碍。

通信是人类互动的重要方面,对于听障或言语障碍的人来说,手语是表达思想和观点的至关重要方式(Almufareh等人,2024年)。

直到最近,喀拉拉邦的手语使用者还面临着依靠更广泛的手语,如印度手语(ISL)、美国手语(ASL)或其他地区性手语进行有效沟通的挑战(Renjith和Manazhy,2024年;Priya和Sandesh,2024年)。缺乏一种专门针对喀拉拉邦的语言和文化细微差别而设计的手语,这对该地区聋人社区的顺畅沟通构成了障碍。

位于特里凡得琅的国家语音听力研究所(NISH)1,一直致力于言语语言和听力障碍人士的教育和康复工作,于2021年9月推出了马来亚拉姆手语(MSL),这是包容性和可及性的一大进步。这个项目旨在通过部署一个复杂的手语识别模型,为喀拉拉邦的听障和听力受损社区赋权。

本研究的主要目标是开发一个健壮的人工智能模型,能够从实时视频中识别特定于马来亚拉姆手语的静态手势。通过利用计算机视觉的高级功能,该模型生成相应的字幕,为听力和言语障碍社区内的个体提供增强的沟通手段。马来亚拉姆手语于2021年9月在喀拉拉邦推出,为听障或言语障碍人士带来了欣慰的改善。Issac等人(2023年)对此进行了详细阐述,并介绍了一个使用TensorFlow进行迁移学习的实时手语识别系统。

它使用网络摄像头检测并解释MSL中的马来亚拉姆字符,旨在改善言语障碍人士的沟通。Praneel等人(2023年)也讨论了同样的问题,提出了一个使用修改后的Inception V4模型的手势识别系统,以准确识别MSL通信中的九个马来亚拉姆字符。该系统的性能超越了其他最先进的方法,达到了17.7%的Top-1错误率和3.8%的Top-5错误率。Salim等人(2023年)也使用迁移学习来解释MSL中的字符。他们提出的方法使用ResNet50对静态手语字母图像进行分类,训练准确率达到97%。

62%,验证准确率为92.35%。YOLO是一种最先进的目标检测算法,因其实时处理能力而受到欢迎,能够在单次传递中准确地识别和定位图像或视频内的多个目标(Redmon等人,2016年)。YOLOv8是这个模型系列中的最新款,与早期版本相比,其准确度、速度和多功能性都有所提升。Tyagi等人(2023年)探讨了将这些模型应用于检测美国手语(ASL)手势。它比较了不同的YOLO版本,强调YOLOv8在精确度和平均精度(mAP)方面的优势。该模型在美式手语字母数据集上进行训练和测试,实现了95%的精确度,97%的召回率,以及96%的mAP@0.5。Jia和Li提出了一种增强的SLR-YOLO网络,用于高效的手语识别。

针对传统方法的挑战,该模型在YOLOv8的基础上进行改进,如用RFB模块替换SPPF模块以增强特征提取,并引入BiFPN和Ghost模块以改善特征融合并减少网络权重。通过在训练过程中采用Cutout方法增强数据泛化能力,从而在验证集上提高了准确性:美式手语字母的准确度为90.6%,孟加拉手语字母的准确度为98.5%,超过了原版YOLOv8的表现。

改进后的模型实现了1.3%的准确度提升,11.31%的参数减少和11.58%的FLOPs降低。Vidhyasagar等人(2023年)关注手语识别研究的快速增长。

使用Roboflow数据集和YOLOv8的迁移学习,研究提出了一种在实时会议或视频会议中进行ASL手势(A到Z)实时转录的系统。该模型通过从输入视频帧中提取关键组成部分,并基于神经网络比较进行手势分类,实现了有效的沟通。本文提出了一种识别视频中的马来语手语字符并易于解释的模型。本文的主要贡献总结如下:

  • 讨论了手语识别对听力障碍人士的相关性。

  • 回顾了一些最先进的手语识别方法。

  • 提出了一种使用YOLOv8和计算机视觉技术进行马来语手语识别的方法。

  • 实验验证了所提出的系统,展示了其在开发包容性人工智能应用程序中的实用性。

2 Materials and Methods

以下是“材料与方法”部分的开始部分。

2.1 Roboflow

Roboflow,可在https://roobflow.com/访问,是一个计算机视觉平台,通过提供改进的数据收集、预处理和模型训练方法,使用户能够高效地构建模型。对于希望简化和改进预处理和数据处理繁琐过程的计算机视觉研究者和开发者来说,这是一个极其有用的工具。管理和准备机器学习模型的数据集是一项具有挑战性的任务,这正是Roboflow的基本宗旨。

易于与知名的计算机视觉框架如TensorFlow、PyTorch和YOLO集成,是它的一个突出特点。通过让用户可以选择使用各种模型架构和框架,这种集成促进了在快速发展的计算机视觉领域中创新和适应性的提升。数据增强和预处理是提高数据集质量和多样性的关键过程,这直接影响机器学习模型的性能。

Roboflow在这些领域表现出色,提供了一系列丰富的增强策略来丰富数据集。

该平台的用户友好界面使用户能够轻松应用变换、调整图片大小和其他预处理程序,在数据准备工作流程中节省了宝贵的时间。Roboflow在复杂的计算机视觉领域中效率的典范。由于其集成能力、数据集管理工具以及对通过增强和预处理提高数据质量的承诺,它是学术界和开发者的首选。随着技术的发展和机器学习应用的日益复杂,Roboflow继续作为一个可靠的伙伴,使用户能够自信且轻松地处理数据准备工作的复杂性。

2.2 Ultralytics

Ultralytics,可在https://www.ultralytics.com/获取,是一个适用于计算机视觉的多功能工具箱,与PyTorch和TensorFlow等流行框架兼容。它通过用户友好的界面简化了模型开发和训练,并支持各种模型架构以满足不同项目需求。Ultralytics YOLOv8(https://www.ultralytics.com/yolo),一个高级目标检测模型,是该工具箱中的关键组成部分,以其实时效率和高度准确性而闻名。与Ultralytics生态系统无缝集成,YOLOv8因其多功能性而脱颖而出,适应于自动驾驶、监控和工业自动化等领域的多样化目标检测任务。该模型具有增强型架构,融入了CSPDarknet53主干网和PANet等元素以改进特征提取,从而提高了准确性和鲁棒性。得益于Ultralytics工具箱中的优化技术,YOLOv8采用混合精度训练和分布式训练,即使在大量数据集上也能加快训练收敛和高效资源利用。其在现实世界应用中的成功证明了在各个领域检测目标的效力。YOLOv8保持了用户友好的界面,符合Ultralytics对简洁性的承诺,同时没有牺牲在复杂计算机视觉任务中模型的深度。该模型与Ultralytics社区的积极参与确保了持续改进,体现了其韧性和用户友好的特点。总之,Ultralytics YOLOv8在目标检测模型方面迈出了重要的一步,为研究行人和开发行人提供了一个强大的工具,以应对多样化和具有挑战性的现实世界场景。

2.3 YOLOv8

YOLOv8是一种基于深度学习和计算机视觉前沿进展的实时目标检测和图像分割模型,提供卓越的速度和准确性。其简化的架构适用于广泛的应用,并且易于扩展到各种硬件平台,从边缘设备到云API。

以下是其关键组件的分解:

  • 修改后的CSPDarknet53:YOLOv8的核心在于其主干网络,即修改版的CSPDarknet53架构。这个网络包含53个卷积层,这些层经过精心选择和优化,以平衡性能和内存占用。

  • 跨阶段部分连接(CSP):这种创新技术减少了冗余计算,同时保持了网络中的信息流。

  • SPPF和新型CSP-PAN:这一部分连接了主干网络和 Head ,进一步丰富了空间特征并增强了特征传播。

  • 预测边界框和类别概率:在 Neck 之后,附加的卷积层和全连接层处理信息,并预测检测到的物体的边界框、目标性和类别概率。

YOLOv8使用 Anchor-Free 点模型和分离 Head 独立处理目标性、分类和回归任务。这种设计让每个分支能够专注于自己的任务,并提高了模型的整体准确性。在YOLOv8输出层,使用了sigmoid函数作为目标性得分的激活函数,表示边界框包含物体的概率。

它使用softmax函数来表示属于每个可能类别的物品的概率。YOLOv8使用CIoU[68]和DFL[108]损失函数进行边界框损失,以及用于分类损失的二元交叉熵。这些损失提高了目标检测性能,特别是在小物体方面。与典型的YOLO Neck 架构不同,主干网络是一个CSPDarknet53特征提取器,后面跟着一个C2f模块。在C2f模块之后是两个分割 Head ,它们学习预测输入图像的语义分割 Mask 。该模型具有与YOLOv8类似的检测 Head ,包括五个检测模块和一个预测层。YOLOv8-Seg模型在各种目标识别和语义分割基准测试中实现了尖端性能,同时保持了快速和高效。

2.4 Dataset

该数据集包含了从视频帧中提取的图像,捕捉了20个不同手势的马来语手语静态标志。这些视频以每秒60帧的速度转换成帧,每个手势产生了100张照片。在预处理阶段,对图像进行了调整大小,引入了5%的噪声,并在数据增强过程中应用了十度的旋转范围。预处理后,数据集包含了5900个数据点,包括正向和负向旋转,增强了数据集的多样性和鲁棒性,以便有效训练模型。作者使用Roboflow进行标注过程,将数据格式化为YOLO格式

3 Proposed Methodology

本节详细介绍了作者提出的方法,该方法使用卷积神经网络和YOLOv8来自动检测车辆并识别车牌。所提出方法的总体工作流程如图4所示。

为了保持更好的准确性,作者为项目开发了一个特定的数据集。通过以60 fps和4k分辨率录制视频,从20个不同的人那里收集了20个手势。每个手势大约包含300帧,整个数据集由5900个数据点组成。在预处理阶段,将图像调整为432 x 256像素,以减小数据集的大小,从而使得计算更加容易。数据增强是深度学习中使用的一种技术,用于提高训练模型所使用的数据质量。它通过对现有数据样本添加小变化来实现这一点。

这有助于防止模型过拟合并提高模型准确性。作者使用了两种增强技术:噪声——向手势图像添加随机噪声,以及旋转——将图像向右或向左旋转一个指定角度。

通过利用来自YOLOV8模型的预训练权重,它实现了迁移学习,加速了模型收敛并提高了泛化能力。这种初始化帮助YOLOv8模型掌握常见模式,减少了对大量训练迭代的需求。

特别是在YOLOv8架构中,加载预训练权重允许模型利用更广泛的目标检测任务的洞察,从而提高了它在特定图像中识别和识别物体的能力。

预初始化权重提供了一个强有力的起点,与随机初始化相比,显著减少了训练时间。继承的知识通常会导致新模型具有更高的准确性,因为它利用了已经发现的特征和关系。

新模型继承了预训练模型对在自身训练过程中未遇到的新数据的泛化能力。这导致了在多种任务和情境下的性能提升。现在,使用YOLOv8格式的增强数据集用预训练的YOLOv8模型进行训练。稍后启动的训练过程调整了周期并评估了模型性能。

4 Experiments

这个项目是在一台配备了Intel Core i5处理器的系统上运行的Windows 11系统完成的。代码在支持GPU的Google Colab中执行。最初,作者如第2节所述,从20个不同的人那里收集了近2000张20种不同手势的图像。随后,作者将图像大小调整为432x256像素。下一步涉及数据增强。

4.1 Data Augmentation

在训练数据集通过添加小扰动转换为新的合成数据样本的过程中,称为数据增强。这通过应用噪声注入和旋转来实现。这样做是为了使模型对那些扰动不变,并提高其泛化能力。在这个数据集中,作者对数据集添加了5%的噪声以及正负10度的旋转(参见第??节)。

4.2 Load and build Ultralytics YOLOv8 model

Ultralytics YOLOv8是一个开源的深度学习框架,专为目标检测和更复杂的任务设计。基于YOLO架构,Ultralytics的YOLOv8以其在实时目标检测中的效率和速度而闻名。它融合了模型架构、训练策略和部署选项的进步,使其成为计算机视觉应用中的热门选择。该框架使用PyTorch实现,并提供用户友好的界面,使研究行人和开发行人能够轻松地训练和部署具有高准确性和性能的目标检测模型。

最初,作者加载了一个预训练的YOLOv8模型。随后,作者将自定义数据集输入到预训练模型中,开始了YOLOv8目标检测模型的训练过程。'model'目标,假定为YOLOv8的一个实例,通过'train'方法被调用。'data'参数指向一个YAML文件,可能包含数据集配置详情,如文件路径和类别标签。

训练被设置为运行100个周期,使用10个周期的耐心值实现早停。详细设置表明了训练进度的详细信息,包括损失值和指标。'best.pt'文件夹是YOLO自动生成的,其中存储的权重位于'runs/train/weights'路径下。最佳权重以'best.pt'的名字保存。'best.pt'预训练权重是根据在验证集上达到的预定义指标(如准确度或损失)来选择的。通过选择这个预训练权重进行部署,代码确保在生产中使用的模型是效果最好的版本,这是由其在未见数据上的表现决定的。

5 Results and Discussions

图5展示了使用YOLOv8在验证数据上对20个类别/标志进行分类的混淆矩阵。

预测类别在垂直轴上,而真实情况沿水平轴。可以观察到,除了“va”类别的值为0.97外,大多数类别都被YOLOv8正确分类。在热力图中,从左上角到右下角的对角线单元格代表正确的预测。

这些单元格颜色越深,模型表现越好。显然,混淆矩阵的所有对角线单元格都比其他单元格颜色深,这意味着模型表现良好且预测准确。

最初,在第一个时期,训练损失相对较低。这是因为模型尚未在数据中学习到任何模式。随着训练的进行(从第2个时期到第8个时期),训练损失迅速增加,从第9个时期开始减少。这表明模型正在改善其对训练数据的拟合,并且在其中识别模式的熟练度在提高。

同样,验证损失在第1个时期也是从较低的值开始,因为模型尚未接触到验证数据。然而,随着训练的继续(从第2个时期到第8个时期),验证损失最初增加,然后从那里开始减少。这是一个积极的迹象,表明模型对未见数据的泛化效果很好。同时,平滑的下降趋势线表明模型正在学习和改进。

这意味着其预测与真实情况之间的误差随时间减少。平均精度(mAP)是用于评估目标检测模型的指标。它权衡了精确度和召回率,同时考虑了假阳性和假阴性。这一特性使得mAP成为大多数检测应用中合适的指标。如图**??**所示,在整个训练过程中,尽管偶尔有波动,mAP仍有明显且一致的上升。

该模型达到了大约83.9%的mAP值。

图7显示了验证数据中标志的相应标签,由边界框表示,而图8则展示了正确预测标志的概率。大多数概率在0.8到0.9的范围内,这表明模型的准确度很高。

6 Conclusions and Future Work

本研究旨在构建一个先进的马拉雅拉姆手语识别系统,旨在有效地检测静态手势。该系统不仅仅将这些手势翻译成字幕,而且还实现了实时操作,利用计算机视觉和深度学习的力量达到了令人满意的准确度。在未来范围方面,计划的扩展工作包括增强系统的功能,以涵盖动态手势。

该模型的潜在应用广泛且影响深远。除了其直接实用性之外,该系统可以集成到紧急响应系统中,为在关键时刻提供重要的通讯工具。此外,在视频通话中的实施可以促进包容性沟通,为听力受损者消除障碍。

该模型的适应性也延伸到教育环境,为使用马拉雅拉姆手语的群体提供一个包容的学习环境。此外,它还可能在开发针对马拉雅拉姆手语社区独特沟通需求创新技术方面发挥关键作用。

7 参考

[1].Malayalam Sign Language Identification using Finetuned YOLOv8 and Computer Vision Techniques.

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

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

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

相关文章

OverTheWire Bandit 靶场通关解析(中)

介绍 OverTheWire Bandit 是一个针对初学者设计的网络安全挑战平台,旨在帮助用户掌握基本的命令行操作和网络安全技能。Bandit 游戏包含一系列的关卡,每个关卡都需要解决特定的任务来获取进入下一关的凭证。通过逐步挑战更复杂的问题,用户可…

poi-tl 生成 word 文件(插入文字、图片、表格、图表)

文章说明 本篇文章主要通过代码案例的方式,展示 poi-tl 生成 docx 文件的一些常用操作,主要涵盖以下内容 : 插入文本字符(含样式、超链接)插入图片插入表格引入标签(通过可选文字的方式,这种方…

昇思MindSpore学习笔记3--张量 Tensor

一、张量Tensor概念 矢量、标量和其他张量的计算函数,有内积、外积、线性映射以及笛卡儿积等 张量坐标在 n 维空间内,有 nr 个分量 每个分量都是坐标的函数,变换时每个坐标分量都按规则作线性变换 张量是一种特殊的数据结构,类似于数组和…

haproxy实现代理和负载均衡

HaProxy介绍: haproxy是法国开发者威利塔罗在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计&…

狼人杀系列

目录 杀人游戏(天黑请闭眼) (1)入门版 (2)标准版 (3)延伸版——百度百科 (3.1)引入医生和秘密警察 (3.2)引入狙击手、森林老人和…

学习gateway网关路由时遇到的问题

遇到这个问题先别慌,我们首先要检查是哪里出问题了,从报错信息中我们可以看到,他说 Unable to find GatewayFilterFactory with name -AddRequestHeader 找不到这个路由过滤器,所以导致网关设置失败,从这条信息上我…

Mac可以读取NTFS吗 Mac NTFS软件哪个好 mac ntfs读写工具免费

在跨操作系统环境下使用外部存储设备时,特别是当Windows系统的U盘被连接到Mac电脑时,常常会遇到文件系统兼容性的问题。由于Mac OS原生并不完全支持对NTFS格式磁盘的读写操作,导致用户无法直接在Mac上向NTFS格式的U盘或硬盘写入数据。下面我们…

web学习笔记(六十九)vue2

目录 1. vue2创建脚手架项目 2.vue2如何关闭eslint 1. vue2创建脚手架项目 (1)在cmd窗口输入npm install -g vue/cli命令行,快速搭建脚手架。 (2) 创建vue2项目 (3) 选择配置项目&#xff0c…

ic基础|功耗篇04:门级低功耗技术

大家好,我是数字小熊饼干,一个练习时长两年半的IC打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是…

pdf合并,pdf合并成一个pdf,pdf合并在线网页版

在处理pdf文件的过程中,有时我们需要将多个pdf文件合并成一个pdf文件。作为一名有着丰富计算机应用经验的技术博主,我将为您详细介绍如何将多个pdf文件合并成一个pdf文件。 pdf合并方法:使用, “轻云处理pdf官网” 打开 “轻云处…

mysql_config 命令, 可以查看mysqlclient库的位置在/usr/lib64/mysql下

好吧,其实我是从这里知道了 -l 后面加的库名和so文件这种名不一样,因为库文件实际叫下面这个名(前面有lib)。

昇思MindSpore学习笔记1--基本介绍

昇思MindSpore是一个全场景深度学习框架。 一、框架组成 1. 模型库ModelZoo 提供深度学习算法网络。 2. 扩展库MindSpore Extend 拓展领域场景,如GNN/深度概率编程/强化学习等。 3. 科学计算MindSpore Science 科学计算套件。 包含数据集、基础模型、预置高精度模…

Mybatis从源码分析——启动到解析配置文件再到执行SQL语句过程

文章目录 前言解析配置文件解析源码Mapper文件解析过程二级缓存解析过程SQL的解析 SQL执行流程openSession()流程Executor执行器二级缓存查询数据流程 插件使用原理 前言 mybatis的体系结构: public class App {public static void main(String[] args) {String re…

【Java】解决Java报错:UnsupportedOperationException in Collections

文章目录 引言一、UnsupportedOperationException的定义与概述1. 什么是UnsupportedOperationException?2. UnsupportedOperationException的常见触发场景3. 示例代码 二、解决方案1. 使用适当的集合类型2. 创建可变副本3. 使用合适的集合工厂方法4. 使用不可变集合…

win11 (将星x17promax) 安装WSL 子系统

最初只是想着在win11系统下挂载ext4盘符,方便使用。 目录 0. 简介1.安装WSL子系统1.1 环境确认1.1.1 虚拟化设置1.1.2 系统设置1.1.3 开启开发者模式(此项有必要?)1.1.4 安装WSL子系统 2.WSL操作指令2.0 WSL相关命令2.1 WSL重置2.…

《概率论与数理统计》期末复习笔记_上

目录 第1章 随机事件与概率 1.1 随机事件 1.2 事件的关系与运算 1.3 概率的定义与性质 1.4 古典概型_重点 1.5 几何概型 1.6 条件概率与乘法公式 1.7 全概率公式与贝叶斯公式_重点 1.8 事件的独立性_重点 1.9 伯努利概型_重难点 第2章 随机变量及其分布 2.1 随机变…

MySQL之可扩展性(三)

可扩展性 向外扩展 可以把向外扩展(有时也称为横向扩展或水平扩展)策略划分为三个部分:复制、拆分以及数据分片(sharding).最简单也最常见的向外扩展的方法是通过复制将数据分发到多个服务器上,然后将备库用于读查询。这种技术对于以读为主的应用很有效。它也有一…

【乐吾乐2D可视化组态编辑器】自定义图形库

乐吾乐2D可视化组态软件图形库是一种可扩展、开放性的图形库,可根据不同的需求定制各种酷炫的组件效果和场景。 常用的方式有:①原生代码图形库、②字体图形库、③svg 图形库、④图片、⑤组合图形,以下主要从性能和开发成本维度考量&#xf…

内网渗透:端口转发(SSH隧道)

SSH:两台设备之间进行远程登录的协议(SSH本身就是一个隧道协议) 远程文件传输scp命令(scp是基于SSH的) 拓扑: SSH隧道搭建的条件 1.获取到跳板机权限 2.跳板机中SSH服务启动 SSH端口转发分类&#xff1…

锁机制 -- 概述篇

锁机制 1、概述 ​  加锁是为了解决并发场景下,多个线程对同一资源同时进行操作,而导致同一线程多次操作出现结果不唯一的情况(一次操作包含多条指令)。结果不唯一发生的原因在于指令的错乱,前提条件是多线程环境及…