基于YOLOv8深度学习的智慧国防战斗机目标检测与识别系统
随着信息技术与人工智能的发展推动
为评估该系统的效果,在开发了一个包含多种战斗机类型的数据集的基础上涵盖了包括F-16、MiG-31和F-35等多型先进战机在内的多样化样本。通过标注不同环境下捕捉到的战机图像来确保多样化与高效化的训练需求得以满足。随后采用YOLOv8算法对该数据集进行系统训练,并对检测精度与处理速度进行了系统评估。实验结果证实,在完成目标检测任务方面YOLOv8展现出卓越的能力:它不仅能够在较短时间内完成任务还能够保证较高的检测精确度。
本研究还整合了基于PyQt5构建的用户界面系统。搭建了一个功能完善且易于操作的交互平台。该平台能够接受图像或视频流输入,并实时地显示检测结果。此外,在战斗机类型识别方面表现突出,并根据检测结果采取相应的应对措施。通过一系列实验和测试验证,在稳定性与效率方面均表现优异
算法流程

项目数据
通过收集多样化的战斗机目标相关图片,并利用Labelimg标注工具完成精确标注工作。具体分类为43项:包括'F-16战斗机'、'米格-31'、'F-35闪电II'等不同型号的战斗机以及国际主流机型如US2日本海上搜救机、C-5巨型运输机等空中与地面救援装备。
目标检测标注工具
(1)labelImg: 一款开源的图像标注工具,其标签不仅适用于分类任务与目标检测,在该工具中还支持对图像进行细致的边界框与类别标注(尽管它采用英文界面)。其标注结果采用PASCAL VOC格式存储为XML文件,在ImageNet中也采用了该数据格式。此外该工具还支持COCO数据集文件格式
(2)在cmd窗口中执行以下命令即可完成安装:pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

结束后,在cmd中输入labelimg

初识labelimg

打开后,我们自己设置一下
在View中勾选Auto Save mode

接下来我们打开需要标注的图片文件夹

并配置保存标注文件的目标目录(上图中的Save Dir参数)
启动注释流程:用矩形框选中目标对象,并为选定的目标分配标签;转至下一图像后循环处理。

Labelimg的快捷键

(3)数据准备
为建议新建名为data库的数据集目录结构(这一约定俗成的做法并非唯一),其中应在images文件夹中存储待标注图片数据;在labels目录下建立对应的标注信息存储路径;最后在classes.txt文本文件中详细记录各类别名称以供后续识别分类使用。
data目录下的文件组织如下:
├── images
│ └── 图像数据集
├── labels
│ └── 标注信息的数据集
└── classes.txt
└── 类别定义文档(该文件并非必需,在类别较多时建议创建)
首先在images这个文件夹放置待标注的图片。
生成文件如下:

“classes.txt”定义了你的 YOLO 标签所引用的类名列表。

(4)YOLO模式创建标签的样式
标记信息文件名与图片名称一致,并包含N行且每行5列的数据。每个条目代表一个待注目标,一般包含五个参数:其中x类标识示标定对象所属类别;x_center及y_center分别表示标定框在水平和垂直方向上的中心比例;而xwidth及height则分别表示标定框在水平和垂直方向上的实际宽度与高度比例。
注意:这里的中心点坐标、宽和高都是相对数据!!!

存储标签类别的文件其文件名设为classes.txt(固定不变),用以存储生成的标签类别。
完成后可进行后续的yolo训练方面的操作。
硬件环境
我们使用的是两种硬件平台配置进行系统调试和训练:
(1)外星人 Alienware M16笔记本电脑:

(2)惠普 HP暗影精灵10 台式机:

该硬件环境配置了丰富且充足的计算资源,在处理大规模图像数据训练及高效运算方面具有出色能力。引入GPU后明显降低了模型训练所需时间。
通过在两种不同的硬件平台上进行调试与训练操作,系统能够实现对性能、适应性和稳定性的全面验证,从而有效提升系统的鲁棒性与泛化能力,同时降低了开发成本并提高了效率,为实际应用部署奠定了良好技术基础。
模型训练
模型的训练、评估与推理
1.YOLOv8的基本原理
YOLOv8是当前最先进的模型之一。它是基于Yolo系列历史版本构建而成,并且新增了功能与改进。通过这些优化措施的引入,在提升性能与灵活性方面也取得了显著成效。从而成为实现目标检测、图像分割以及人体姿态估计等多种任务的理想方案。其中的主要创新包括采用了一个新型主干网络结构、一个全新的Anchors-Free检测头设计以及引入了一个优化后的损失函数计算方法。这些改进使得YOLOv8能够在CPU至GPU各类硬件平台上稳定运行并提供卓越的效果表现

YOLOv8是YOLO系列中的最强版本,在各项指标上超过现有对象检测与实例分割模型,并基于对Yolov5模型结构进行全面优化的基础上实现功能,并且继承并保留了Yolov5工程化简洁易用的特点。
Yolov8模型网络结构图如下图所示:

2.数据集准备与训练
本研究采用了包含战斗机目标的数据集作为基础,并利用Labelimg标注工具对每张图像中的目标边界框及其类别进行了精确标注。基于上述数据集采用了YOLOv8n模型进行训练工作,在完成全面训练后我们对模型在验证集上的性能表现进行了详细评估与对比分析过程。整个研究过程包括以下几个阶段:数据准备阶段、模型训练阶段和性能评估阶段。其中本次研究主要关注舰船等目标类别,在处理的数据集中共有7903张图像样本具体情况如下所列
训练数据:共包含6322张图像样本,并被用来对模型进行学习与优化。
验证数据:共有790张图像样本,并被用来检验模型在新数据上的性能表现。
测试数据:总共包含791张图像样本,并被用来评估模型在未知领域上的泛化性能。
数据集合的分布情况直方图

部分数据集图像如下图所示:

部分标注如下图所示:

该种数据分布策略确保了各阶段的数据均衡性,并为 YOLOv8n 模型的研发与性能评估提供了可靠的基础。
在项目目录中创建一个datasets目录,并按照训练集与验证集的标准对检测到的图片进行分类存储于该目录内。

接下来需要创建一个新的data.yaml文件,并在其内指定用于存储训练数据路径以及模型需执行检测的具体分类类别。YOLOv8在开展模型训练的过程中将依据该文件中的信息来进行相应的模型训练与验证过程。

该文件明确指定了用于训练与验证的数据集路径,并同时指定了模型需要检测的目标类别。
在完成数据准备之后, 通过调用train.py文件来进行模型训练. epochs参数用于调节训练周期的数量, batch参数则用于调节每次处理的数据批量大小(通常受内存限制, 在最小情况下设置为1).
CPU/GPU训练代码如下:

载入指定名为yolov8n.pt的预训练YOLOv8模型文件,并对该模型进行初始化配置。具体而言:
- 采用YOLO系列模型架构进行目标检测任务建模;
- 数据集配置文件路径设为data_yaml_path;
- 定总训练轮数为150个周期;
- 每个批次处理4个样本数据;
- 优化器选择SGD算法进行参数更新;
- 训练实验命名设为train_v8;
- 模型预训练完成后自动进入微调阶段。
3.YOLOv8模型训练结果与性能评估
在深度学习训练过程中, 通常采用追踪误差曲线的方法来评估模型性能. YOLOv8 模型的训练涵盖三种关键指标: box_loss, cls_loss 和 dfl_loss. 通过优化这些指标来显著提升目标检测性能.
损失函数作用解析:
(1)定位损失 (box_loss):衡量预测边界与真实边界之间的差异,在GIoU指标下数值越小则定位精度越高。
(2)分类损失 (cls_loss):评估锚框所对应的目标类别标签的一致性,在交叉熵框架下评估值越低则分类准确性越高。
(3)动态特征损失 (dfl_loss):DFLLoss主要用于计算预测边界与真实边界之间的距离,并通过调整特征图的空间尺度来优化定位精度
训练和验证结果文件存储:
训练完成后,相关的训练过程和结果文件会保存在 runs/ 目录下,包括:

(1)损失曲线图(Loss Curves)
(2)性能指标曲线图(mAP、精确率、召回率)
(3)混淆矩阵(Confusion Matrix)
(4)Precision-Recall (P-R) 曲线
损失曲线(Loss Curve)和性能指标分析:

训练指标:
train/box_loss:
描述:反映边界框回归损失(Box Loss)在训练过程中的演变过程。
趋势:在训练过程中随着轮数的推进,Box Loss从1.2降至约0.5,并显示出模型边界框预测能力的逐步提升。
train/cls\_loss:
Explanation: This represents the trend of classification loss during the training process.
Trend: The loss decreased from an initial value of 4.0 to approximately 1.0, exhibiting a significant descent, which indicates that the model's classification capability has been enhanced.
train/dfl_loss:
描述该变化趋势时, 表示分布焦点损失(Distribution Focal Loss)的行为特征, 并用于提升边界框定位精度。
趋势分析表明, 损失值从初始值1.4下降至约0.9, 显示出模型在学习过程中逐渐优化了边界框定位能力。
用于评估验证指标:val/box_loss的具体含义及其变化情况如下所示
val/cls_loss:
描述:反映验证集类别分类损失(Classification Loss)的变化轨迹。
趋势:由初始值3.5下降至约1.5之间,在验证集上模型分类能力持续提升。
val/dfl_loss:
体现验证集上聚焦损失(DFL Loss)的变化情况。
趋势分析显示,损失指标从平均值 1.4 下降到约 1.0 的最低点,并与训练同步发展;这表明模型在验证集上的边界框学习能力持续提升。
性能指标:
metrics/precision(B):
描述:表示模型在训练集上Precision的变化趋势。
趋势:Precision逐步提升至接近0.7水平,并逐渐表现出对正样本预测能力的增强。
metrics/recall(B):
描述: 该指标展示了模型在训练集上对真实目标的识别效果变化情况。
趋势: 召回率指标稳步提升,在约0.58至0.6之间波动并逐渐趋近于稳定状态。这表明模型具备较高的识别能力,并能够有效识别出更多的实际目标数量。
metrics/mAP50(B):
描述:表示验证集上 IoU ≥ 50% 时的平均精度(mAP@50)。
趋势: mAP50 从接近 0 增加到约 0.6,说明模型在验证集上的检测性能持续提升。
metrics/mAP_{ }^{ }^{ }^{ }^{ }^{ }:
描述: 该指标衡量的是在验证集上IoU介于\backslashtexttt{[}\backslashsuccinct( )\backslashtexttt{]})范围内的平均精度表现(mAP@\backslashsuccinct( )\backslashsuccinct( ))。
趋势: 数值从接近于零逐渐提升至大约\backslashsuccinct( )水平, 这表明模型在验证集上的综合表现持续增强。
总结:
这组曲线图直观地展示了YOLOv8模型在训练与验证阶段的学习能力和收敛特性,在多个关键指标上均表现出稳定的运行状态,并且其精准度和适应性均表现出色。通过进一步优化数据集配置及超参数调优,预期性能将有进一步的提高。
Precision-Recall(P-R)曲线分析:

蓝色曲线(总体 P-R 曲线):
(1)该曲线全面衡量了各类别之间的性能平衡情况。
(2)呈现出从左上向右下延伸的趋势,在测试集上直接反映了模型的平均检测性能表现。
(3)这一现象揭示了在提升召回率的过程中必然伴随精度下降的现象特征,在目标检测领域具有典型意义
灰度曲线(单类别的P-R曲线):
(1)每一幅灰度曲线都对应一个检测性能的表现,其中某些类别(例如具有较大数据量的那些类别)其对应的灰度曲线会更加集中于左上方区域,这表明该类别的检测效果更为突出。
(2)整体呈现较为稀疏的状态,这说明模型在某些特定的分类问题上表现得不够理想,并且这可能与两类别的样本分布不均衡或类别特征本身较为复杂等因素有关。
结论:
这张 P-R 曲线图整合了模型的整体检测性能(以蓝色曲线表示)以及各类别特有的表现(以灰色曲线展示)。总体而言,在大多数类别上该模型的检测性能较为出色,但需对数据或模型参数进行优化调整以提升其在特定类别上的表现。
该方法(即混淆矩阵)提供了对分类模型性能的深入解析;该技术(即混淆矩阵)通过构建真实标签与预测标签之间的对比关系来评估分类器的表现

结论:
当前模型在整体分类任务中的表现相当出色。大部分类群(例如F16、J-20、F-35)均展现出显著的检测效果,并且其对角线强度较高这一特点表明该模型在这些类群上的预测准确性较高。然而,在某些外形相似的类群(如F-16与MIG-31或B-2与V-22)之间存在一定程度的混淆现象。此外,在背景区域的表现仍有待进一步优化,可能与其背景样本不足或特征相似性有关
为了系统性地提升模型性能目标,在多个关键领域展开针对性优化将是更为有效的策略
4.检测结果识别
完成模型训练后, 我们能得到一个位于runs/train/weights目录下的最优训练成果模型best.pt文件. 进而可利用该文件来进行后续的推理检测.

加载所需库:
(1)引入所需的库包。
(1)from ultralytics import YOLO:用于实现目标检测功能。
(2)import cv2:用于执行图像操作并呈现结果。
注释:
(1)from ultralytics import YOLO:用于实现目标检测功能。
(2)import cv2:用于执行图像操作并呈现结果.
加载模型路径和图片路径:
(1)path = ‘models/best.pt’:该模型被配置为执行目标检测任务。
(2)img_path = “TestFiles/imagetest.jpg”:配置需要检测的图片文件的位置。
加载预训练模型:
(1)model = YOLO(path, task=’detect’):根据指定路径加载YOLO模型,并将检测任务设为目标检测 (detect)。
(2)根据 conf 参数设置目标检测的置信度阈值;根据 iou 参数设定非极大值抑制(NMS)的交并比(IoU)阈值。
图像检测:
(1)该代码行通过将输入图像传递给模型来执行目标检测。
具体而言:
- 输入参数img_path指定待处理的输入图像路径。
- 该函数调用模型并对img_path进行处理。
- 返回值results包含目标检测的结果信息。
(1)res = results[0].plot():捕获到的检测结果以图像形式呈现于屏幕上。
(2)cv2.imshow(“YOLOv8 Detection”, res):通过OpenCV工具展示检测后的图像,并设置窗口标题为“YOLOv8 Detection”。
(3)cv2.waitKey(0):等待用户按下键盘键来关闭当前显示的窗口。
执行imgTest.py代码后,会将执行的结果直接标注在图片上,结果如下:

该段输出基于YOLOv8模型对图像'imagetest.jpg'的检测结果。
图像信息:
(1)处理的图像路径为:TestFiles/imagetest.jpg。
(2)图像尺寸为448×640像素。
检测结果:
(1)模型在图片中检测到 1 个 F16 战斗机(F16)。
处理速度:
(1)预处理时间: 3.0 毫秒
(2)推理时间: 37.3 毫秒
(3)后处理时间: 65.1 毫秒
(4)总时间:3.0 + 37.3 + 65.1 = 105.4ms
用于检测单张图片的时间约为 105 毫秒,在性能优越的 GPU 上(如 RTX 4070 Ti SUPER)具有显著效率提升
运行效果
– 运行 MainProgram.py

主要功能:
(1)该系统能够实现对目标图片中战斗机的实时识别;
(2)它不仅适用于图像处理任务还支持视频流以及摄像头设备;
(3)系统界面将实时更新并展示目标位置坐标及其相关信息统计;
(4)该功能模块能够对检测到的图像或视频进行结果存储。
2.检测结果说明:

(1)置信度阈值:当前设置为0.25,表示检测系统只会考虑置信度高于25%的目标进行输出,置信度越高表示模型对检测结果的确信度越高。
(2)交并比阈值:当前设置为0.70,表示系统只会认为交并比(IoU)超过70%的检测框为有效结果。交并比是检测框与真实框重叠区域的比值,用于衡量两个框的相似程度,值越高表明重叠程度越高。
这两个参数常用于目标检测系统中,在调整后能够调节模型的检测准确率与误检率。
这张图表呈现了基于YOLOv8模型的目标检测系统的结果界面,请详细解释各字段的具体含义。

(1)该模型实现目标所需时间为0.089秒。
(2)证实了模型具有良好的实时性能,并且运行效率极高。
目前检测到的目标数量是1,并即表示这是当前被检测到的第一个目标。
(1)Here is a select dropdown, allowing users to choose the type of targets to examine.
(2)In the current scenario, the selection has been set to 'all', which means it will display all detected target information.
目标检测类型:

结果(Result):
(1)当前选中的结果为 “歼-20″,表示系统正在高亮显示检测到的“J20”。
置信度(Confidence):
(1)这表明模型对检测到的目标归类为"歼-20"类型的信心程度达到95.59%。
(2)置信度体现了该模型的判断信心水平,在这种情况下其值越高则表明该模型对该检测结果的可信程度越高。
目标的位置坐标由xmin: 37, ymin: 121确定。
(1)xmin: 37, ymin: 121:目标区域的具体位置由上述参数指定。
(2)xmax: 811, ymax: 1299:目标区域的具体边界则由这一组参数决定。
这些坐标表示在图像中的目标区域范围,框定了检测到的“歼-20”的位置。
这张图呈现了战斗机目标的一次详细检测记录,并涵盖了具体的测试时间、识别的目标类型以及各项行为的置信度水平和目标位置坐标等关键信息。通过图形化界面用户能够直观观察并评估这些检测数据,并据此优化作战指挥系统效能。
3.图片检测说明










































请依次完成以下操作:
首先,在目标下拉框中点击确定。
其次,在目标下拉框中点击确定。
单击保存按钮以便将检测结果保存到指定位置。
存储位置设置为save_data目录下。
检测报告:该系统识别并展示了图片中战斗机的目标情况。该过程涉及总数量、完成时间及各细节参数等关键信息的呈现与计算。
4.视频检测说明

单击视频按钮启动选择待检测的视频播放。
随后系统会即时呈现检测报告。
一旦分析完成即可自动生成并展示相应的检查报告。
单击保存按钮将生成的检查数据进行持久化存储。
存储路径位于save_data目录下。
测试反馈:该系统实现了对视频流的实时扫描,并识别出目标飞机并提供了相应的数据标记。通过表格形式展示了各个检测点的成功率及其对应位置坐标
这个界面呈现了系统在视频帧中的多目标检测性能,并具备精确识别战斗机的能力;同时提供了详细的结果数据和置信度分数。
5.摄像头检测说明

按下启动摄像头按钮,则会实现摄像头的开启;该操作能够持续执行检测操作;再次按下启动按钮,则会实现摄像头的关闭。
该系统通过摄像头实现对目标的持续监测。识别出敌机并对其位置进行标记。持续的画面更新中,并对发现的目标行为进行定位标记。每帧图像处理后的数据经统计形成报告文件。
6.保存图片与视频检测说明

当触发保存按钮时(按下保存按钮),系统会被当前选择的图片或批量图片以及视频的检测结果所存储。
被检测出的图像与视频内容将会被存入指定位置/路径下的save_data文件夹内。
以下即为被保存下来的检测数据列表:

该CSV文件中存储了关于图片的信息如下:包括图片路径、目标在图片中的编号、目标类别、置信度以及目标所处的位置信息。注:这些坐标值代表的是检测框在图像中的左上角和右下角顶点的x轴和y轴的位置。

(1)图片保存

(2)视频保存

– 运行 train.py
1.训练参数设置

(1)数据参数data由data_yaml_path指定:基于数据集数据yaml文件中的配置参数。
(2)训练迭代次数设为150次:设置训练迭代次数为150次。
(3)每批输入四个图像样本:每批处理四幅图像。
(4)模型输出文件存储至特定路径:模型输出结果将被保存到以特定命名的目标文件夹中。
(5)选择随机梯度下降算法(SGD)进行优化计算:采用随机梯度下降算法(SGD)来进行参数优化计算。
然而,在大多数深度学习任务中,
GPU通常能够显著提升训练速度。
然而,在某些情况下,
可能因硬件限制或其他因素导致,
迫使用户不得不在CPU上进行训练。
温馨提示:使用深度学习模型在CPU上的训练速度通常低于其在GPU上的运行速度。特别是像YOLOv8这类高度依赖计算资源的模型。除非有特别的需求要求,在大多数情况下建议选择GPU来进行训练以节省时间。
2.训练日志结果

这张图展示了使用YOLOv8进行模型训练的详细过程和结果。
(1)经过150轮的持续训练,总耗时约三小时又二十四分钟。
(2)在本次训练中采用了NVIDIA GeForce RTX 4070 Ti SUPER GPU。
(3)显示出显著的训练效率,归功于YOLOv8模型的优化设计以及高性能硬件的支持。
验证结果如下:
(1)mAP50值为0.614,在IoU≥50%的情况下表明该模型达到了显著的平均检测精度水平。
(2)综合考虑IoU≥95%的场景,在这一更为严格的条件下整体检测精确度达到了相对较高的水平。
速度:
(1)预处理耗时极短
(2)推理所需时间为1ms
(3)后处理耗时短至约0.7ms
(4)整体推理效率极高:平均每次仅需 1.9ms,并可适用于实时检测需求。
结果存储位置:
(1)Results stored in runs\detect\train_v8\
Validation data is stored within the runs\\detection\\train\_v8 directory.
该进程以退出码0成功完成验证流程
总结:
(1)模型整体表现尚可;部分特定型号(如J20、F35、Be200)的检测效果尤为突出。
(2)有必要对若干低效类别的性能进行优化;以直接提升其检测精度和召回率。
(3)推理速度较为迅速;能够满足实时目标检测的需求。
