【算法介绍】
基于YOLOv8的200种鸟类智能检测与识别系统是一款基于深度学习的目标检测系统,该系统利用YOLOv8框架,通过11788张图片训练出一个能够进行鸟类智能检测与识别的模型,可以识别200种不同的鸟类。
该系统采用Python与PyQt5开发,拥有简洁的用户界面,支持图片、视频以及摄像头进行实时目标检测,并能够保存检测结果。用户可以通过点击图片、视频或摄像头图标,选择需要检测的内容,系统会自动显示检测结果,包括目标位置、目标总数、置信度以及检测用时等信息。
该系统在生态保护、科学研究、野生动物监测以及生态旅游等领域具有广泛的应用前景。它可以帮助研究者和保护人员准确监测鸟类种群的动态,评估生物多样性,及时发现稀有或濒危鸟种,制定更有效的保护措施。同时,它也可以为科学研究提供大量精确的鸟类观察数据,协助进行行为学、迁徙学和生态学的研究。
此外,在野生动物监测方面,该系统能够减少人为干扰,提高数据收集效率和准确度,有助于森林管理及非法狩猎的预防。在生态旅游业中,鸟类检测与识别技术可以提升游客体验,实现自动化识别和解说服务,让游客更深入地了解自然界的奥妙。
【效果展示】
【测试环境】
windows10
anaconda3+python3.8
torch==1.9.0+cu111
ultralytics==8.2.95
【模型可以检测出类别】
001-Black_footed_Albatross
002-Laysan_Albatross
003-Sooty_Albatross
004-Groove_billed_Ani
005-Crested_Auklet
006-Least_Auklet
007-Parakeet_Auklet
008-Rhinoceros_Auklet
009-Brewer_Blackbird
010-Red_winged_Blackbird
011-Rusty_Blackbird
012-Yellow_headed_Blackbird
013-Bobolink
014-Indigo_Bunting
015-Lazuli_Bunting
016-Painted_Bunting
017-Cardinal
018-Spotted_Catbird
019-Gray_Catbird
020-Yellow_breasted_Chat
021-Eastern_Towhee
022-Chuck_will_Widow
023-Brandt_Cormorant
024-Red_faced_Cormorant
025-Pelagic_Cormorant
026-Bronzed_Cowbird
027-Shiny_Cowbird
028-Brown_Creeper
029-American_Crow
030-Fish_Crow
031-Black_billed_Cuckoo
032-Mangrove_Cuckoo
033-Yellow_billed_Cuckoo
034-Gray_crowned_Rosy_Finch
035-Purple_Finch
036-Northern_Flicker
037-Acadian_Flycatcher
038-Great_Crested_Flycatcher
039-Least_Flycatcher
040-Olive_sided_Flycatcher
041-Scissor_tailed_Flycatcher
042-Vermilion_Flycatcher
043-Yellow_bellied_Flycatcher
044-Frigatebird
045-Northern_Fulmar
046-Gadwall
047-American_Goldfinch
048-European_Goldfinch
049-Boat_tailed_Grackle
050-Eared_Grebe
051-Horned_Grebe
052-Pied_billed_Grebe
053-Western_Grebe
054-Blue_Grosbeak
055-Evening_Grosbeak
056-Pine_Grosbeak
057-Rose_breasted_Grosbeak
058-Pigeon_Guillemot
059-California_Gull
060-Glaucous_winged_Gull
061-Heermann_Gull
062-Herring_Gull
063-Ivory_Gull
064-Ring_billed_Gull
065-Slaty_backed_Gull
066-Western_Gull
067-Anna_Hummingbird
068-Ruby_throated_Hummingbird
069-Rufous_Hummingbird
070-Green_Violetear
071-Long_tailed_Jaeger
072-Pomarine_Jaeger
073-Blue_Jay
074-Florida_Jay
075-Green_Jay
076-Dark_eyed_Junco
077-Tropical_Kingbird
078-Gray_Kingbird
079-Belted_Kingfisher
080-Green_Kingfisher
081-Pied_Kingfisher
082-Ringed_Kingfisher
083-White_breasted_Kingfisher
084-Red_legged_Kittiwake
085-Horned_Lark
086-Pacific_Loon
087-Mallard
088-Western_Meadowlark
089-Hooded_Merganser
090-Red_breasted_Merganser
091-Mockingbird
092-Nighthawk
093-Clark_Nutcracker
094-White_breasted_Nuthatch
095-Baltimore_Oriole
096-Hooded_Oriole
097-Orchard_Oriole
098-Scott_Oriole
099-Ovenbird
100-Brown_Pelican
101-White_Pelican
102-Western_Wood_Pewee
103-Sayornis
104-American_Pipit
105-Whip_poor_Will
106-Horned_Puffin
107-Common_Raven
108-White_necked_Raven
109-American_Redstart
110-Geococcyx
111-Loggerhead_Shrike
112-Great_Grey_Shrike
113-Baird_Sparrow
114-Black_throated_Sparrow
115-Brewer_Sparrow
116-Chipping_Sparrow
117-Clay_colored_Sparrow
118-House_Sparrow
119-Field_Sparrow
120-Fox_Sparrow
121-Grasshopper_Sparrow
122-Harris_Sparrow
123-Henslow_Sparrow
124-Le_Conte_Sparrow
125-Lincoln_Sparrow
126-Nelson_Sharp_tailed_Sparrow
127-Savannah_Sparrow
128-Seaside_Sparrow
129-Song_Sparrow
130-Tree_Sparrow
131-Vesper_Sparrow
132-White_crowned_Sparrow
133-White_throated_Sparrow
134-Cape_Glossy_Starling
135-Bank_Swallow
136-Barn_Swallow
137-Cliff_Swallow
138-Tree_Swallow
139-Scarlet_Tanager
140-Summer_Tanager
141-Artic_Tern
142-Black_Tern
143-Caspian_Tern
144-Common_Tern
145-Elegant_Tern
146-Forsters_Tern
147-Least_Tern
148-Green_tailed_Towhee
149-Brown_Thrasher
150-Sage_Thrasher
151-Black_capped_Vireo
152-Blue_headed_Vireo
153-Philadelphia_Vireo
154-Red_eyed_Vireo
155-Warbling_Vireo
156-White_eyed_Vireo
157-Yellow_throated_Vireo
158-Bay_breasted_Warbler
159-Black_and_white_Warbler
160-Black_throated_Blue_Warbler
161-Blue_winged_Warbler
162-Canada_Warbler
163-Cape_May_Warbler
164-Cerulean_Warbler
165-Chestnut_sided_Warbler
166-Golden_winged_Warbler
167-Hooded_Warbler
168-Kentucky_Warbler
169-Magnolia_Warbler
170-Mourning_Warbler
171-Myrtle_Warbler
172-Nashville_Warbler
173-Orange_crowned_Warbler
174-Palm_Warbler
175-Pine_Warbler
176-Prairie_Warbler
177-Prothonotary_Warbler
178-Swainson_Warbler
179-Tennessee_Warbler
180-Wilson_Warbler
181-Worm_eating_Warbler
182-Yellow_Warbler
183-Northern_Waterthrush
184-Louisiana_Waterthrush
185-Bohemian_Waxwing
186-Cedar_Waxwing
187-American_Three_toed_Woodpecker
188-Pileated_Woodpecker
189-Red_bellied_Woodpecker
190-Red_cockaded_Woodpecker
191-Red_headed_Woodpecker
192-Downy_Woodpecker
193-Bewick_Wren
194-Cactus_Wren
195-Carolina_Wren
196-House_Wren
197-Marsh_Wren
198-Rock_Wren
199-Winter_Wren
200-Common_Yellowthroat
【训练数据集】
https://blog.csdn.net/FL1623863129/article/details/136336080
【训练信息】
参数 | 值 |
训练集图片数 | 6929 |
验证集图片数 | 1980 |
训练map | 82.9% |
训练精度(Precision) | 78.0% |
训练召回率(Recall) | 76.7% |
验证集测试精度信息
类别 | MAP50(单位:%) |
all | 83 |
001-Black_footed_Albatross | 74 |
002-Laysan_Albatross | 82 |
003-Sooty_Albatross | 56 |
004-Groove_billed_Ani | 72 |
005-Crested_Auklet | 67 |
006-Least_Auklet | 78 |
007-Parakeet_Auklet | 100 |
008-Rhinoceros_Auklet | 90 |
009-Brewer_Blackbird | 63 |
010-Red_winged_Blackbird | 100 |
011-Rusty_Blackbird | 30 |
012-Yellow_headed_Blackbird | 100 |
013-Bobolink | 100 |
014-Indigo_Bunting | 96 |
015-Lazuli_Bunting | 93 |
016-Painted_Bunting | 98 |
017-Cardinal | 95 |
018-Spotted_Catbird | 88 |
019-Gray_Catbird | 97 |
020-Yellow_breasted_Chat | 100 |
021-Eastern_Towhee | 100 |
022-Chuck_will_Widow | 85 |
023-Brandt_Cormorant | 57 |
024-Red_faced_Cormorant | 83 |
025-Pelagic_Cormorant | 62 |
026-Bronzed_Cowbird | 95 |
027-Shiny_Cowbird | 25 |
028-Brown_Creeper | 87 |
029-American_Crow | 67 |
030-Fish_Crow | 24 |
031-Black_billed_Cuckoo | 68 |
032-Mangrove_Cuckoo | 63 |
033-Yellow_billed_Cuckoo | 65 |
034-Gray_crowned_Rosy_Finch | 100 |
035-Purple_Finch | 100 |
036-Northern_Flicker | 100 |
037-Acadian_Flycatcher | 50 |
038-Great_Crested_Flycatcher | 72 |
039-Least_Flycatcher | 57 |
040-Olive_sided_Flycatcher | 68 |
041-Scissor_tailed_Flycatcher | 90 |
042-Vermilion_Flycatcher | 98 |
043-Yellow_bellied_Flycatcher | 64 |
044-Frigatebird | 95 |
045-Northern_Fulmar | 85 |
046-Gadwall | 88 |
047-American_Goldfinch | 100 |
048-European_Goldfinch | 100 |
049-Boat_tailed_Grackle | 54 |
050-Eared_Grebe | 83 |
051-Horned_Grebe | 65 |
052-Pied_billed_Grebe | 100 |
053-Western_Grebe | 99 |
054-Blue_Grosbeak | 100 |
055-Evening_Grosbeak | 100 |
056-Pine_Grosbeak | 99 |
057-Rose_breasted_Grosbeak | 100 |
058-Pigeon_Guillemot | 95 |
059-California_Gull | 56 |
060-Glaucous_winged_Gull | 56 |
061-Heermann_Gull | 74 |
062-Herring_Gull | 46 |
063-Ivory_Gull | 100 |
064-Ring_billed_Gull | 70 |
065-Slaty_backed_Gull | 72 |
066-Western_Gull | 56 |
067-Anna_Hummingbird | 73 |
068-Ruby_throated_Hummingbird | 86 |
069-Rufous_Hummingbird | 77 |
070-Green_Violetear | 96 |
071-Long_tailed_Jaeger | 45 |
072-Pomarine_Jaeger | 53 |
073-Blue_Jay | 75 |
074-Florida_Jay | 90 |
075-Green_Jay | 100 |
076-Dark_eyed_Junco | 91 |
077-Tropical_Kingbird | 98 |
078-Gray_Kingbird | 89 |
079-Belted_Kingfisher | 89 |
080-Green_Kingfisher | 91 |
081-Pied_Kingfisher | 99 |
082-Ringed_Kingfisher | 84 |
083-White_breasted_Kingfisher | 100 |
084-Red_legged_Kittiwake | 84 |
085-Horned_Lark | 100 |
086-Pacific_Loon | 82 |
087-Mallard | 100 |
088-Western_Meadowlark | 100 |
089-Hooded_Merganser | 96 |
090-Red_breasted_Merganser | 80 |
091-Mockingbird | 76 |
092-Nighthawk | 91 |
093-Clark_Nutcracker | 100 |
094-White_breasted_Nuthatch | 100 |
095-Baltimore_Oriole | 100 |
096-Hooded_Oriole | 90 |
097-Orchard_Oriole | 96 |
098-Scott_Oriole | 82 |
099-Ovenbird | 97 |
100-Brown_Pelican | 94 |
101-White_Pelican | 100 |
102-Western_Wood_Pewee | 55 |
103-Sayornis | 46 |
104-American_Pipit | 97 |
105-Whip_poor_Will | 73 |
106-Horned_Puffin | 100 |
107-Common_Raven | 64 |
108-White_necked_Raven | 80 |
109-American_Redstart | 96 |
110-Geococcyx | 100 |
111-Loggerhead_Shrike | 69 |
112-Great_Grey_Shrike | 78 |
113-Baird_Sparrow | 67 |
114-Black_throated_Sparrow | 98 |
115-Brewer_Sparrow | 59 |
116-Chipping_Sparrow | 74 |
117-Clay_colored_Sparrow | 83 |
118-House_Sparrow | 53 |
119-Field_Sparrow | 70 |
120-Fox_Sparrow | 94 |
121-Grasshopper_Sparrow | 79 |
122-Harris_Sparrow | 97 |
123-Henslow_Sparrow | 86 |
124-Le_Conte_Sparrow | 79 |
125-Lincoln_Sparrow | 93 |
126-Nelson_Sharp_tailed_Sparrow | 84 |
127-Savannah_Sparrow | 95 |
128-Seaside_Sparrow | 83 |
129-Song_Sparrow | 85 |
130-Tree_Sparrow | 82 |
131-Vesper_Sparrow | 81 |
132-White_crowned_Sparrow | 98 |
133-White_throated_Sparrow | 81 |
134-Cape_Glossy_Starling | 98 |
135-Bank_Swallow | 71 |
136-Barn_Swallow | 78 |
137-Cliff_Swallow | 45 |
138-Tree_Swallow | 83 |
139-Scarlet_Tanager | 100 |
140-Summer_Tanager | 100 |
141-Artic_Tern | 62 |
142-Black_Tern | 84 |
143-Caspian_Tern | 62 |
144-Common_Tern | 38 |
145-Elegant_Tern | 61 |
146-Forsters_Tern | 58 |
147-Least_Tern | 87 |
148-Green_tailed_Towhee | 96 |
149-Brown_Thrasher | 100 |
150-Sage_Thrasher | 86 |
151-Black_capped_Vireo | 91 |
152-Blue_headed_Vireo | 59 |
153-Philadelphia_Vireo | 70 |
154-Red_eyed_Vireo | 76 |
155-Warbling_Vireo | 55 |
156-White_eyed_Vireo | 90 |
157-Yellow_throated_Vireo | 72 |
158-Bay_breasted_Warbler | 100 |
159-Black_and_white_Warbler | 99 |
160-Black_throated_Blue_Warbler | 91 |
161-Blue_winged_Warbler | 92 |
162-Canada_Warbler | 91 |
163-Cape_May_Warbler | 87 |
164-Cerulean_Warbler | 88 |
165-Chestnut_sided_Warbler | 82 |
166-Golden_winged_Warbler | 100 |
167-Hooded_Warbler | 86 |
168-Kentucky_Warbler | 98 |
169-Magnolia_Warbler | 97 |
170-Mourning_Warbler | 91 |
171-Myrtle_Warbler | 100 |
172-Nashville_Warbler | 79 |
173-Orange_crowned_Warbler | 48 |
174-Palm_Warbler | 72 |
175-Pine_Warbler | 80 |
176-Prairie_Warbler | 87 |
177-Prothonotary_Warbler | 100 |
178-Swainson_Warbler | 89 |
179-Tennessee_Warbler | 72 |
180-Wilson_Warbler | 94 |
181-Worm_eating_Warbler | 89 |
182-Yellow_Warbler | 97 |
183-Northern_Waterthrush | 90 |
184-Louisiana_Waterthrush | 73 |
185-Bohemian_Waxwing | 98 |
186-Cedar_Waxwing | 97 |
187-American_Three_toed_Woodpecker | 100 |
188-Pileated_Woodpecker | 100 |
189-Red_bellied_Woodpecker | 91 |
190-Red_cockaded_Woodpecker | 100 |
191-Red_headed_Woodpecker | 100 |
192-Downy_Woodpecker | 100 |
193-Bewick_Wren | 72 |
194-Cactus_Wren | 94 |
195-Carolina_Wren | 93 |
196-House_Wren | 52 |
197-Marsh_Wren | 82 |
198-Rock_Wren | 95 |
199-Winter_Wren | 88 |
200-Common_Yellowthroat | 100 |
【部分实现源码】
class Ui_MainWindow(QtWidgets.QMainWindow):
signal = QtCore.pyqtSignal(str, str)
def setupUi(self):
self.setObjectName("MainWindow")
self.resize(1280, 728)
self.centralwidget = QtWidgets.QWidget(self)
self.centralwidget.setObjectName("centralwidget")
self.weights_dir = './weights'
self.picture = QtWidgets.QLabel(self.centralwidget)
self.picture.setGeometry(QtCore.QRect(260, 10, 1010, 630))
self.picture.setStyleSheet("background:black")
self.picture.setObjectName("picture")
self.picture.setScaledContents(True)
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(10, 10, 81, 21))
self.label_2.setObjectName("label_2")
self.cb_weights = QtWidgets.QComboBox(self.centralwidget)
self.cb_weights.setGeometry(QtCore.QRect(10, 40, 241, 21))
self.cb_weights.setObjectName("cb_weights")
self.cb_weights.currentIndexChanged.connect(self.cb_weights_changed)
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(10, 70, 72, 21))
self.label_3.setObjectName("label_3")
self.hs_conf = QtWidgets.QSlider(self.centralwidget)
self.hs_conf.setGeometry(QtCore.QRect(10, 100, 181, 22))
self.hs_conf.setProperty("value", 25)
self.hs_conf.setOrientation(QtCore.Qt.Horizontal)
self.hs_conf.setObjectName("hs_conf")
self.hs_conf.valueChanged.connect(self.conf_change)
self.dsb_conf = QtWidgets.QDoubleSpinBox(self.centralwidget)
self.dsb_conf.setGeometry(QtCore.QRect(200, 100, 51, 22))
self.dsb_conf.setMaximum(1.0)
self.dsb_conf.setSingleStep(0.01)
self.dsb_conf.setProperty("value", 0.25)
self.dsb_conf.setObjectName("dsb_conf")
self.dsb_conf.valueChanged.connect(self.dsb_conf_change)
self.dsb_iou = QtWidgets.QDoubleSpinBox(self.centralwidget)
self.dsb_iou.setGeometry(QtCore.QRect(200, 160, 51, 22))
self.dsb_iou.setMaximum(1.0)
self.dsb_iou.setSingleStep(0.01)
self.dsb_iou.setProperty("value", 0.45)
self.dsb_iou.setObjectName("dsb_iou")
self.dsb_iou.valueChanged.connect(self.dsb_iou_change)
self.hs_iou = QtWidgets.QSlider(self.centralwidget)
self.hs_iou.setGeometry(QtCore.QRect(10, 160, 181, 22))
self.hs_iou.setProperty("value", 45)
self.hs_iou.setOrientation(QtCore.Qt.Horizontal)
self.hs_iou.setObjectName("hs_iou")
self.hs_iou.valueChanged.connect(self.iou_change)
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(10, 130, 72, 21))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(10, 210, 72, 21))
self.label_5.setObjectName("label_5")
self.le_res = QtWidgets.QTextEdit(self.centralwidget)
self.le_res.setGeometry(QtCore.QRect(10, 240, 241, 400))
self.le_res.setObjectName("le_res")
self.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(self)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1110, 30))
self.menubar.setObjectName("menubar")
self.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(self)
self.statusbar.setObjectName("statusbar")
self.setStatusBar(self.statusbar)
self.toolBar = QtWidgets.QToolBar(self)
self.toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
self.toolBar.setObjectName("toolBar")
self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
self.actionopenpic = QtWidgets.QAction(self)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/images/1.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionopenpic.setIcon(icon)
self.actionopenpic.setObjectName("actionopenpic")
self.actionopenpic.triggered.connect(self.open_image)
self.action = QtWidgets.QAction(self)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/images/2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action.setIcon(icon1)
self.action.setObjectName("action")
self.action.triggered.connect(self.open_video)
self.action_2 = QtWidgets.QAction(self)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/images/3.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.action_2.setIcon(icon2)
self.action_2.setObjectName("action_2")
self.action_2.triggered.connect(self.open_camera)
self.actionexit = QtWidgets.QAction(self)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/images/4.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.actionexit.setIcon(icon3)
self.actionexit.setObjectName("actionexit")
self.actionexit.triggered.connect(self.exit)
self.toolBar.addAction(self.actionopenpic)
self.toolBar.addAction(self.action)
self.toolBar.addAction(self.action_2)
self.toolBar.addAction(self.actionexit)
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
self.init_all()
【使用步骤】
使用步骤:
(1)首先根据官方框架https://github.com/ultralytics/ultralytics安装教程安装好yolov8环境,并安装好pyqt5
(2)切换到自己安装的yolov8环境后,并切换到源码目录,执行python main.py即可运行启动界面,进行相应的操作即可
【提供文件】
python源码
yolov8n.onnx模型(不提供pytorch模型)
训练的map,P,R曲线图(在weights\results.png)
测试图片(在test_img文件夹下面)
【源码下载地址】
https://download.csdn.net/download/FL1623863129/89831493