基于YOLO26的珍稀鸟类检测系统
基于YOLO26的珍稀鸟类检测系统
基于 YOLO26 与 Faster R-CNN 双模型对比,覆盖数据集构建、模型训练调优、桌面系统集成的完整深度学习工程项目。
目录
项目概览
本项目以北美 200 种鸟类的细粒度识别为核心任务,完整经历了以下深度学习开发阶段:
-
数据集构建与处理:基于经典 CUB-200-2011 基准数据集,将原始分类标注转换为 YOLO 目标检测格式,按 8:1:1 完成数据集划分,构建可直接驱动检测训练的
CUB_200_8_1_1数据集。 -
模型训练与调优:以 YOLO26n 为主训练模型(100 epoch,早停则提前结束),并同步训练 Faster R-CNN(30 epoch)作为对比基线,通过超参数设计、学习率调度、数据增强等手段完成调优,最终在 200 类细粒度鸟类检测任务上取得优异指标。
-
系统集成与功能开发:基于 PyQt6 开发桌面端珍稀鸟类检测系统,集成图片、视频、实时摄像头三种检测模式,配合历史记录、模型管理、训练指标展示等功能模块,形成完整的工程化应用。
数据集
概述
|
项目 |
内容 |
|---|---|
|
数据集名称 |
CUB_200_8_1_1 |
|
来源基准 |
CUB-200-2011(Caltech-UCSD Birds 200) |
|
标注格式 |
YOLO 格式(归一化中心点 + 宽高) |
|
类别数量 |
200 种北美鸟类 |
|
图片总数 |
11,788 张 |
|
图片格式 |
JPEG( |
|
图片尺寸 |
不固定,短边通常 200–500 px |
|
标注特点 |
每张图片含单个目标框,各类别分布均衡 |
数据集划分
|
子集 |
图片数量 |
占比 |
|---|---|---|
|
训练集(train) |
9,430 |
80% |
|
验证集(val) |
1,179 |
10% |
|
测试集(test) |
1,179 |
10% |
|
合计 |
11,788 |
100% |
标注格式说明
<class_id> <cx> <cy> <w> <h>
|
字段 |
说明 |
|---|---|
|
|
类别索引(0 ~ 199) |
|
|
目标框中心点 x(相对图片宽度,归一化) |
|
|
目标框中心点 y(相对图片高度,归一化) |
|
|
目标框宽度(相对图片宽度,归一化) |
|
|
目标框高度(相对图片高度,归一化) |
200 种鸟类完整列表
点击展开查看全部 200 种
|
ID |
英文名 |
中文名 |
|---|---|---|
|
0 |
Black_footed_Albatross |
黑脚信天翁 |
|
1 |
Laysan_Albatross |
莱岛信天翁 |
|
2 |
Sooty_Albatross |
乌信天翁 |
|
3 |
Groove_billed_Ani |
沟嘴犀鹃 |
|
4 |
Crested_Auklet |
凤头海雀 |
|
5 |
Least_Auklet |
小海雀 |
|
6 |
Parakeet_Auklet |
长嘴海雀 |
|
7 |
Rhinoceros_Auklet |
角嘴海雀 |
|
8 |
Brewer_Blackbird |
布氏拟八哥 |
|
9 |
Red_winged_Blackbird |
红翅黑鸟 |
|
10 |
Rusty_Blackbird |
锈色拟八哥 |
|
11 |
Yellow_headed_Blackbird |
黄头黑鸟 |
|
12 |
Bobolink |
刺歌雀 |
|
13 |
Indigo_Bunting |
靛蓝彩鹀 |
|
14 |
Lazuli_Bunting |
天青石彩鹀 |
|
15 |
Painted_Bunting |
彩色彩鹀 |
|
16 |
Cardinal |
主红雀 |
|
17 |
Spotted_Catbird |
斑猫鸟 |
|
18 |
Gray_Catbird |
灰猫鸟 |
|
19 |
Yellow_breasted_Chat |
黄胸聊鸟 |
|
20 |
Eastern_Towhee |
东方唧鹀 |
|
21 |
Chuck_will_Widow |
查克遗孀夜鹰 |
|
22 |
Brandt_Cormorant |
布氏鸬鹚 |
|
23 |
Red_faced_Cormorant |
红脸鸬鹚 |
|
24 |
Pelagic_Cormorant |
远洋鸬鹚 |
|
25 |
Bronzed_Cowbird |
铜色牛鹂 |
|
26 |
Shiny_Cowbird |
光泽牛鹂 |
|
27 |
Brown_Creeper |
褐旋木雀 |
|
28 |
American_Crow |
美洲乌鸦 |
|
29 |
Fish_Crow |
鱼鸦 |
|
30 |
Black_billed_Cuckoo |
黑嘴杜鹃 |
|
31 |
Mangrove_Cuckoo |
红树林杜鹃 |
|
32 |
Yellow_billed_Cuckoo |
黄嘴杜鹃 |
|
33 |
Gray_crowned_Rosy_Finch |
灰顶玫红雀 |
|
34 |
Purple_Finch |
紫朱雀 |
|
35 |
Northern_Flicker |
北扑翅䴕 |
|
36 |
Acadian_Flycatcher |
阿卡迪亚捕蝇鸟 |
|
37 |
Great_Crested_Flycatcher |
大冠捕蝇鸟 |
|
38 |
Least_Flycatcher |
小捕蝇鸟 |
|
39 |
Olive_sided_Flycatcher |
橄榄侧捕蝇鸟 |
|
40 |
Scissor_tailed_Flycatcher |
剪尾捕蝇鸟 |
|
41 |
Vermilion_Flycatcher |
朱红捕蝇鸟 |
|
42 |
Yellow_bellied_Flycatcher |
黄腹捕蝇鸟 |
|
43 |
Frigatebird |
军舰鸟 |
|
44 |
Northern_Fulmar |
北方管鼻鹱 |
|
45 |
Gadwall |
赤膀鸭 |
|
46 |
American_Goldfinch |
美洲金翅雀 |
|
47 |
European_Goldfinch |
欧洲金翅雀 |
|
48 |
Boat_tailed_Grackle |
船尾拟八哥 |
|
49 |
Eared_Grebe |
黑颈䴙䴘 |
|
50 |
Horned_Grebe |
角䴙䴘 |
|
51 |
Pied_billed_Grebe |
斑嘴䴙䴘 |
|
52 |
Western_Grebe |
西方䴙䴘 |
|
53 |
Blue_Grosbeak |
蓝色大嘴雀 |
|
54 |
Evening_Grosbeak |
暮色大嘴雀 |
|
55 |
Pine_Grosbeak |
松雀 |
|
56 |
Rose_breasted_Grosbeak |
玫胸大嘴雀 |
|
57 |
Pigeon_Guillemot |
鸽崖海鸦 |
|
58 |
California_Gull |
加州鸥 |
|
59 |
Glaucous_winged_Gull |
灰翅鸥 |
|
60 |
Heermann_Gull |
赫氏鸥 |
|
61 |
Herring_Gull |
银鸥 |
|
62 |
Ivory_Gull |
象牙鸥 |
|
63 |
Ring_billed_Gull |
环嘴鸥 |
|
64 |
Slaty_backed_Gull |
灰背鸥 |
|
65 |
Western_Gull |
西方鸥 |
|
66 |
Anna_Hummingbird |
安娜蜂鸟 |
|
67 |
Ruby_throated_Hummingbird |
红喉蜂鸟 |
|
68 |
Rufous_Hummingbird |
棕煌蜂鸟 |
|
69 |
Green_Violetear |
绿紫耳蜂鸟 |
|
70 |
Long_tailed_Jaeger |
长尾贼鸥 |
|
71 |
Pomarine_Jaeger |
中贼鸥 |
|
72 |
Blue_Jay |
蓝松鸦 |
|
73 |
Florida_Jay |
佛罗里达灌丛鸦 |
|
74 |
Green_Jay |
绿松鸦 |
|
75 |
Dark_eyed_Junco |
暗眼灯草鹀 |
|
76 |
Tropical_Kingbird |
热带王霸鹟 |
|
77 |
Gray_Kingbird |
灰王霸鹟 |
|
78 |
Belted_Kingfisher |
带翠鸟 |
|
79 |
Green_Kingfisher |
绿翠鸟 |
|
80 |
Pied_Kingfisher |
斑翡翠 |
|
81 |
Ringed_Kingfisher |
环翠鸟 |
|
82 |
White_breasted_Kingfisher |
白胸翡翠 |
|
83 |
Red_legged_Kittiwake |
红腿三趾鸥 |
|
84 |
Horned_Lark |
角百灵 |
|
85 |
Pacific_Loon |
太平洋潜鸟 |
|
86 |
Mallard |
绿头鸭 |
|
87 |
Western_Meadowlark |
西草地鹨 |
|
88 |
Hooded_Merganser |
头巾秋沙鸭 |
|
89 |
Red_breasted_Merganser |
红胸秋沙鸭 |
|
90 |
Mockingbird |
北方嘲鸫 |
|
91 |
Nighthawk |
美洲夜鹰 |
|
92 |
Clark_Nutcracker |
克拉克星鸦 |
|
93 |
White_breasted_Nuthatch |
白胸䴓 |
|
94 |
Baltimore_Oriole |
巴尔的摩拟黄鹂 |
|
95 |
Hooded_Oriole |
头巾拟黄鹂 |
|
96 |
Orchard_Oriole |
果园拟黄鹂 |
|
97 |
Scott_Oriole |
斯科特拟黄鹂 |
|
98 |
Ovenbird |
灶鸟 |
|
99 |
Brown_Pelican |
褐鹈鹕 |
|
100 |
White_Pelican |
白鹈鹕 |
|
101 |
Western_Wood_Pewee |
西方林霸鹟 |
|
102 |
Sayornis |
北美鹟 |
|
103 |
American_Pipit |
美洲鹨 |
|
104 |
Whip_poor_Will |
三声夜鹰 |
|
105 |
Horned_Puffin |
角海鹦 |
|
106 |
Common_Raven |
普通渡鸦 |
|
107 |
White_necked_Raven |
白颈渡鸦 |
|
108 |
American_Redstart |
美洲红尾林莺 |
|
109 |
Geococcyx |
走鹃 |
|
110 |
Loggerhead_Shrike |
大头伯劳 |
|
111 |
Great_Grey_Shrike |
大灰伯劳 |
|
112 |
Baird_Sparrow |
贝氏麻雀 |
|
113 |
Black_throated_Sparrow |
黑喉麻雀 |
|
114 |
Brewer_Sparrow |
布氏麻雀 |
|
115 |
Chipping_Sparrow |
棕顶麻雀 |
|
116 |
Clay_colored_Sparrow |
土色麻雀 |
|
117 |
House_Sparrow |
家麻雀 |
|
118 |
Field_Sparrow |
田野麻雀 |
|
119 |
Fox_Sparrow |
狐色麻雀 |
|
120 |
Grasshopper_Sparrow |
蝗虫麻雀 |
|
121 |
Harris_Sparrow |
哈里斯麻雀 |
|
122 |
Henslow_Sparrow |
亨斯洛麻雀 |
|
123 |
Le_Conte_Sparrow |
勒孔特麻雀 |
|
124 |
Lincoln_Sparrow |
林肯麻雀 |
|
125 |
Nelson_Sharp_tailed_Sparrow |
纳尔逊尖尾麻雀 |
|
126 |
Savannah_Sparrow |
萨瓦纳麻雀 |
|
127 |
Seaside_Sparrow |
海滨麻雀 |
|
128 |
Song_Sparrow |
歌带鹀 |
|
129 |
Tree_Sparrow |
美洲树麻雀 |
|
130 |
Vesper_Sparrow |
晚祷麻雀 |
|
131 |
White_crowned_Sparrow |
白冠麻雀 |
|
132 |
White_throated_Sparrow |
白喉麻雀 |
|
133 |
Cape_Glossy_Starling |
好望角辉椋鸟 |
|
134 |
Bank_Swallow |
崖沙燕 |
|
135 |
Barn_Swallow |
家燕 |
|
136 |
Cliff_Swallow |
崖燕 |
|
137 |
Tree_Swallow |
树燕 |
|
138 |
Scarlet_Tanager |
猩红比蓝雀 |
|
139 |
Summer_Tanager |
夏比蓝雀 |
|
140 |
Artic_Tern |
北极燕鸥 |
|
141 |
Black_Tern |
黑燕鸥 |
|
142 |
Caspian_Tern |
里海燕鸥 |
|
143 |
Common_Tern |
普通燕鸥 |
|
144 |
Elegant_Tern |
丽色燕鸥 |
|
145 |
Forsters_Tern |
福氏燕鸥 |
|
146 |
Least_Tern |
小燕鸥 |
|
147 |
Green_tailed_Towhee |
绿尾唧鹀 |
|
148 |
Brown_Thrasher |
褐嘲鸫 |
|
149 |
Sage_Thrasher |
鼠尾草嘲鸫 |
|
150 |
Black_capped_Vireo |
黑冠绿鹃 |
|
151 |
Blue_headed_Vireo |
蓝头绿鹃 |
|
152 |
Philadelphia_Vireo |
费城绿鹃 |
|
153 |
Red_eyed_Vireo |
红眼绿鹃 |
|
154 |
Warbling_Vireo |
鸣唱绿鹃 |
|
155 |
White_eyed_Vireo |
白眼绿鹃 |
|
156 |
Yellow_throated_Vireo |
黄喉绿鹃 |
|
157 |
Bay_breasted_Warbler |
栗胸林莺 |
|
158 |
Black_and_white_Warbler |
黑白林莺 |
|
159 |
Black_throated_Blue_Warbler |
黑喉蓝林莺 |
|
160 |
Blue_winged_Warbler |
蓝翅林莺 |
|
161 |
Canada_Warbler |
加拿大林莺 |
|
162 |
Cape_May_Warbler |
海角林莺 |
|
163 |
Cerulean_Warbler |
天蓝林莺 |
|
164 |
Chestnut_sided_Warbler |
栗侧林莺 |
|
165 |
Golden_winged_Warbler |
金翅林莺 |
|
166 |
Hooded_Warbler |
兜帽林莺 |
|
167 |
Kentucky_Warbler |
肯塔基林莺 |
|
168 |
Magnolia_Warbler |
木兰林莺 |
|
169 |
Mourning_Warbler |
悼念林莺 |
|
170 |
Myrtle_Warbler |
桃金娘林莺 |
|
171 |
Nashville_Warbler |
纳什维尔林莺 |
|
172 |
Orange_crowned_Warbler |
橙冠林莺 |
|
173 |
Palm_Warbler |
棕榈林莺 |
|
174 |
Pine_Warbler |
松林莺 |
|
175 |
Prairie_Warbler |
草原林莺 |
|
176 |
Prothonotary_Warbler |
黄头林莺 |
|
177 |
Swainson_Warbler |
斯温森林莺 |
|
178 |
Tennessee_Warbler |
田纳西林莺 |
|
179 |
Wilson_Warbler |
威尔逊林莺 |
|
180 |
Worm_eating_Warbler |
食虫林莺 |
|
181 |
Yellow_Warbler |
黄林莺 |
|
182 |
Northern_Waterthrush |
北方水鸫莺 |
|
183 |
Louisiana_Waterthrush |
路易斯安那水鸫莺 |
|
184 |
Bohemian_Waxwing |
波西米亚太平鸟 |
|
185 |
Cedar_Waxwing |
雪松太平鸟 |
|
186 |
American_Three_toed_Woodpecker |
美洲三趾啄木鸟 |
|
187 |
Pileated_Woodpecker |
北美黑啄木鸟 |
|
188 |
Red_bellied_Woodpecker |
红腹啄木鸟 |
|
189 |
Red_cockaded_Woodpecker |
红顶啄木鸟 |
|
190 |
Red_headed_Woodpecker |
红头啄木鸟 |
|
191 |
Downy_Woodpecker |
绒啄木鸟 |
|
192 |
Bewick_Wren |
贝氏鹪鹩 |
|
193 |
Cactus_Wren |
仙人掌鹪鹩 |
|
194 |
Carolina_Wren |
卡罗来纳鹪鹩 |
|
195 |
House_Wren |
家鹪鹩 |
|
196 |
Marsh_Wren |
沼泽鹪鹩 |
|
197 |
Rock_Wren |
岩鹪鹩 |
|
198 |
Winter_Wren |
冬鹪鹩 |
|
199 |
Common_Yellowthroat |
普通黄喉林莺 |
模型训练
YOLO26n 训练配置
|
参数 |
值 |
说明 |
|---|---|---|
|
基础模型 |
YOLO26n |
Nano 级别,轻量高效 |
|
预训练权重 |
是 |
基于 COCO 预训练,迁移学习 |
|
训练轮次 |
100 epoch |
— |
|
早停耐心 |
30 epoch |
验证指标无提升则停止 |
|
输入分辨率 |
640×640 |
— |
|
Batch Size |
16 |
— |
|
初始学习率(lr0) |
0.01 |
— |
|
最终学习率(lrf) |
0.01 |
余弦衰减终值比例 |
|
动量 |
0.937 |
— |
|
权重衰减 |
0.0005 |
— |
|
预热轮次 |
3 epoch |
学习率从低值线性增长 |
|
优化器 |
auto |
自动选择(AdamW/SGD) |
|
AMP 混合精度 |
是 |
加速训练,降低显存占用 |
|
随机种子 |
42 |
保证可复现性 |
|
设备 |
GPU(cuda:0) |
— |
数据增强策略
|
增强方式 |
参数 |
说明 |
|---|---|---|
|
HSV 色调扰动 |
0.015 |
轻微色调变化 |
|
HSV 饱和度扰动 |
0.7 |
较强饱和度随机变换 |
|
HSV 明度扰动 |
0.4 |
中等亮度随机变换 |
|
水平翻转 |
0.5 |
50% 概率随机水平翻转 |
|
平移 |
0.1 |
随机平移 10% |
|
缩放 |
0.5 |
随机缩放 ±50% |
|
Mosaic |
1.0 |
四图拼接,增强小目标识别 |
|
关闭 Mosaic |
最后 10 epoch |
稳定训练末期收敛 |
|
RandAugment |
自动 |
随机组合多种增强策略 |
|
随机擦除 |
0.4 |
40% 概率随机遮盖区域 |
Faster R-CNN 训练配置(对比实验)
|
参数 |
值 |
说明 |
|---|---|---|
|
骨干网络 |
ResNet-50 + FPN |
torchvision 预训练 |
|
预训练权重 |
是 |
COCO 预训练迁移 |
|
训练轮次 |
30 epoch |
— |
|
输入分辨率 |
640×640 |
— |
|
Batch Size |
2 |
Two-stage 模型显存需求大 |
|
初始学习率 |
0.005 |
— |
|
动量 |
0.9 |
— |
|
权重衰减 |
0.0005 |
— |
|
学习率调度 |
StepLR(step=10,γ=0.1) |
每 10 epoch 学习率缩小 10 倍 |
|
AMP 混合精度 |
是 |
— |
|
置信度阈值 |
0.5 |
预测框过滤阈值 |
|
IoU 阈值 |
0.5 |
NMS 重叠度阈值 |
|
随机种子 |
42 |
— |
|
设备 |
GPU(cuda:0) |
— |
训练指标
YOLO26n 最终结果
|
指标 |
值 |
|---|---|
|
最佳 Epoch |
第 57 轮 |
|
Precision(精确率) |
81.47% |
|
Recall(召回率) |
79.66% |
|
mAP@50 |
86.87% |
|
mAP@50-95 |
78.26% |
|
训练总时长 |
~3.82 小时 |
|
单张推理耗时 |
21.68 ms |
|
参数量 |
2.70 M |
|
权重文件大小 |
5.51 MB |
Faster R-CNN 最终结果
|
指标 |
值 |
|---|---|
|
最佳 Epoch |
第 29 轮 |
|
Precision(精确率) |
60.31% |
|
Recall(召回率) |
63.53% |
|
mAP@50 |
69.75% |
|
F1 分数 |
61.88% |
|
平均 IoU |
91.25% |
|
训练总时长 |
~9.66 小时 |
|
单张推理耗时 |
67.19 ms |
|
参数量 |
44.28 M |
|
权重文件大小 |
337.36 MB |
双模型对比
|
指标 |
YOLO26 |
Faster R-CNN |
YOLO26 优势 |
|---|---|---|---|
|
mAP@50 |
86.87% |
69.75% |
+24.6% |
|
Precision |
81.47% |
60.31% |
+35.1% |
|
Recall |
79.66% |
63.53% |
+25.4% |
|
训练时长 |
~3.82h |
~9.66h |
快 60.5% |
|
推理耗时 |
21.68ms |
67.19ms |
快 67.7% |
|
参数量 |
2.70M |
44.28M |
少 93.9% |
|
权重大小 |
5.51MB |
337.36MB |
小 98.4% |
YOLO26 在所有核心指标上全面优于 Faster R-CNN,同时具备更快的推理速度和更小的模型体积,是本项目的主力部署模型。
可视化图说明
训练过程中自动生成若干可视化曲线图,保存于 train_result_yolov26/metric_plots/(YOLO26)和 fastrcnn_result/metric_plots/(Faster R-CNN)目录,双模型对比图保存于 model_compare_result/。
YOLO26 训练曲线
|
图文件 |
含义 |
|---|---|
|
|
训练集边界框回归损失(Box Loss),反映模型对目标位置预测的准确度,越低越好 |
|
|
训练集分类损失(Classification Loss),反映模型对 200 类鸟类识别的分类能力,越低越好 |
|
|
训练集分布焦点损失(DFL Loss),YOLO 系列的边界框精细化损失,越低越好 |
|
|
验证集边界框回归损失,用于判断模型泛化能力,与训练损失走势对比可观察过拟合情况 |
|
|
验证集分类损失,反映模型在未见数据上的分类稳定性 |
|
|
验证集分布焦点损失 |
|
|
验证集精确率曲线(Precision),表示所有正例预测中真正例的比例,趋势上升表示误检减少 |
|
|
验证集召回率曲线(Recall),表示所有真实目标中被正确检出的比例,趋势上升表示漏检减少 |
|
|
验证集 mAP@IoU=0.5 曲线,是目标检测的核心综合评估指标,越高代表整体检测越准确 |
|
|
验证集 mAP@IoU=0.5:0.95 曲线,多 IoU 阈值下的严格综合指标,对定位精度要求更高 |
|
|
第 0 参数组学习率变化曲线(主干网络),反映学习率调度策略的执行过程 |
|
|
第 1 参数组学习率变化曲线(检测头) |
|
|
第 2 参数组学习率变化曲线(偏置项) |
Faster R-CNN 训练曲线
|
图文件 |
含义 |
|---|---|
|
|
训练总损失,为分类损失、回归损失、RPN 损失之和 |
|
|
RoI 头分类损失,衡量目标类别预测的误差 |
|
|
RoI 头边界框回归损失,衡量目标定位的精度 |
|
|
RPN 目标性损失,衡量候选框是否包含目标的判断能力 |
|
|
RPN 阶段边界框回归损失,衡量候选区域的定位误差 |
|
|
验证集精确率曲线 |
|
|
验证集召回率曲线 |
|
|
验证集 F1 分数,精确率与召回率的调和平均值 |
|
|
验证集 mAP@50 曲线 |
|
|
验证集平均 IoU,衡量预测框与真实框的平均重叠程度 |
|
|
每 epoch 的平均推理耗时变化曲线(ms) |
双模型对比图(model_compare_result/)
|
图文件 |
含义 |
|---|---|
|
|
综合对比总览图,将所有核心指标并排展示,直观呈现两模型全局差异 |
|
|
mAP@50 指标对比柱状图 |
|
|
Precision 精确率对比柱状图 |
|
|
Recall 召回率对比柱状图 |
|
|
推理时间对比柱状图(ms),越低代表推理越快 |
|
|
参数量对比柱状图(百万),越低代表模型越轻量 |
系统功能
桌面端应用基于 PyQt6 开发,提供以下六大功能模块:
|
模块 |
功能说明 |
|---|---|
|
图片识别 |
导入本地图片,运行 YOLO26 检测,输出标注框、类别名称(中英文)、置信度,支持结果图片保存 |
|
视频识别 |
导入本地视频文件,逐帧检测,实时预览检测结果,支持进度控制与结果导出 |
|
摄像头识别 |
调用本地摄像头,实时推流检测,适用于现场鸟类目标观测 |
|
检测历史 |
记录每次检测的时间、来源、模型、目标总数、识别类别数等信息,支持筛选与导出(CSV) |
|
模型管理 |
切换检测模型(支持加载不同 |
|
指标展示 |
在应用内直接浏览训练过程中生成的各类指标曲线图,无需离开系统即可查阅训练结果 |
其他特性:
-
用户登录认证系统,支持多账号管理
-
SQLite 本地数据库持久化检测历史
-
中英双语类别显示(200 种鸟类均提供中文名)
-
检测结果支持导出为 CSV 文件
技术栈
|
层次 |
技术 |
|---|---|
|
深度学习框架 |
PyTorch |
|
目标检测(主模型) |
Ultralytics YOLO26 |
|
目标检测(对比模型) |
torchvision Faster R-CNN(ResNet-50 + FPN) |
|
桌面 GUI |
PyQt6 |
|
数据库 |
SQLite(通过 Python 内置 sqlite3) |
|
图像处理 |
OpenCV(cv2) |
|
数据处理 |
NumPy、Pandas |
|
可视化 |
Matplotlib |
|
语言 |
Python 3.10+ |
|
训练设备 |
NVIDIA GPU(CUDA) |
项目结构
c226/
├── main.py # 桌面应用启动入口
├── train.py # YOLO 训练启动脚本(默认 YOLO26)
├── train_fastrcnn.py # Faster R-CNN 训练启动脚本
│
├── desktop_app/ # 桌面应用核心代码
│ ├── app_context.py # 全局应用上下文
│ ├── bootstrap.py # 应用初始化与启动
│ ├── core/
│ │ ├── bird_names.py # 200 种鸟类中英文名称映射
│ │ ├── constants.py # 全局常量(页面、默认参数、配置键)
│ │ └── paths.py # 路径管理(模型、数据、数据库等)
│ ├── database/
│ │ └── connection.py # SQLite 数据库连接管理
│ ├── repositories/
│ │ ├── config_repository.py # 配置项持久化
│ │ ├── history_repository.py# 检测历史记录存取
│ │ └── user_repository.py # 用户信息管理
│ ├── services/
│ │ ├── auth_service.py # 用户认证服务
│ │ ├── detection_service.py # 检测核心逻辑
│ │ ├── export_service.py # 检测结果导出
│ │ ├── history_service.py # 历史记录业务逻辑
│ │ ├── metrics_service.py # 训练指标读取服务
│ │ └── model_service.py # 模型加载与推理管理
│ ├── ui/
│ │ ├── login_window.py # 登录窗口
│ │ ├── main_window.py # 主窗口框架
│ │ ├── styles.py # 全局样式
│ │ ├── pages/
│ │ │ ├── image_page.py # 图片识别页面
│ │ │ ├── video_page.py # 视频识别页面
│ │ │ ├── camera_page.py # 摄像头识别页面
│ │ │ ├── history_page.py # 检测历史页面
│ │ │ ├── model_page.py # 模型管理页面
│ │ │ └── metrics_page.py # 指标展示页面
│ │ └── widgets/
│ │ ├── common.py # 通用 UI 组件
│ │ └── preview.py # 检测结果预览组件
│ ├── utils/
│ │ ├── icon_utils.py # 图标工具
│ │ ├── image_utils.py # 图像处理工具
│ │ └── matplotlib_utils.py # Matplotlib 嵌入 Qt 工具
│ └── workers/
│ └── detection_workers.py # 后台检测线程(异步推理)
│
├── yolo_train/ # YOLO 训练管线
│ ├── config.py # 训练超参数配置
│ ├── dataset.py # 数据集加载与预处理
│ ├── train_pipeline.py # 完整训练流程
│ ├── torch_path_io.py # PyTorch 路径兼容补丁
│ └── visualizer.py # 训练指标可视化
│
├── fastrcnn_train/ # Faster R-CNN 训练管线
│ ├── config.py # 训练超参数配置
│ ├── dataset.py # 数据集加载(YOLO 标注转换)
│ ├── modeling.py # 模型构建(ResNet-50 + FPN)
│ ├── metrics.py # COCO 评估指标计算
│ ├── train_pipeline.py # 完整训练流程
│ ├── checkpoint.py # 模型权重保存与加载
│ ├── comparison.py # 双模型对比分析
│ └── visualizer.py # 训练指标可视化与对比图生成
│
├── CUB_200_8_1_1/ # 数据集
│ ├── data.yaml # YOLO 数据集配置(类别 + 路径)
│ ├── 数据集说明.md
│ ├── train/images/ # 训练集图片(9430 张)
│ ├── train/labels/ # 训练集标注
│ ├── val/images/ # 验证集图片(1179 张)
│ ├── val/labels/
│ ├── test/images/ # 测试集图片(1179 张)
│ └── test/labels/
│
├── train_result_yolov26/ # YOLO26 训练输出
│ ├── weights/
│ │ ├── best.pt # 最佳验证集权重
│ │ └── last.pt # 最终 epoch 权重
│ ├── args.yaml # 完整训练参数记录
│ ├── runtime_data.yaml # 运行时数据集配置
│ ├── results.csv # 逐 epoch 训练/验证指标数据
│ └── metric_plots/ # 各项指标可视化曲线图
│
├── fastrcnn_result/ # Faster R-CNN 训练输出
│ ├── weights/
│ │ ├── best_model.pth # 最佳验证集权重
│ │ └── last_model.pth # 最终权重
│ ├── metrics.csv # 逐 epoch 训练/验证指标数据
│ ├── summary.json # 最终指标汇总
│ ├── train_config.json # 完整训练配置记录
│ └── metric_plots/ # 各项指标可视化曲线图
│
├── model_compare_result/ # 双模型对比分析结果
│ ├── comparison_summary.json # 对比数据汇总
│ └── *.png # 各维度对比柱状图
│
├── yolo26n.pt # YOLO26n 预训练权重(回退用)
└── requirements.txt # Python 依赖列表
启动教程
环境要求
-
Python 3.10 或以上
-
NVIDIA GPU + CUDA(训练阶段必须;推理/系统运行可使用 CPU)
-
操作系统:Windows 10/11
安装依赖
pip install -r requirements.txt
训练 YOLO26 模型
python train.py
训练输出(权重、日志、指标曲线)自动保存至 train_result_yolov26/ 目录。
训练 Faster R-CNN 模型(对比实验)
python train_fastrcnn.py
训练输出自动保存至 fastrcnn_result/ 目录,训练完成后自动与 YOLO26 进行对比分析,结果输出至 model_compare_result/。
启动桌面应用
python main.py
首次运行时自动初始化数据库,默认加载 train_result_yolov26/weights/best.pt 作为检测模型。若权重文件不存在,将回退至项目根目录下的 yolo26n.pt。


更多推荐












所有评论(0)