YOLOv5至YOLOv12升级:动物识别系统的设计与实现(完整代码+界面+数据集项目)
摘要:随着深度学习技术的快速发展,基于计算机视觉的动物识别系统已成为生物学研究、环境监测和智能农业等领域的重要应用。本研究提出了一种基于深度学习的动物识别系统,旨在通过图像处理技术自动识别不同种类的动物。系统主要包括数据收集、预处理、深度卷积神经网络(CNN)模型的训练与优化,以及最终的分类与识别模块。在数据收集阶段,采集了多种环境中的动物图像,并对数据进行了增强和标注。通过使用卷积神经网络,系统能够有效提取动物图像中的特征,并实现高效的分类与识别。在实验中,所提出的系统在多个数据集上的识别精度表现良好,达到了较高的准确率。此外,系统还具有较强的泛化能力,可以适应不同环境下的动物图像识别。通过实验结果验证,本系统能够在实际应用中为动物监测、保护以及生态研究提供有力的支持。
文章目录
功能效果展示视频:动物识别系统YOLOv12-v11至v5(八个模型,含示例论文)合集(完整Python项目演示,UI界面,含论文等)
1.前言综述
随着相机陷阱、无人机与移动端采集的动物影像呈指数级增长,人工筛图、标注与统计逐渐成为生态监测、野生动物保护与智慧养殖中的效率瓶颈,而深度学习在“物种识别—个体计数—属性描述”等链路上已展现出接近人工、可规模化的自动化潜力。1 (PNAS) 站在工程视角,一个可靠的动物识别系统不仅要“识别得准”,还要“跑得动、用得顺、可追溯”:既能在野外低照度、遮挡、远距离等复杂条件下稳定推理,也能把检测结果组织成可视化、可导出、可复盘的数据闭环,支撑科研分析与生产决策。
在研究现状方面,数据集与评测基准的演进直接塑造了算法路线的取舍与边界。Snapshot Serengeti 通过225台相机陷阱长期部署,提供40种哺乳动物的高频标注与大规模生态场景覆盖,为“真实野外分布下的物种识别”提供了重要基准。2 (Experts@Minnesota) 面向跨地点部署的现实需求,iWildCam 2020 采用严格的地点划分组织训练/测试,突出“域偏移”对识别可靠性的冲击,并鼓励利用公民科学图像作为补充数据以提升迁移能力。3 (arXiv) 在细粒度与长尾分布更突出的设置里,Semi-iNat 2021 将大规模有标注与无标注物种数据纳入半监督挑战,使“少样本类别的可学性”与“标签噪声鲁棒性”成为核心难点。4 (arXiv) Terra Incognita 则从相机陷阱“固定机位+背景强相关”的特性出发,系统性揭示捷径学习问题:模型在同地点测试表现良好,但在新地点的分类泛化显著下降。5 (arXiv)
从落地角度看,生态信息学社区已经开始用通用检测器来加速海量相机陷阱流程,但其能力边界同样清晰:相关评测显示,MegaDetector 对运动触发图像的“有无动物”判别可达≥94.6%准确率,但在定时拍摄场景会因远距离小目标、遮挡与成像质量下降而跌至≤61.6%。6 (ScienceDirect) 与此同时,国内外研究也在从“检测/识别”走向“行为理解”,例如综述指出姿态估计正成为动物行为识别与福利评估的重要抓手,但跨物种形态差异与高成本关键点标注导致数据瓶颈仍未根本缓解。7 (ijournals)
算法层面,动物识别系统多以目标检测为入口,再叠加细粒度分类或跟踪以完成物种/个体级理解。YOLO 将检测建模为单次前向的回归问题,实现端到端的一阶段实时检测范式,为边缘端部署与交互式系统提供了速度基础。8 (arXiv) 相比之下,两阶段方法以 Faster R-CNN 的RPN生成候选区域并共享卷积特征,在复杂背景与尺度变化下往往具有更稳健的定位精度,但推理链路更长、实时性成本更高。9 (arXiv) Transformer 路线的 DETR 通过集合预测与二分图匹配损失,弱化了锚框与NMS等手工组件依赖,为端到端检测提供了更简洁的训练目标与全局关系建模框架。10 (arXiv) 国内对YOLO谱系的系统梳理进一步强调,Backbone/Neck/Head 的模块化设计与训练/增强层面的“bag-of-freebies”工程策略共同推动了YOLO家族的持续迭代,并归纳了注意力机制与边缘部署等典型应用路径。11
近两年实时检测器的更新,进一步抬升了“速度—精度—部署友好性”的综合上限。YOLOv7 通过可训练的 freebies 组合在MS COCO上取得56.8% AP且保持30FPS以上的实时区间,证明卷积范式仍能持续挖潜效率边界。12 (arXiv) RT-DETR 面向实时端到端推理引入高效混合编码器与不确定性最小的query选择机制,使Transformer检测在较低算力下也能兼顾速度与精度。13 (CVF Open Access) YOLOv9 通过GELAN骨干与可编程梯度信息(PGI)强化训练信号分配,旨在改善深层网络的梯度传递与表示学习效率。14 (ECVA) YOLOv10 则提出一致的双重匹配以支持NMS-free训练,并以效率—精度驱动的整体设计策略减少冗余计算,推动YOLO向更“端到端可部署”的方向演进。[15] (arXiv)
回到动物识别这一具体任务,真实场景往往同时存在细粒度类别相似(近缘物种外观高度接近)、长尾分布(稀有物种样本极少)、夜间红外与逆光导致的低信噪比、运动模糊与遮挡、以及跨地区/跨设备带来的颜色与背景偏移。系统层面还需要把“检测框—物种标签—置信度—统计报表”组织成可解释闭环,支持图片/视频/摄像头等多源输入,并在误检/漏检发生时能快速复核与回流数据迭代模型。基于此,本文(老思)将以YOLO家族为核心完成动物检测识别的工程化落地:在统一数据与训练协议下对YOLO系列模型进行对比评测,并构建基于PySide6的桌面端可视化系统,提供阈值可调、热力图与类别统计展示,以及SQLite的用户与结果管理,最终配套可复现的代码与数据资源包,便于读者直接改造成自己的动物识别应用。
主要功能演示:
1)登录注册演示
系统启动后首先进入登录页,界面提供账号密码输入、验证码/记住我(可选)、登录按钮与“立即注册”入口。注册流程通常包含用户名(或邮箱/手机号)、密码与确认密码的校验,并在提交时完成:字段合法性检查 → SQLite 写入用户表 → 初始化用户配置(默认阈值、主题、历史空间)。登录成功后系统会自动加载该用户的个性化配置与历史记录索引,从而保证“不同用户互不干扰、结果可追溯”。当密码错误、账号不存在或重复注册时,界面以弹窗/提示条给出明确反馈,避免用户无感失败。

2)页面布局演示
进入主界面后,整体采用“左侧功能区 + 中部可视化区 + 右侧参数/统计区”的典型检测系统布局:左侧负责输入源与任务控制(图片/文件夹/视频/摄像头切换、开始/暂停/停止、导出等),中部显示原始画面与推理叠加结果(检测框、类别、置信度),右侧集中承载推理参数(Conf/IoU、分辨率、设备选择)、运行信息(FPS/耗时)以及统计面板(各类别计数、占比、最近记录摘要)。这种布局的好处是把“操作—结果—调参—统计”放在同一屏幕闭环内,用户无需频繁切页即可完成从试跑到调优的完整流程。

3)模型选择演示
在模型选择模块中,系统提供下拉框/列表来切换 YOLO 系列检测器(如 yolov5/6/7/8/9/10/11/12 的不同规模 n/s/m 等),并支持“导入权重文件”实现自训练模型的一键挂载。切换模型时一般会触发:释放旧模型显存 → 载入新权重 → 重新初始化推理管线与类别映射,同时把当前模型名称、参数量/输入尺寸(可选展示)与推理速度更新到状态栏,便于用户直观比较“同一视频在不同模型下的 FPS 与误检/漏检差异”。若权重与类别数不匹配,系统会提示并阻止错误加载,避免推理崩溃或类别错位。

4)主题修改演示
主题修改面向“可用性与展示性”两类需求:一方面支持深色/浅色模式与高对比配色,适配夜间监控或长时间使用;另一方面提供背景图、主色调、图标风格与字体大小等个性化配置(可通过 QSS/样式表实现),使系统更贴合不同项目的品牌与场景。用户完成主题切换后,系统会将主题参数写入 SQLite(或本地配置文件),下次登录自动恢复;同时对关键组件(按钮、表格、滑条、提示条)进行统一风格渲染,保证“换主题不破布局、风格一致不突兀”。

2.数据集介绍
本动物识别数据集以目标检测任务为建模对象,图像文件命名中可见 “Animals_SIXU” 前缀,样本覆盖室内外多场景、不同拍摄距离与尺度变化,既包含单目标的近景图,也包含多目标同框与部分遮挡的复杂画面(训练批次可视化如 train_batch0.jpg、train_batch1.jpg 所示)。数据集总计 1926 张图像,其中 1284 张用于训练、321 张用于验证、321 张用于测试,比例约为 66.67% / 16.67% / 16.67%。从类别构成看,数据集包含 6 类动物:bird(鸟)、cat(猫)、cow(牛)、dog(狗子)、horse(马)、sheep(羊)。结合标注统计图(labels.jpg)可以观察到类别总体较均衡,但仍存在一定“轻度长尾”:鸟类与狗类实例数相对更高,而羊、马等类别略少,这一分布更贴近真实采集的出现频率,也对模型的类间判别与置信度校准提出了更高要求。
在标注表达上,数据集采用 YOLO 系列通用的归一化标签格式,每个目标以 ( c , x , y , w , h ) (c, x, y, w, h) (c,x,y,w,h) 表示,其中 c c c 为类别编号, ( x , y ) (x, y) (x,y) 为边界框中心点坐标, ( w , h ) (w, h) (w,h) 为边界框宽高,且四个几何量均按图像宽高归一化到 [ 0 , 1 ] [0,1] [0,1] 区间。由标注相关性与分布图(labels_correlogram.jpg)可见,目标中心位置 ( x , y ) (x, y) (x,y) 明显集中在画面中部附近,符合“主体居中拍摄”的常见数据采集习惯;同时 w w w 与 h h h 呈正相关,且小尺度框占比更高,说明数据集中存在较多远景或非满幅目标,这会显著影响检测器在特征金字塔/多尺度预测上的收益。为便于后续训练稳定性与泛化评估,验证集同时提供“标签可视化”与“预测可视化”的对照样例(val_batch0_labels.jpg、val_batch0_pred.jpg),可用于快速排查类别映射、框尺度异常与漏标等问题,并为阈值(Conf/IoU)设定提供直观参考。
📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | 未提供(推荐 LabelImg/Labelme;按实际替换) |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 1,284 张 (66.67%) |
| 验证集 (Val) | 321 张 (16.67%) | |
| 测试集 (Test) | 321 张 (16.67%) | |
| 总计 (Total) | 1,926 张 | |
| 类别清单 | Class ID: 0 | bird(鸟) |
| Class ID: 1 | cat(猫) |
|
| Class ID: 2 | cow(牛) |
|
| Class ID: 3 | dog(狗子) |
|
| Class ID: 4 | horse(马) |
|
| Class ID: 5 | sheep(羊) |
|
| 图像规格 | 输入尺寸 | 未提供(常用 640 * 640;按训练配置为准) |
| 数据来源 | 未提供(可填写:自有数据/混合数据集/实地拍摄/公开数据集手动清洗) |
3. 模型设计与实现
本系统将“动物识别”建模为多类别目标检测问题:给定一幅输入图像 I I I,模型输出一组候选框 b i {b_i} bi 及其类别概率 p i {p_i} pi 与置信度 s i {s_i} si,其中类别集合为 bird(鸟) , cat(猫) , cow(牛) , dog(狗子) , horse(马) , sheep(羊) {\text{bird(鸟)},\text{cat(猫)},\text{cow(牛)},\text{dog(狗子)},\text{horse(马)},\text{sheep(羊)}} bird(鸟),cat(猫),cow(牛),dog(狗子),horse(马),sheep(羊)。考虑到桌面端实时交互与后续部署的需求,老思在实现上默认选择 YOLOv12n 作为基线检测器:它在 YOLO 的 backbone–neck–head 三段式框架内引入注意力中心的结构设计,以尽量保持实时推理特性,同时增强对全局上下文与小目标细节的表征能力。Ultralytics 的模型说明指出,YOLO12 通过 Area Attention、R-ELAN 以及一系列注意力结构的工程化改造来平衡精度与速度;其 COCO 指标与速度对比也给出了 YOLO12n 相对 YOLOv10n/YOLO11n 的精度增益。 (Ultralytics Docs)
从网络结构看,YOLO 系列检测器通常由 Backbone 负责多尺度特征抽取,Neck 负责跨尺度融合,Head 负责输出分类与回归结果。Backbone 逐级下采样得到不同分辨率的特征图(如 P 3 / P 4 / P 5 P3/P4/P5 P3/P4/P5),以覆盖小目标与大目标;Neck 常用 FPN/PAN 风格的自顶向下与自底向上融合,使高层语义与底层细节在多尺度上对齐;Head 将融合后的多尺度特征映射为最终预测张量,并在后处理阶段生成检测框与类别结果。传统 YOLO 的三段式结构示意可直接对应到 Ultralytics 的官方结构图(下图所示),该图在博客中用于帮助读者快速建立“输入—特征抽取—多尺度融合—检测输出”的整体认知。 (Ultralytics Docs)
“网络的整体架构图如下图所示”(参考图链接见文末代码块)。
YOLOv12 的关键差异在于其“注意力中心”的特征建模策略。Ultralytics 文档将 Area Attention 作为核心模块:它把特征图划分为若干等分区域(默认 4 个),在水平或垂直方向上执行更高效的自注意力计算,以避免标准全局注意力带来的二次方复杂度与内存压力;与此同时,YOLOv12 引入 R-ELAN(Residual Efficient Layer Aggregation Networks) 来缓解注意力堆叠后的优化困难,通过块级残差与缩放(类似 layer scaling)提高深层训练稳定性,并采用更“瓶颈化”的聚合方式控制计算量。为了在不显式使用位置编码的情况下维持空间感知,YOLOv12 还在注意力结构中加入了 7 × 7 7\times 7 7×7 的可分离卷积作为“position perceiver”,以隐式注入位置信息;并在实现层面支持 FlashAttention 以降低注意力算子的显存访存开销(可选编译启用)。这些设计共同服务于一个目标:在实时预算内引入更强的全局关系建模能力,从而提升复杂背景、遮挡与小目标条件下的可分性。 (Ultralytics Docs)
在检测头与损失函数层面,本文实现沿用 Ultralytics 检测器的通用范式:分类分支与回归分支共同学习,其中边界框回归通常采用 IoU 家族的几何损失以强化定位质量,分类/目标置信度采用 BCE 类损失以刻画类别可分性与目标存在性;同时引入 Distribution Focal Loss(DFL) 用离散分布的方式刻画边界距离,提高回归的细粒度表达。Ultralytics 社区对其 DetectionLoss 的组成说明指出,核心项包含 box loss、classification loss 与 DFL 等组件。 (GitHub) 在论文写作中,常用的表达可写为
L = λ box L box + λ cls L cls + λ dfl L dfl , L = \lambda_{\text{box}}L_{\text{box}} + \lambda_{\text{cls}}L_{\text{cls}} + \lambda_{\text{dfl}}L_{\text{dfl}}, L=λboxLbox+λclsLcls+λdflLdfl,
其中 L box L_{\text{box}} Lbox 可用 CIoU 形式表述为
L CIoU = 1 − IoU + ρ 2 ( c , c ∗ ) d 2 + α v , L_{\text{CIoU}} = 1-\text{IoU} + \frac{\rho^2(\mathbf{c},\mathbf{c}^{*})}{d^2} + \alpha v, LCIoU=1−IoU+d2ρ2(c,c∗)+αv,
ρ ( c , c ∗ ) \rho(\mathbf{c},\mathbf{c}^{*}) ρ(c,c∗) 为预测框与真值框中心点距离, d d d 为最小外接框对角线长度, v v v 描述长宽比一致性, α \alpha α 为权重系数; L cls L_{\text{cls}} Lcls 通常采用带 logits 的二元交叉熵(多标签形式)以适配多类检测; L dfl L_{\text{dfl}} Ldfl 则通过对边界距离分布的交叉熵约束来提升回归精度。对本数据集中“目标中心偏置明显、同时存在小尺度框”的特点而言,多尺度预测与 DFL 往往能更稳定地提升小目标定位的梯度信号,而注意力模块对上下文的建模则有助于降低背景纹理导致的误检风险(热力图对比可作为定性佐证)。
实现细节上,模型端建议以 Ultralytics API 作为推理与训练的统一入口,并在工程中把“权重加载—输入预处理—推理—后处理—可视化/导出”封装为独立的 Detector 组件,供 PySide6 界面层调用。为了保证训练与推理的一致性,推理阶段使用与训练同源的 letterbox 缩放与归一化流程,并保持类别映射表与可视化文本一致(例如将英文标签映射为中文显示名)。示例代码如下(以 YOLOv12n 为例):
from ultralytics import YOLO
Chinese_name = {'bird': "鸟", 'cat': "猫", 'cow': "牛", 'dog': "狗子", 'horse': "马", 'sheep': "羊"}
model = YOLO("yolo12n.pt") # 或替换为你的自训练权重 best.pt
# 推理
results = model.predict(source="test.jpg", imgsz=640, conf=0.25, iou=0.7, device=0)
# 可视化与类别名映射(按需在界面侧实现)
for r in results:
for b in r.boxes:
cls_id = int(b.cls.item())
cls_en = r.names[cls_id]
cls_cn = Chinese_name.get(cls_en, cls_en)
score = float(b.conf.item())
# 将 cls_cn 与 score 交给 UI 层绘制
4. 训练策略与模型优化
动物目标检测任务的训练难点往往不在“能否收敛”,而在于收敛后的泛化与可部署性:一方面,数据集中目标尺度跨度大、遮挡与背景干扰显著,小目标占比高时更容易出现漏检;另一方面,系统需要在桌面端或边缘端维持稳定帧率,因此训练阶段不仅要追求 m A P mAP mAP,还要兼顾推理开销与阈值可调带来的使用体验。基于这一约束,老思在实现上将训练流程设计为“预训练权重迁移 → 强化增强的稳定训练 → 末期增强退火与精修 → 导出部署优化”的顺序,使模型既能充分吸收通用视觉先验,又能对本数据集的分布偏置(如中心偏置、框尺度分布)形成适配。
训练环境建议采用 Python 3.12 与 PyTorch(CUDA 可用),并在单卡 RTX 4090 上完成实验。为降低不同次训练结果的波动,可固定随机种子并启用确定性算子(在可接受速度损失的前提下),同时将数据加载线程数与缓存策略设为稳定值,避免 I/O 抖动影响吞吐。输入端统一使用 letterbox 方式把图像缩放到方形分辨率 S × S S\times S S×S(常用 640 × 640 640\times640 640×640),并将像素归一化到 [ 0 , 1 ] [0,1] [0,1];标签采用 YOLO 归一化框 ( x , y , w , h ) ∈ [ 0 , 1 ] (x,y,w,h)\in[0,1] (x,y,w,h)∈[0,1],训练与推理严格共用同一套预处理,防止“训练看到的尺度分布”与“推理时的尺度分布”不一致。数据增强方面,前期保持较强的几何与颜色扰动(Mosaic、随机缩放平移、翻转、色域抖动等)以提升背景鲁棒性与尺度泛化;但在训练末期需要逐步减弱增强强度,尤其是关闭 Mosaic,使网络在更接近真实输入分布的样本上完成边界框回归的精修,否则容易出现“验证集定位抖动、框偏移”的现象。针对你给出的标注统计图,小目标与中部聚集较明显,这类数据在强增强阶段容易发生目标被裁切或有效像素过少的问题,因此建议在增强管线中保留最小目标面积阈值过滤,并在后期精修阶段降低随机透视幅度,以稳定定位梯度。
迁移学习与微调策略上,默认加载 COCO 等通用数据集的预训练权重作为初始化,能够显著缩短收敛周期并降低小数据集的过拟合风险。实践中可采用“分段微调”:起始若干 epoch 冻结 backbone 或降低其学习率,让 neck/head 更快适配本任务的类别与尺度;随后解冻全网络进行联合优化,以恢复端到端表征的协同学习。优化器可交由框架自动选择(多数情况下在 SGD 与 AdamW 间择优),学习率采用 warmup + 余弦退火的策略更利于稳定训练:warmup 阶段将学习率从较小值逐步升到初始学习率 l r 0 lr_0 lr0,避免大步长破坏预训练权重;退火阶段将学习率逐步下降到 l r 0 ⋅ l r f lr_0\cdot lrf lr0⋅lrf 以完成精修。若用余弦退火,常用形式为
l r ( t ) = l r min + 1 2 ( l r max − l r min ) ( 1 + cos π t T ) , lr(t)=lr_{\min}+\frac{1}{2}\left(lr_{\max}-lr_{\min}\right)\left(1+\cos\frac{\pi t}{T}\right), lr(t)=lrmin+21(lrmax−lrmin)(1+cosTπt),
其中 T T T 为总训练步数或 epoch 数, l r max lr_{\max} lrmax 与 l r min lr_{\min} lrmin 分别对应 warmup 后的峰值学习率与末期学习率。正则化层面,权重衰减( L 2 L_2 L2)与 EMA(Exponential Moving Average)对检测任务的泛化通常更稳健,EMA 通过对参数的滑动平均减小抖动,其更新可写为
θ ema ← β θ ema + ( 1 − β ) θ , \theta_{\text{ema}}\leftarrow \beta\theta_{\text{ema}}+(1-\beta)\theta, θema←βθema+(1−β)θ,
β \beta β 取 0.999 0.999 0.999 左右较常见。为提高吞吐与显存利用,训练端建议开启 AMP(混合精度),并结合合适的 batch size(如 16)在 4090 上保持较高的 GPU 利用率;若显存仍紧张,可采用梯度累积来等效扩大 batch,从而提升 BN 统计稳定性与优化器步进质量。
在训练过程控制上,验证集在每个 epoch(或固定间隔)评估 m A P 50 : 95 mAP_{50:95} mAP50:95、Precision、Recall 等指标,并以 m A P 50 : 95 mAP_{50:95} mAP50:95 作为主指标保存 best 权重;同时启用早停机制,当连续若干次验证无提升时提前结束训练,避免后期过拟合带来的指标回落。由于你的数据集规模为 1926 张,类别数为 6 类,且从可视化样例看场景差异较大,早停能有效抑制“训练集继续下降但验证不再收益”的无效训练段,使整体训练更可控。
下面给出一套可直接复现实验的默认超参数配置(未提供硬件与训练细节时,老思按常见 YOLO 训练经验给出该组值,且与你前面给出的表一致,GPU 默认 4090):
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最多训练轮数 | 120 |
| patience | 早停耐心(验证无提升则停止) | 50 |
| batch | 每次迭代的总批大小 | 16 |
| imgsz | 网络输入分辨率(方形) | 640 |
| pretrained | 是否加载预训练权重 | true |
| optimizer | 优化器类型(auto 由框架选择) | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比(余弦/多段下降的底值) | 0.01 |
| momentum | 动量/一阶动量系数 | 0.937 |
| weight_decay | 权重衰减( L 2 L_2 L2 正则) | 0.0005 |
| warmup_epochs | 学习率预热轮数 | 3.0 |
| mosaic | Mosaic 数据增强强度/概率 | 1.0 |
| close_mosaic | 训练后期关闭 Mosaic 的轮数 | 10 |
模型部署优化方面,训练完成后的权重建议按“推理算子友好性”做一次工程化压缩与加速:首先在导出阶段将模型转换为 ONNX,进一步可在 NVIDIA 平台编译为 TensorRT 引擎以获得更低延迟;其次在推理端启用 FP16(与训练 AMP 一致),并将输入尺寸与 batch 设为固定值以减少动态 shape 带来的调度开销;最后在系统 UI 中暴露 Conf/IoU 与输入分辨率的调节入口,使用户可以在“精度更高”与“速度更快”之间进行可控取舍。若后续面向更弱算力设备(如 CPU 或低端 GPU),再进一步考虑结构化剪枝与 INT8 量化;但量化前必须以验证集重新标定并复测 m A P mAP mAP,否则容易在小目标与相近类别(如鸟与背景枝叶)上出现明显退化。
5. 实验与结果分析
本节实验围绕“精度—速度—规模”三条主线展开:在同一数据集划分(Train/Val/Test=1284/321/321)与统一输入尺寸(默认 640 × 640 640\times640 640×640)下,对 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n 八种轻量模型进行对比;同时在更高容量配置上,对 YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s 进行对比。推理端记录 Pre/Inf/Post 三段耗时,并将端到端时延近似为 T = T pre + T inf + T post T = T_{\text{pre}}+T_{\text{inf}}+T_{\text{post}} T=Tpre+Tinf+Tpost,以 FPS ≈ 1000 / T \text{FPS}\approx 1000/T FPS≈1000/T 估算单帧吞吐能力。所有速度数据均来自 NVIDIA GeForce RTX 3070 Laptop GPU(8GB) 的同一测试环境。
评价指标方面,本文采用 Precision、Recall、F1 与 mAP 作为主指标,其中
Precision = T P T P + F P , Recall = T P T P + F N , F1 = 2 P R P + R . \text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN},\qquad \text{F1}=\frac{2PR}{P+R}. Precision=TP+FPTP,Recall=TP+FNTP,F1=P+R2PR.
mAP50 表示 IoU=0.5 条件下各类别 AP 的均值,mAP50-95 表示 IoU 从 0.5 到 0.95(步长 0.05)的平均,是更严格的定位与分类综合指标。由于动物检测场景中“小目标+遮挡”较多,mAP50-95 往往比 mAP50 更能反映模型在边界框回归与尺度泛化方面的真实差异。
从训练收敛性看,代表性训练曲线如 results.png 所示:train 侧的 box/cls/dfl loss 随 epoch 持续下降且后期趋于平稳;val loss 虽存在一定随机波动,但整体不出现持续反弹,说明训练过程未表现出明显的发散或严重过拟合。与之对应,Precision、Recall 及 mAP 指标在前 20–40 个 epoch 内快速爬升,随后进入缓慢增益区间,约在 90–110 epoch 后逐步饱和,这与“中等规模数据集+预训练迁移”的常见收敛形态一致。该现象也意味着,若以部署为目标,后期可通过早停或缩短训练轮次获取更高的性价比;若以极致精度为目标,则应保留末期的增强退火与精修阶段来稳定定位质量。
5.1 n 型轻量模型对比(面向高帧率交互)
n 型模型的总体对比如下表所示(表中 FPS 为由端到端时延估算的理论值,便于直观比较实时性):
| Model | Params(M) | FLOPs(G) | Total(ms) | FPS | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.60 | 7.70 | 10.94 | 91.4 | 0.734 | 0.678 | 0.705 | 0.736 | 0.503 |
| YOLOv6n | 4.30 | 11.10 | 10.34 | 96.7 | 0.696 | 0.476 | 0.565 | 0.542 | 0.355 |
| YOLOv7-tiny | 6.20 | 13.80 | 21.08 | 47.4 | 0.609 | 0.453 | 0.520 | 0.467 | 0.236 |
| YOLOv8n | 3.20 | 8.70 | 10.17 | 98.3 | 0.883 | 0.623 | 0.730 | 0.777 | 0.552 |
| YOLOv9t | 2.00 | 7.70 | 19.67 | 50.8 | 0.761 | 0.678 | 0.717 | 0.744 | 0.543 |
| YOLOv10n | 2.30 | 6.70 | 13.95 | 71.7 | 0.769 | 0.609 | 0.680 | 0.680 | 0.481 |
| YOLOv11n | 2.60 | 6.50 | 12.97 | 77.1 | 0.848 | 0.655 | 0.739 | 0.773 | 0.562 |
| YOLOv12n | 2.60 | 6.50 | 15.75 | 63.5 | 0.833 | 0.671 | 0.743 | 0.775 | 0.561 |

结合 Animals_n_type_comparison.png 可见,n 型中 YOLOv12n 的 F1 最高(0.743),而 YOLOv8n 的 mAP50 最高(0.777),两者反映了不同的优势侧重点:YOLOv8n 以极高 Precision(0.883)取得较强的误检控制能力,适合对误报较敏感的场景;YOLOv12n 则以更高 Recall(0.671)与更均衡的 Precision-Recall 配比提升 F1,意味着在同等阈值下更不容易漏检。进一步观察更严格的 mAP50-95,YOLOv11n 以 0.562 略高于 YOLOv12n(0.561),提示其在高 IoU 区间的定位质量略占优势;从工程角度看,二者 FLOPs 同为 6.5G,但 YOLOv12n 的推理耗时更高(InfTime 12.47ms),说明算子形态与框架实现效率会显著影响真实性能,参数量并不能直接决定延迟。
从训练动态角度,n 型 mAP50 随 epoch 的爬升曲线如 Animals_n_type_metrics_mAP50(B).png 所示,YOLOv8n/YOLOv11n/YOLOv12n 在中后期曲线更平滑、上限更高,而 YOLOv10n 与 YOLOv6n 的收敛上限偏低。
平均 PR 曲线如 Animals_n_type_pr_curve.png 所示,YOLOv8n、YOLOv12n、YOLOv11n 的曲线在中高召回区仍能保持较高精度,曲线包络更靠右上角;YOLOv6n 与 YOLOv7-tiny 的精度随召回提升衰减更快,体现出在复杂背景与尺度变化下的可分性不足。综合精度与实时性,若系统默认追求“高帧率且精度不弱”,老思更倾向将 YOLOv8n 作为实时交互的首选;若业务更关心漏检成本(例如野外监测中的稀有动物出现),则 YOLOv12n/YOLOv11n 更具吸引力。
5.2 s 型模型对比(面向更高上限的离线/准实时)
s 型模型对比如下表所示:
| Model | Params(M) | FLOPs(G) | Total(ms) | FPS | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.10 | 24.00 | 12.24 | 81.7 | 0.813 | 0.682 | 0.742 | 0.760 | 0.530 |
| YOLOv6s | 17.20 | 44.20 | 12.26 | 81.6 | 0.638 | 0.574 | 0.605 | 0.578 | 0.375 |
| YOLOv7 | 36.90 | 104.70 | 29.52 | 33.9 | 0.827 | 0.739 | 0.781 | 0.803 | 0.593 |
| YOLOv8s | 11.20 | 28.60 | 11.39 | 87.8 | 0.783 | 0.654 | 0.712 | 0.756 | 0.546 |
| YOLOv9s | 7.20 | 26.70 | 22.17 | 45.1 | 0.782 | 0.731 | 0.756 | 0.785 | 0.600 |
| YOLOv10s | 7.20 | 21.60 | 14.19 | 70.5 | 0.810 | 0.653 | 0.723 | 0.751 | 0.545 |
| YOLOv11s | 9.40 | 21.50 | 13.47 | 74.2 | 0.780 | 0.668 | 0.720 | 0.778 | 0.580 |
| YOLOv12s | 9.30 | 21.40 | 16.74 | 59.7 | 0.837 | 0.659 | 0.737 | 0.781 | 0.561 |

结合 Animals_s_type_comparison.png 可见,YOLOv7 在 F1(0.781)与 mAP50(0.803)上均给出最高上限,但其代价是 Params 36.9M、FLOPs 104.7G 且 InfTime 23.62ms,属于“精度换算力”的典型取向,更适合离线批处理或算力充裕的端侧。若以 mAP50-95 为主目标,YOLOv9s 取得 0.600 的最高值,这通常意味着更强的高 IoU 定位能力与更稳定的框回归;然而其推理时延较大(InfTime 18.66ms),对实时性更敏感的应用需要谨慎。若在“速度与精度”之间取折中,YOLOv11s 的端到端时延 13.47ms(约 74 FPS),同时 mAP50-95 达到 0.580,呈现出更均衡的部署性;YOLOv12s 具备最高 Precision(0.837),但 Recall 不占优势,使其更像“偏保守”的检测器,适合对误检敏感且允许少量漏检的场景。
从曲线视角看,s 型 mAP50 随 epoch 的变化如 Animals_s_type_metrics_mAP50(B).png 所示,YOLOv9s 在中后期更容易维持较高平台,YOLOv11s/YOLOv12s 的曲线则相对平滑且波动较小;
平均 PR 曲线如 Animals_s_type_pr_curve.png 所示,YOLOv9s 与 YOLOv12s 的曲线在中高召回区域精度保持更好,反映出对复杂背景的鲁棒性更强。总体而言,若系统面向“准实时+更高精度上限”的模式,老思更倾向把 YOLOv11s 作为默认模型,把 YOLOv9s/YOLOv7 作为“精度优先”的可选项交由界面切换。
5.3 误差来源与可解释性分析

混淆矩阵(confusion_matrix_normalized.png)揭示了类别间与背景相关的主要误差形态:cat 的对角项最高(约 0.83),说明其外观与场景特征相对稳定;dog 的对角项相对较低(约 0.61),并且在“background 行”上占比更高,反映出漏检在 dog 类上更突出。对动物检测任务而言,这通常由两类因素叠加导致:其一是目标尺度更小或遮挡更频繁,使得有效像素不足以支撑稳定分类;其二是背景纹理(草地、栅栏、家具等)与动物局部纹理相近,导致匹配不稳定。矩阵最后一列(true background)中某些类别的值偏大,意味着对应类别更容易产生误检,提示后续数据清洗可针对这类“高误检背景”补充负样本或进行更具针对性的增强。
阈值选择方面,F1-Confidence 曲线如 F1_curve.png 所示,整体最优点出现在 conf ≈ 0.525 \text{conf}\approx 0.525 conf≈0.525 且全类别 F1 约为 0.74,这为系统界面默认阈值提供了直接依据:将 conf 默认设在 0.5 左右,既接近最优点,又给用户留出向两侧调整的空间。
更细粒度的 PR 曲线如 PR_curve.png 所示,各类别 AP 差异明显(例如 cat、horse 的 AP 更高,而 cow 相对偏低),这意味着在实际部署时可以进一步引入“按类阈值”或“代价敏感阈值”的策略:对稀有或漏检代价高的类别下调 conf 以提高召回,对误检代价高的类别上调 conf 以抑制误报,从而让系统在不同业务约束下更可控。
6.系统设计与实现
6.1 系统设计思路
本系统面向“动物目标检测与识别”的工程落地,老思在架构上优先保证推理链路的稳定性与界面交互的可控性:以 PySide6 的主线程负责 UI 渲染与用户输入,以独立的处理层完成模型加载、推理与后处理,二者通过 Qt 信号槽解耦通信,从而避免耗时推理阻塞界面刷新。考虑到输入源存在图片、视频与摄像头三种形态,系统将“帧获取—预处理—推理—后处理—可视化”抽象为统一流水线,对静态图片走单次推理路径,对视频/摄像头走循环处理路径,并在主控制层维护播放状态、帧率节流与资源释放策略,使得交互行为(暂停、继续、跳帧、停止)不会破坏推理线程的状态机一致性。
分层设计上,界面层由 Ui_MainWindow 承载控件布局与样式(包括主题切换、图标与背景替换、表格与日志区刷新),控制层由 MainWindow 统一调度槽函数与状态管理(输入源切换、Conf/IoU 调参、模型选择、结果导出等),处理层由 Detector 完成权重加载、前向推理与 NMS 等后处理,并输出检测框、类别名(含中英映射)、置信度与统计信息。为了让推理结果可追溯且可复用,系统将“检测记录、导出文件索引、用户偏好设置(主题、阈值、最近模型等)”落盘至 SQLite,并在不同用户之间隔离存储空间,使实验阶段的数据分析与实际使用阶段的历史检索都具备一致的数据语义。
在交互闭环上,系统把“用户操作”视作对推理流水线的在线约束:当用户调整阈值或切换模型时,控制层更新推理配置并触发处理层热切换;当用户导出结果时,控制层组织图像/视频渲染帧、结构化检测结果与统计摘要写入文件与数据库;当用户更换主题或界面元素时,仅影响界面渲染与配置存储,不影响推理线程,从而实现“界面可变、推理可控”的工程目标。

6.2 登录与账户管理 — 流程图

登录与账户管理被设计为主检测流程的“前置门控”与“状态容器”:用户完成注册或登录后,系统从 SQLite 中加载其专属配置(例如主题、默认 Conf/IoU、最近一次选择的模型与输入源)以及历史检测记录,使得进入主界面时即可恢复到可复现的工作状态;在检测过程中产生的结果与导出文件索引会按用户写入数据库,保证多用户共享同一套程序时仍然具备清晰的数据边界与可追溯性;当用户修改头像或密码时,仅更新账户表与配置表,不干扰推理线程与 UI 事件循环,从而实现“账户体系稳定运行、检测链路持续响应”的体验一致性,而注销/切换账号则通过清理当前会话状态并回到登录界面完成闭环衔接。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
功能效果展示视频:动物识别系统YOLOv12-v11至v5(八个模型,含示例论文)合集(完整Python项目演示,UI界面,含论文等)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8.参考文献
1 NOROUZZADEH M S, NGUYEN A, KOSMALA M, et al. Automatically identifying, counting, and describing wild animals in camera-trap images with deep learning[J]. Proceedings of the National Academy of Sciences of the United States of America, 2018, 115(25): E5716-E5725. doi:10.1073/pnas.1719367115.
2 SWANSON A B, KOSMALA M, LINTOTT C J, et al. Snapshot Serengeti, high-frequency annotated camera trap images of 40 mammalian species in an African savanna[J]. Scientific Data, 2015, 2: 150026. doi:10.1038/sdata.2015.26.
3 BEERY S, COLE E, GJOKA A. The iWildCam 2020 Competition Dataset[EB/OL]. arXiv:2004.10340, 2020.
4 SU J-C, MAJI S. The Semi-Supervised iNaturalist Challenge at the FGVC8 Workshop[EB/OL]. arXiv:2106.01364, 2021.
5 BEERY S, VAN HORN G, PERONA P. Recognition in Terra Incognita[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018.
6 LEORNA S, BRINKMAN T. Human vs. machine: Detecting wildlife in camera trap images[J]. Ecological Informatics, 2022, 72: 101876. doi:10.1016/j.ecoinf.2022.101876.
7 吴赛赛, 吴建寨, 程国栋, 等. 基于姿态估计的动物行为识别研究进展[J]. 中国农业大学学报, 2023. doi:10.11841/j.issn.1007-4333.2023.06.03.
8 REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016.
9 REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[C]//Advances in Neural Information Processing Systems (NeurIPS). 2015.
10 CARION N, MASSA F, SYNNAEVE G, et al. End-to-End Object Detection with Transformers[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2020.
11 邵延华, 张铎, 楚红雨, 等. 基于深度学习的YOLO目标检测综述[J]. 电子与信息学报, 2022, 44(0): 1-12. doi:10.11999/JEIT210790.
12 WANG C-Y, BOCHKOVSKIY A, LIAO H-Y M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). 2023.
13 ZHAO Y, LV W, XU S, et al. DETRs Beat YOLOs on Real-time Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). 2024.
14 WANG C-Y, YEH I-H, LIAO H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2024.
[15] WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)