YOLOv5至YOLOv12升级:犬种识别软件的设计与实现(完整代码+界面+数据集项目)
摘要:犬种识别是宠物管理、动物救助与智慧养宠场景中的关键感知环节,但在真实环境下易受光照变化、遮挡、姿态差异、幼犬外观相似以及混种干扰等因素影响,导致传统手工特征方法鲁棒性不足。本文面向“犬种自动识别”需求,设计并实现了一套基于深度学习的犬种识别软件:以卷积神经网络与轻量化主干为核心,结合迁移学习与数据增强提升小样本与复杂背景下的泛化能力;推理阶段提供Top-K候选犬种与置信度输出,并支持阈值调节、结果可视化与样本回溯。软件层面实现图片/视频/摄像头多输入源识别、识别记录与统计分析、模型权重热更新与离线部署等功能,形成从数据到模型、从推理到交互呈现的完整闭环,为犬种识别应用落地提供可复用的软件化范式。
文章目录
功能效果展示视频:犬种识别软件YOLOv12-v11至v5(八个模型,含示例论文)合集(完整Python项目演示,UI界面,含论文等)
1.前言综述
犬种识别软件在宠物健康管理、遗传风险提示、走失找回与收容救助等场景中具有直接应用价值,其核心问题可表述为“在自然拍摄条件下对高度相似的犬种亚类进行可靠判别”,而面向犬脸图像的迁移学习方案已被证明能在公开数据上形成可用的端到端识别基线1。 (Springer)围绕该任务,Stanford Dogs 等公开基准为细粒度犬种识别提供了统一评测入口,使研究能够在多犬种、跨姿态与跨拍摄条件的设置下进行可复现对比2。 (MIT CSAIL)与此同时,Oxford-IIIT Pet 数据集在宠物“品种级”标签之外还给出了头部 ROI 与像素级分割标注,为“先定位再分类”以及鲁棒性评估提供了更细颗粒度的监督信息3。 (Oxford Robotics)面向更复杂的真实场景,Tsinghua Dogs 数据集以更高的生活化采集比例覆盖 130 个犬种,并同时标注全身与头部框,从数据分布层面显著强化了同类内姿态、尺度与背景变化的多样性4。 (Springer)从方法论上看,犬种识别属于细粒度图像分析的典型实例,其困难主要来自“类间差异极小、类内差异极大”这一结构性矛盾,且该矛盾会被遮挡、视角变化与背景干扰进一步放大5。 (Curis)
深度卷积网络在 ImageNet 上的突破推动视觉表征从手工特征转向数据驱动学习,使细粒度任务能够在统一特征空间内讨论判别性局部线索的自动提取6。 (NeurIPS Papers)残差学习通过显式的恒等映射旁路缓解深层网络的退化问题,因而成为细粒度分类中常用的高容量主干,为后续的局部建模与注意力机制提供稳定的特征底座7。 (CVF Open Access)在卷积主导范式之外,Vision Transformer 以图像块序列为输入并通过自注意力建模全局依赖,为细粒度识别引入了新的表征形态与可解释的注意力线索8。 (ICLR)进一步地,Swin Transformer 以移位窗口构造层次化特征并降低注意力复杂度,为在高分辨率、强背景干扰的细粒度场景中兼顾精度与效率提供了工程可落地的结构选项9。 (CVF Open Access)在细粒度表征层面,双线性 CNN 通过对两路卷积特征做外积并池化来编码二阶交互,从而在无需部件标注的前提下增强对纹理与局部差别的敏感性,这一思想仍影响着后续多分支与二阶池化模型的设计10。 (CVF Open Access)
国内研究近年来开始将知识蒸馏与目标区域选取结合,以较低的训练代价引导模型聚焦更具区分性的局部区域,从而提升对易混淆犬种的判别能力并改善可解释性11。 (Aroc Magazine)国际上,Internal Ensemble Learning Transformer 通过“网络内部集成”的方式强化细粒度可分性,在 IEEE TMM 的实验设置中展示了对精细类别差异的稳定增益12。 (CoLab)当真实应用需要覆盖长尾犬种或小样本新增类别时,背景抑制与前景对齐框架尝试显式削弱杂乱背景与姿态变化带来的特征不一致性,为“少样本细粒度识别”提供了可迁移的建模思路13。 (CoLab)在系统工程层面,目标检测框架 YOLO 将检测建模为单阶段回归并具备实时性优势,使“先定位犬体/犬头、再进行品种判别”的两阶段流水线能够在复杂背景与多目标干扰下保持可用的交互体验14。 (CV Foundation)综上,现有综述指出 ViT 系方法在细粒度分类中仍面临标注成本高、背景敏感与局部细节建模不足等问题,这也为本文(老思/博主)在软件实现中强调数据构建、区域级建模与可视化交互的必要性提供了依据15。 (CEAJ)
基于上述研究脉络,本文将以“可部署的犬种识别软件”为目标:一方面在公开数据与自建数据上对比主流 CNN/Transformer 族模型的识别性能与代价,另一方面给出面向实际使用的推理流程与界面交互设计,使模型能力以稳定、可复现的方式落到具体场景中。本文还将整理训练与推理所需的关键工程细节(数据划分、增广、阈值策略与错误案例分析),并提供可直接复用的代码组织与资源说明,便于读者在自己的数据上复现实验并进行二次开发。
主要功能演示:
登录注册部分主要用于将识别能力以“可追溯、可个性化”的方式落到具体使用者上:登录界面支持账号密码校验、错误提示与输入约束(空值、长度、格式),注册流程包含重复用户名检测与密码强度提示,并将用户信息与偏好配置写入本地数据库以便下次启动自动恢复。老思在演示时通常会先注册一个新账号,再用该账号登录进入主界面,便于直观看到“用户配置加载、历史记录拉取、权限状态更新”等联动效果。
页面布局强调“识别任务的操作闭环”,主窗口采用左侧功能导航与右侧内容区的典型布局:左侧聚合输入源选择(图片/视频/摄像头)、推理控制(开始/暂停/停止)、结果导出等高频操作;右侧以大视图显示原图与叠加结果(类别名、置信度、关键提示),并在下方或侧边提供结果表格与统计区域(Top-K、时间戳、来源、置信度排序)。这种布局能减少跳转成本,让用户在一个视窗内完成“选择输入—推理—核对—保存/导出”的完整流程。
模型选择部分用于平衡“精度、速度与资源占用”的差异化需求:界面提供模型下拉框或卡片式选择(如轻量模型、标准模型、增强模型),切换后自动完成权重加载与推理后端初始化,并在状态栏显示当前模型名称、输入尺寸、推理耗时与设备信息(CPU/GPU)。为避免误操作,模型切换通常在停止推理状态下执行,若正在推理则弹出提示并引导用户先暂停/停止,从交互层面保证状态一致性与结果可复现。
主题修改部分服务于长期使用下的可读性与个性化偏好:提供浅色/深色主题与强调色切换,联动调整按钮、表格、字体与检测框标注的对比度,确保在不同光照环境下仍能清晰辨识关键结果。主题配置写入本地用户配置文件或数据库,下一次启动自动恢复;同时在演示中建议展示“即时生效”的效果,例如切换为深色主题后,主画布背景、侧栏与状态栏配色同步更新,且不影响已加载模型与当前结果展示。
2.数据集介绍
本项目面向犬种识别的实际使用场景,将任务形式化为“犬体目标检测与犬种类别判别”的统一建模:在同一张图像中允许出现一只或多只犬只目标,每个目标以边界框标注其空间位置,并赋予犬种类别标签。数据集总计 6,975 张图像,按训练/验证/测试划分为 6,087/571/317 张,其中训练集占比较高(约 87.27%),主要用于充分学习细粒度外观差异;验证集与测试集用于超参数选择与泛化评估。犬种类别共 13 类,覆盖秋田犬、哈士奇、金毛、德国牧羊犬、罗威纳等常见犬种,并在标注命名上沿用工程侧类别字符串(例如柴犬标注为 Shibu Inu)。从训练批次可视化结果(train_batch1)可以看到,样本同时包含全身、半身与局部特写等多尺度目标,且背景复杂度较高;验证集推理可视化(val_batch2_pred)中也存在人物、文字与杂物干扰,意味着模型需要对“犬体区域”形成稳定聚焦,才能在易混类别(如秋田犬与柴犬、罗威纳与黑背等)上维持可靠判别。
在数据构建与预处理方面,数据首先经过人工筛除低清晰度、强遮挡、重复近似帧等样本,并统一图像编码与颜色通道以避免训练时的分布漂移;标注采用 YOLO 系列通用的归一化 TXT 格式,便于与 Ultralytics/YOLOv5–YOLOv12 等训练管线直接对接。类别分布与目标框几何统计如 labels.jpg 与 labels_correlogram 所示:不同犬种的实例数总体处于同一量级(大致在千级区间),但仍存在一定长尾差异;目标中心点在图像平面上呈较为分散的覆盖,宽高分布以中等尺度为主并伴随明显的尺度变化,这与“既有近景特写也有远景多目标”的采集方式一致。该分布特征决定了训练阶段需要同时兼顾细粒度纹理线索与尺度鲁棒性,后续实验中也更有必要在推理端提供可解释的可视化与置信度输出,辅助用户理解模型在复杂背景下的判别依据。
📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 6,087 张 (87.27%) |
| 验证集 (Val) | 571 张 (8.19%) | |
| 测试集 (Test) | 317 张 (4.54%) | |
| 总计 (Total) | 6,975 张 | |
| 类别清单 | Class ID: 0 | Akita(秋田犬) |
| Class ID: 1 | Australian Shepard(澳大利亚牧羊犬) |
|
| Class ID: 2 | Basset Hound(巴赛特猎犬) |
|
| Class ID: 3 | Beagle(小猎犬) |
|
| Class ID: 4 | Cavalier King Charles Spaniel(骑士查理王猎犬) |
|
| Class ID: 5 | Corgi(柯基犬) |
|
| Class ID: 6 | Dachshund(腊肠犬) |
|
| Class ID: 7 | German Shepherd(德国牧羊犬) |
|
| Class ID: 8 | Golden Retriever(金毛猎犬) |
|
| Class ID: 9 | Husky(哈士奇) |
|
| Class ID: 10 | Pitbull(斗牛犬) |
|
| Class ID: 11 | Rottweiler(罗威纳犬) |
|
| Class ID: 12 | Shibu Inu(柴犬) |
|
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 公开图像/实景采集混合(手动清洗) |
3. 模型设计与实现
犬种识别在工程落地时常见两类建模路线:其一是“单犬图像分类”,输入整图直接输出犬种类别;其二是“先定位再判别”,先在图像中检测犬体位置,再对每个检测框输出犬种类别。考虑到本项目数据以 YOLO 格式给出了犬体边界框与 13 类犬种标签,且实际使用中同一画面可能出现多只犬只、存在人物与复杂背景干扰,老思在模型侧采用目标检测范式,将“犬体定位”和“犬种判别”统一为单阶段检测任务:对每个候选位置同时回归边界框并预测犬种类别,从而在推理阶段天然支持多目标与多尺度场景。该建模方式也便于与后续 PySide6 界面的实时显示、批量统计与结果导出形成一致的数据接口(检测框、类别、置信度)。
在基线模型选择上,犬种细粒度差异往往集中在局部纹理与关键部位(耳形、吻部、毛色分区等),传统分类网络如 ResNet、MobileNet、EfficientNet 的优势在于分类表征成熟、部署形态多样;但它们通常假设“单主体占据主要视野”,对背景干扰与多目标并不友好。相比之下,YOLO 系列将检测建模为单次前向的密集预测,通过多尺度特征金字塔对不同尺寸目标保持稳定召回,因此更适合作为“犬体定位 + 犬种识别”的统一框架。本文默认采用 YOLOv12n 作为主模型:其核心思想是在保持实时性的前提下,引入以注意力为中心的结构设计,用更强的全局依赖建模改善复杂背景下的目标感知与细粒度判别。YOLOv12 在 Ultralytics 实现中强调 Area Attention、R-ELAN 聚合以及面向效率的注意力结构优化,并支持可选的 FlashAttention 以降低显存访问开销。(Ultralytics Docs)
从网络结构看,YOLO 系列通常由 Backbone、Neck 与 Head 三段组成:Backbone 负责分层特征提取,Neck 进行跨层多尺度融合,Head 在融合特征上输出分类与回归结果。以经典 YOLOv5 为例,其骨干采用 CSP 变体提取多层语义特征,Neck 以 SPPF 与 PAN/FPN 思想增强感受野并融合 P3–P5 等多尺度特征,Head 负责产生各尺度预测。(Ultralytics Docs) 在犬种数据中,目标尺度跨度很大(全身、半身与局部特写并存),因此 Neck 的多尺度融合对召回率影响明显;而 YOLOv12 的注意力模块则进一步缓解“背景纹理强、犬体局部细节弱”时的特征竞争,使模型更倾向于在犬体区域形成一致的显著响应。(Ultralytics Docs)
检测头的任务建模可以概括为对每个候选位置输出边界框 b ^ \hat{b} b^、目标存在置信度 o ^ \hat{o} o^ 与犬种类别概率 p ^ \hat{\mathbf{p}} p^(维度为 13)。训练时采用多项损失的加权和来约束几何定位与类别判别,常用的形式为
L = λ box L ∗ IoU + λ ∗ obj L ∗ obj + λ ∗ cls L ∗ cls , \mathcal{L}=\lambda_{\text{box}}\mathcal{L}*{\text{IoU}}+\lambda*{\text{obj}}\mathcal{L}*{\text{obj}}+\lambda*{\text{cls}}\mathcal{L}*{\text{cls}}, L=λboxL∗IoU+λ∗objL∗obj+λ∗clsL∗cls,
其中 L ∗ IoU \mathcal{L}*{\text{IoU}} L∗IoU 通常选用 IoU 系列回归损失(如 CIoU/GIoU 等)以提升框的几何一致性, L ∗ obj \mathcal{L}*{\text{obj}} L∗obj 用于区分前景与背景, L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 约束犬种分类的交叉熵或二元交叉熵。针对细粒度类别容易过拟合且类间差异极小的特点,训练时可引入标签平滑以降低过度自信带来的泛化风险,其常用写法为
y ~ ∗ k = ( 1 − ε ) y k + ε / K , \tilde{y}*k=(1-\varepsilon)y_k+\varepsilon/K, y~∗k=(1−ε)yk+ε/K,
其中 K K K 为类别数、 ε \varepsilon ε 为平滑系数。对于长尾或难例占比偏高的犬种,还可以将 L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 替换为 focal loss 类的形式以抑制易例梯度、强调难例学习(老思在后续实验部分会结合类别分布与混淆矩阵判断是否必要)。
实现层面,模型训练与推理基于 Ultralytics 的统一接口完成。工程中将类别数固定为 13,并在数据 YAML 中声明类名与路径;推理阶段输出结构化结果(框坐标、类别 ID、置信度),便于上层 UI 做渲染、统计与筛选。下面给出最小化的加载示例(训练细节与超参数将在第 4 节展开):
from ultralytics import YOLO
# 载入 COCO 预训练权重并迁移到犬种检测(13 类)
model = YOLO("yolo12n.pt")
# 推理:输入可以是图片路径、视频流或摄像头索引
results = model("demo.jpg", imgsz=640, conf=0.25, iou=0.7)
在正则化与超参数层面,检测网络普遍依赖 Batch Normalization 稳定训练,并通过权重衰减、EMA(指数滑动平均)等手段改善泛化;而对犬种这类细粒度任务,数据增强与输入分辨率往往比显式 Dropout 更关键,因为模型需要在不同姿态、遮挡与光照下学到稳定的局部判别线索。老思在后续训练策略部分将结合本数据集的目标尺度分布与类别实例数,给出更贴近工程复现的增强组合与学习率日程设置。
4. 训练策略与模型优化
犬种识别在工程侧更接近“细粒度检测”,训练时既要学会稳定定位犬体,又要在局部纹理与姿态变化中完成类别判别。老思在实现中以 Ultralytics 训练框架为主线,采用单机单卡 RTX 4090(CUDA 环境)完成端到端训练,并将训练过程固定为“数据集读取与缓存 → 在线增强 → 前向推理 → 损失回传与参数更新 → EMA 权重滑动平均 → 验证集评估与早停判断”的闭环流程。为了让验证结果可复现,训练前会固定随机种子并关闭不必要的非确定性算子;同时在每个 epoch 结束时记录 mAP、Precision/Recall、F1 与损失曲线,用于后续定位过拟合、欠拟合与类别混淆的来源。
迁移学习是本任务收敛质量的关键。由于 6,975 张图像的规模不足以从头学习出稳定的通用视觉表征,本文默认加载 COCO 等通用数据集预训练权重,在前期以较小的学习率对网络进行“温启动”,使检测头快速适配 13 类犬种输出空间,再逐步放开骨干网络的可训练层以提升对犬种局部差异的表达能力。学习率调度采用余弦衰减并配合 warmup,避免一开始梯度过大破坏预训练特征;其典型形式可写为
l r ( t ) = l r m i n + 1 2 ( l r 0 − l r m i n ) ( 1 + cos π t T ) , lr(t)=lr_{min}+\frac{1}{2}(lr_{0}-lr_{min})\left(1+\cos\frac{\pi t}{T}\right), lr(t)=lrmin+21(lr0−lrmin)(1+cosTπt),
其中 T T T 为总训练步数, l r 0 lr_0 lr0 与 l r m i n lr_{min} lrmin 分别对应初始与末端学习率。与之配套,EMA(指数滑动平均)用于减小参数更新噪声并提高验证阶段的稳定性,其更新可表示为
θ ema ← α θ ema + ( 1 − α ) θ , \theta_{\text{ema}}\leftarrow \alpha\theta_{\text{ema}}+(1-\alpha)\theta, θema←αθema+(1−α)θ,
α \alpha α 通常取接近 1 的系数,使评估权重更平滑。
数据增强与正则化策略主要围绕“尺度鲁棒性”和“背景抑制”展开。犬体目标在数据集中既包含全身远景,也包含近景特写,训练阶段保持较高概率的 Mosaic,有助于提升对小目标与多目标场景的召回;但 Mosaic 在训练后期可能引入与真实分布不一致的拼接边界,因此在收敛阶段按设定轮数关闭 Mosaic,使模型回到更接近真实采样的输入上做精细收敛。对于遮挡、光照与拍摄角度差异,常用的几何扰动与颜色扰动(随机尺度、随机平移、HSV 轻扰动)可以提升泛化;若后续在混淆矩阵中观察到易混犬种(例如秋田犬与柴犬)误差集中,老思更倾向于通过更高分辨率训练或适度的标签平滑来缓解“过度自信”,而不是盲目扩大增强幅度,以免破坏细粒度纹理线索。
推理端优化遵循“精度优先可解释、速度按需压缩”的原则。训练完成后可直接导出 ONNX 作为跨平台部署接口,在桌面端进一步使用 TensorRT 的 FP16 加速以获得更低时延;若目标是嵌入式或低功耗设备,则再考虑 INT8 量化(需要用验证集或专门校准集做激活分布校准)。在 UI 实时检测场景中,为降低抖动与误报,建议将置信度阈值与 NMS IoU 阈值做成可调参数,并在输出侧保留 Top-K 候选与置信度,便于用户理解模型在相似犬种之间的取舍依据。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最多训练轮数 | 120 |
| patience | 早停耐心(验证无提升则停止) | 50 |
| batch | 每次迭代的总批大小 | 16 |
| imgsz | 网络输入分辨率(方形) | 640 |
| pretrained | 是否加载预训练权重 | true |
| optimizer | 优化器类型(auto 由框架选择) | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比(余弦/多段下降的底值) | 0.01 |
| momentum | 动量/一阶动量系数 | 0.937 |
| weight_decay | 权重衰减(L2 正则) | 0.0005 |
| warmup_epochs | 学习率预热轮数 | 3.0 |
| mosaic | Mosaic 数据增强强度/概率 | 1.0 |
| close_mosaic | 训练后期关闭 Mosaic 的轮数 | 10 |
如果你希望这节与工程完全一致,给老思补充三项信息我就能把文字与参数“对齐到可复现”:训练用的具体模型(yolo12n/yolo11n 等)、是否启用 AMP(混合精度)与导出格式(ONNX/TensorRT/FP16/INT8)。
5. 实验与结果分析
本节以同一犬种检测数据集(13 类,输入尺寸 640×640)为评测对象,围绕“精度—速度—复杂度”三者之间的权衡,对 YOLO 家族的不同版本进行了对比实验。实验分为两组:其一为 n/t/tiny 等轻量级模型(YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n),其二为 s 级别模型(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)。所有模型在统一训练策略下训练至 120 epoch,并在同一硬件平台 NVIDIA GeForce RTX 3070 Laptop GPU(8GB)上统计端到端时延,其中 PreTime/InfTime/PostTime 分别对应预处理、网络前向与后处理开销。老思在这里强调“端到端时延”而非仅推理时延,是因为 UI 实时显示与结果导出场景中,预处理与 NMS/筛选同样会显著影响交互流畅度。
度量指标方面,Precision 与 Recall 用于衡量误报与漏检,定义为
Precision = T P T P + F P , Recall = T P T P + F N , \text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN}, Precision=TP+FPTP,Recall=TP+FNTP,
其中 (TP,FP,FN) 分别为真阳性、假阳性与假阴性;综合指标 F1 定义为
F1 = 2 ⋅ Precision ⋅ Recall Precision + Recall . \text{F1}=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}}. F1=Precision+Recall2⋅Precision⋅Recall.
检测性能采用 mAP@0.5 与 mAP@0.5:0.95(步长 0.05)衡量,前者对定位精度要求较宽松,更接近“是否检出目标”,后者覆盖更严格的 IoU 阈值范围,更能体现边界框回归质量。PR 曲线与混淆矩阵用于观察类别级差异与易混淆模式,F1-Confidence 曲线则用于选择部署时的默认置信度阈值。
在整体训练动态上,训练过程曲线显示 box/cls/dfl 损失随 epoch 平滑下降,precision、recall 与 mAP 指标在前期快速上升并在中后期趋于平台,验证集曲线与训练集趋势一致,未出现明显“训练继续变好而验证恶化”的拐点,这意味着当前的数据增强强度与早停策略能够在收敛速度与泛化之间取得相对稳定的平衡。
训练过程曲线图(results.png)
进一步观察类别级 PR 曲线可以发现,大多数犬种的曲线在高召回区间仍保持较高 precision,说明模型在“背景复杂、尺度变化大”的采样条件下仍能稳定锁定犬体区域并完成细粒度分类;但仍存在少数类别在接近满召回时 precision 下降更明显,这通常对应“外观形态跨度大”或“与其他犬种局部纹理相似”的类别。图中的类别 AP 显示 Golden Retriever 的 AP 相对偏低(0.935),与混淆矩阵中其对角线占比偏低(约 0.90)相互印证,提示该类更容易被相近毛色或相似体态的犬种吸收,或在遮挡、背光条件下被判为背景。
PR 曲线图(PR_curve.png)
归一化混淆矩阵图(confusion_matrix_normalized.png)
从部署阈值角度,F1-Confidence 曲线给出了一个非常直接的工程结论:当置信度阈值约为 0.557 时,全类别综合 F1 达到约 0.97 的峰值;阈值继续提高会带来误报下降,但漏检增长更快,从而使 F1 下滑。对面向用户的桌面端软件而言,老思更倾向于将默认 conf 设在该峰值附近,并在 UI 上开放滑块给用户按场景调整(如强遮挡视频可适当降低阈值以减少漏检,静态高清图可提高阈值以减少误报)。
F1-Confidence 曲线图(F1_curve.png)
(1)s 级模型对比:精度上限更高,但代价差异显著
s 级模型的定量结果如下表所示:
| Model | Params(M) | FLOPs(G) | Pre(ms) | Inf(ms) | Post(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 0.9544 | 0.9721 | 0.9632 | 0.9761 | 0.7800 |
| YOLOv6s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 0.9686 | 0.9620 | 0.9653 | 0.9819 | 0.8488 |
| YOLOv7 | 36.9 | 104.7 | 2.44 | 23.62 | 3.46 | 0.9768 | 0.9848 | 0.9808 | 0.9935 | 0.8811 |
| YOLOv8s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 0.9703 | 0.9487 | 0.9594 | 0.9786 | 0.8065 |
| YOLOv9s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 0.9772 | 0.9706 | 0.9739 | 0.9839 | 0.8421 |
| YOLOv10s | 7.2 | 21.6 | 2.21 | 11.38 | 0.60 | 0.9514 | 0.9426 | 0.9470 | 0.9775 | 0.8343 |
| YOLOv11s | 9.4 | 21.5 | 2.37 | 9.74 | 1.36 | 0.9678 | 0.9655 | 0.9666 | 0.9843 | 0.8311 |
| YOLOv12s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 0.9738 | 0.9604 | 0.9671 | 0.9836 | 0.8537 |
从精度上看,YOLOv7 在 Precision、Recall、F1、mAP50 与 mAP50-95 上均达到该组最优,尤其是 mAP50-95 提升更为突出,说明其不仅“检得出”,在更严格 IoU 阈值下的定位质量也更稳定。不过其推理时延与计算量显著更高:InfTime 达到 23.62ms,FLOPs 高达 104.7G,在桌面端实时检测(视频/摄像头)时容易成为帧率瓶颈。相对而言,YOLOv6s 与 YOLOv12s 在 mAP50-95 上也保持较强竞争力(分别为 0.8488 与 0.8537),但延迟开销明显更低,更适合作为“兼顾精度与实时性”的默认选项。值得注意的是,YOLOv10s 的 PostTime 极低(0.60ms),这在需要高频后处理、同时希望减轻 NMS 开销的场景中具有工程价值,但其 Precision/Recall 与 mAP 指标并未在本任务中体现同等优势,因此更像是“后处理友好型”而非“精度上限型”。
(2)n/t/tiny 级模型对比:更适合实时交互,但不同版本的时延结构差异更大
轻量级模型结果如下:
| Model | Params(M) | FLOPs(G) | Pre(ms) | Inf(ms) | Post(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 1.90 | 7.73 | 1.31 | 0.9547 | 0.9403 | 0.9474 | 0.9653 | 0.7208 |
| YOLOv6n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 0.9648 | 0.9228 | 0.9433 | 0.9666 | 0.7809 |
| YOLOv7-tiny | 6.2 | 13.8 | 2.28 | 14.74 | 4.06 | 0.9218 | 0.9292 | 0.9255 | 0.9433 | 0.6495 |
| YOLOv8n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 0.9680 | 0.9618 | 0.9649 | 0.9779 | 0.7778 |
| YOLOv9t | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 0.9650 | 0.9561 | 0.9606 | 0.9791 | 0.8191 |
| YOLOv10n | 2.3 | 6.7 | 2.08 | 11.24 | 0.63 | 0.9473 | 0.9365 | 0.9418 | 0.9720 | 0.7946 |
| YOLOv11n | 2.6 | 6.5 | 2.11 | 9.44 | 1.42 | 0.9591 | 0.9528 | 0.9559 | 0.9739 | 0.7715 |
| YOLOv12n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 0.9590 | 0.9451 | 0.9520 | 0.9729 | 0.7886 |
轻量级对比呈现出一个很典型的现象:不同版本的“参数量/FLOPs”并不能完全解释推理时延差异,InfTime 的波动更像是由算子实现、结构设计与后端优化路径共同决定。例如 YOLOv9t 在 mAP50-95 上达到该组最优(0.8191),说明其对定位质量更友好,但 InfTime 达到 16.51ms,使其在实时交互中不如 YOLOv8n、YOLOv6n 这类模型“顺滑”。如果以综合体验为目标,YOLOv8n 在 Precision、Recall 与 F1 上取得该组最优,同时保持较低时延,是更稳妥的默认部署模型;若更关注高 IoU 阈值下的定位质量(例如希望检测框更贴合犬体边界以便后续裁剪分析),则 YOLOv9t 的 mAP50-95 优势更有意义,但需要在帧率上做取舍。
为便于直观看到差异,F1 与 mAP50 的柱状对比以及 mAP50 随 epoch 的收敛曲线如下图所示:前者揭示不同模型的最终指标差距总体不大,但最优模型在 F1 与 mAP50 上通常能同时占优;后者显示各模型在训练前期收敛速度差异更明显,而后期增益趋于饱和,提示在 120 epoch 设置下继续增加训练轮数对最终指标的边际收益有限,更值得优先从“标注一致性、难例补充与输入分辨率”方向挖掘提升空间。
n 型模型 F1 与 mAP50 对比图(DogSeeker_n_type_comparison.png)
n 型模型 mAP50 收敛曲线图(DogSeeker_n_type_metrics_mAP50(B).png)
s 型模型 F1 与 mAP50 对比图(DogSeeker_s_type_comparison.png)
s 型模型 mAP50 收敛曲线图(DogSeeker_s_type_metrics_mAP50(B).png)
平均 PR 曲线图(DogSeeker_n_type_pr_curve.png;DogSeeker_s_type_pr_curve.png)
(3)误差来源与可落地优化方向
综合 PR 曲线、混淆矩阵与 mAP50-95 的相对偏低现象,可以将主要误差归结为两类:第一类是“定位误差占比偏高”,它在 mAP50 很高但 mAP50-95 明显回落时尤为典型,往往来自犬体边界标注松紧不一致、遮挡导致的框定义差异、以及 Mosaic/随机尺度引入的边界扰动;对这一类问题,优先建议在数据侧统一标注规范,并在训练后期更早关闭强几何增强、或提高输入分辨率以增强边界细节。第二类是“细粒度易混类别”,例如 Golden Retriever 等在类别内毛色与体态差异大、且与其他犬种局部纹理相近的类别更容易出现互相吸收;对这一类问题,更有效的路径通常是补充难例(相似犬种同框、背光、运动模糊)、引入更强的局部细节(更高分辨率或更细致的裁剪训练)、并在推理端利用 Top-K 候选与置信度分布为用户提供可解释的“备选答案”,而不是仅输出单一类别。
基于上述结果,若目标是桌面端实时检测并兼顾精度,老思更倾向于选择 YOLOv8n(轻量实时)或 YOLOv6s/YOLOv12s(更高精度但仍可控的时延);若目标是追求精度上限且允许更高计算开销,则 YOLOv7 在本任务上表现最强,可作为离线批处理或高精度模式的主力模型。
6.系统设计与实现
6.1 系统设计思路
本犬种识别软件以“检测推理闭环可控、界面交互低耦合、结果持久化可追溯”为核心设计目标,在桌面端将数据输入、模型推理、可视化呈现与统计导出整合为一致的工作流。系统以 Python 3.12 为运行时,界面层采用 PySide6 构建事件驱动的交互框架,推理侧以 YOLO 系列权重为主模型并允许动态切换,数据侧以 SQLite 作为轻量持久化载体,从而在单机环境下实现“多源输入—实时推理—结果管理”的稳定落地。老思在设计时刻意把实时链路中的高频操作(帧获取、推理、渲染)与低频操作(模型切换、主题更改、账户管理、导出入库)分离,避免 UI 卡顿与状态错乱在长时运行中累积。
从分层结构上看,系统采用典型的三层职责划分:Ui_MainWindow 负责控件布局、样式主题、表格与画布等可视元素的呈现;MainWindow 作为控制中枢,通过槽函数组织状态机并调度推理任务,统一管理播放控制、阈值参数、模型选择与资源释放;Detector 封装模型加载、前向推理与后处理逻辑,对外输出结构化检测结果(边界框、类别、置信度、耗时),以便上层做一致渲染与统计。跨层通信以 Qt 信号槽为主,界面事件以信号触发控制层更新状态,推理完成以信号回传结果并驱动界面刷新,避免直接跨层调用造成的强耦合;同时,SQLite 为每个用户维护独立的配置与历史空间,使主题、默认阈值、常用模型以及检测记录在会话间可复用,支撑“登录后即恢复工作状态”的产品化体验。
在推理闭环中,输入源支持图片、视频与摄像头三种模式,主链路统一为“采集—预处理—推理—后处理—统计—渲染—交互”的流水线:预处理阶段完成尺寸对齐与数据格式转换,推理阶段完成网络前向,后处理阶段执行置信度筛选与 NMS 并恢复坐标到原图尺度,统计阶段计算类别计数与 Top-K 信息并记录耗时,最终将叠加检测框的可视化结果与结构化表格同步呈现;用户在界面侧对 Conf/IOU、模型权重与主题进行调整时,系统通过状态管理确保在安全时机切换资源并保持结果一致性,必要时提示暂停推理以避免半帧切换导致的异常输出。
图 系统流程图
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理 — 流程图

登录与账户管理模块并不只是“进入系统的门禁”,而是将检测结果、个性化偏好与交互状态纳入可持久化的用户空间:注册阶段完成身份信息与默认配置的初始化并写入 SQLite,登录阶段通过查询校验恢复用户的主题样式、默认 Conf/IOU、常用模型与历史记录,使用户进入主界面后能够在同一套工作流中直接接续上一次的检测任务;当用户在主界面修改头像、密码或偏好设置时,系统将变更同步写回数据库并即时更新界面状态,从而保证“界面呈现—推理参数—历史数据”三者一致;注销与切换账号通过清理会话与缓存避免不同用户之间的配置污染,并与主检测流程共享同一状态管理机制,使推理链路在账户切换时能安全释放资源、重新加载配置并保持输出可追溯性。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
功能效果展示视频:犬种识别软件YOLOv12-v11至v5(八个模型,含示例论文)合集(完整Python项目演示,UI界面,含论文等)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8.参考文献
1 BORWARNGINN P, KUSAKUNNIRAN W, KARNJANAPREECHAKORN S, et al. Knowing Your Dog Breed: Identifying a Dog Breed with Deep Learning[J/OL]. Machine Intelligence Research, 2021. DOI:10.1007/s11633-020-1261-0. (Springer)
2 KHOSLA A, JAYADEVAPRAKASH N, YAO B, et al. Novel dataset for fine-grained image categorization: Stanford Dogs[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2011. (MIT CSAIL)
3 PARKHI O M, VEDALDI A, ZISSERMAN A, et al. Cats and Dogs[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2012. (Oxford Robotics)
4 ZOU D N, ZHANG S H, MU T J, et al. A new dataset of dog breed images and a benchmark for fine-grained classification[J]. Computational Visual Media, 2020, 6(4): 477-487. DOI:10.1007/s41095-020-0184-6. (Springer)
5 WEI X S, SONG Y Z, MAC AODHA O, et al. Fine-Grained Image Analysis with Deep Learning: A Survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022, 44(12): 8927-8948. DOI:10.1109/TPAMI.2021.3126648. (Curis)
6 KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[C]//Advances in Neural Information Processing Systems. 2012: 1097-1105. (NeurIPS Papers)
7 HE K, ZHANG X, REN S, SUN J. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 770-778. (CVF Open Access)
8 DOSOVITSKIY A, BEYER L, KOLESNIKOV A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[C]//International Conference on Learning Representations. 2021. (ICLR)
9 LIU Z, LIN Y, CAO Y, et al. Swin Transformer: Hierarchical vision transformer using shifted windows[C]//Proceedings of the IEEE International Conference on Computer Vision. 2021: 10012-10022. (CVF Open Access)
10 LIN T Y, ROYCHOWDHURY A, MAJI S. Bilinear CNN models for fine-grained visual recognition[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 1449-1457. (CVF Open Access)
11 赵婷婷, 高欢, 常玉广, 等. 基于知识蒸馏与目标区域选取的细粒度图像分类方法[J]. 计算机应用研究, 2023, 40(9): 2863-2868. DOI:10.19734/j.issn.1001-3695.2022.12.0809. (Aroc Magazine)
12 XU Q, WANG J, JIANG B, LUO B. Fine-Grained Visual Classification Via Internal Ensemble Learning Transformer[J]. IEEE Transactions on Multimedia, 2023, 25: 9015-9028. DOI:10.1109/TMM.2023.3244340. (CoLab)
13 ZHA Z, TANG H, SUN Y, TANG J. Boosting Few-shot Fine-grained Recognition with Background Suppression and Foreground Alignment[J]. IEEE Transactions on Circuits and Systems for Video Technology, 2023, 33(8): 3947-3961. DOI:10.1109/TCSVT.2023.3236636. (CoLab)
14 REDMON J, DIVVALA S, GIRSHICK R, FARHADI A. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 779-788. DOI:10.1109/CVPR.2016.91. (CV Foundation)
15 孙露露, 刘建平, 王健, 等. 细粒度图像分类上Vision Transformer的发展综述[J]. 计算机工程与应用, 2024, 60(10): 30-46. DOI:10.3778/j.issn.1002-8331.2310-0395. (CEAJ)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)