当前位置: 首页 > news >正文

基于yolov8的100种蝴蝶智能识别系统python源码+pt模型+训练日志+精美GUI界面

【算法介绍】

基于YOLOv8的100种蝴蝶智能识别系统是一个结合了深度学习和人工智能技术的先进工具,旨在提高生物多样性监测和保护领域的效率和精确度。该系统利用YOLOv8深度学习算法,通过9955张图片的训练,能够准确识别100种不同的蝴蝶类型,准确率高达94.8%。

该系统具备多项核心功能,包括支持图片、批量图片、视频以及摄像头的实时检测,并能在界面上实时显示识别结果、置信度以及用时等信息。这使得科研人员、环保人员、自然保护区工作人员以及教育工作者等多个群体都能轻松利用该系统,进行生态研究、环境监测、自然保护区管理以及科普教育等工作。

该系统通过Python与PyQt5开发,具有简洁明了的用户界面,使得非专业人士也能快速上手。此外,该系统所收集的数据还能丰富生物多样性数据库,为未来的研究提供参考。

总的来说,基于YOLOv8的100种蝴蝶智能识别系统为环境和生态研究提供了一个有效的技术工具,不仅提高了识别的精确度和效率,还为生物多样性保护和相关科普教育开拓了新的途径。此系统的推广使用有助于提升自然环境保护意识,推动可持续发展目标的实现,是自然科学与人工智能技术结合的一个典范。

【效果展示】

【测试环境】

windows10
anaconda3+python3.8
torch==1.9.0+cu111
ultralytics==8.2.95

【模型可以检测出类别】

88_an
admiral_red
adonis
african_giant_swallowtail
american_snoot
appollo
arcigera_flower_moth
argus_brown
atala
atlas_moth
awl_banded_common
banded_gold
banded_heliconian_orange
banded_moth_tiger
banded_peacock
barred_flasher_two
beckers_white
birdwing_brookes
birdwing_cairns
bird_cherry_ermine_moth
bird_hawk_humming_moth
black_hairstreak
blue_chalk_hill
blue_crow_spotted
blue_morpho
brown_siproeta
burnet_moth_sixspot
cabbage_white
cattleheart_celled_green
checquered_skipper
chestnut
cinnabar_moth
clearwing_moth
cleopatra
cloak_mourning
clodius_parnassian
clouded_sulphur
coma_eastern
comet_moth
common_wood-nymph
copper_purplish
copper_tail
cracker_red
crecent
crimson_patch
danaid_eggfly
dapple_eastern_white
dogface_southern
eastern_elfin_pine
eggfly_great
elbowed_pierrot
emperor_gum_moth
garden_moth_tiger
giant_leopard_moth
glittering_sapphire
great_jay
green_hairstreak
grey_hairstreak
hairstreak_purple
hawk_moth_oleander
hercules_moth
indra_swallow
io_moth
iphiclus_sister
julia
kite_paper
lady_painted
large_marble
leafwing_tropical
lined_moth_sphinx_white
long_wing_zebra
luna_moth
madagascan_moth_sunset
malachite
mangrove_skipper
maple_moth_rosy
mark_question
mestra
metalmark
milberts_tortoiseshell
monarch
moth_polyphemus
oakleaf_orange
orange_sleepy
orange_tip
orchard_swallow
peacock
pine_white
pipevine_swallow
popinjay
postman_red
purple_red_spotted
queen_straited
satyr_wood
scarce_swallow
silver_skipper_spot
sootywing
swallow_tail_yellow
ulyses
viceroy

 【训练数据集】 

https://blog.csdn.net/FL1623863129/article/details/136389074

【训练信息】

参数
训练集图片数8918
验证集图片数1037
accuracy_top194.8%
accuracy_top599.1%
训练轮数100
batch_size512
模型输入(256,256)
【部分实现源码】
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-cls.pt
训练的日志csv文件(在weights\results.csv)
测试图片(在test_img文件夹下面)

完整源码下载地址:

https://download.csdn.net/download/FL1623863129/89822029


http://www.mrgr.cn/news/39745.html

相关文章:

  • 在PC端连接苹果手机(iPhone)时,即使已经开启了开发者模式(开发者权限),但仍然无法成功连接,是什么原因?
  • 特征工程——一门提高机器学习性能的艺术
  • 【LeetCode】动态规划—5. 最长回文子串(附完整Python/C++代码)
  • JDBC进阶
  • 【vs code(cursor) ssh连不上服务器(2)】但是 Terminal 可以连上,问题解决 ✅
  • C#名片识别接口集成方式、文字识别API
  • C++ STL(1)迭代器
  • 微信小程序 图片的上传
  • InnerClassLambdaMetafactory 内部类Lambda元工厂 源码解析
  • [Cocoa]_[初级]_[绘制文本如何设置断行方式]
  • 内核级理解套接字和全连接队列
  • 物联网智能设备:未来生活的变革者
  • centos发送邮件教程:从配置到发送全攻略!
  • 头戴式耳机性价比排名怎样?头戴式耳机性价比之王推荐!
  • 新考纲下的PMP考试有多难?
  • 谁在「力挺」激光雷达
  • 理解 Vue 的 setup 应用程序钩子
  • CDN与高防服务:区别与应用场景
  • YOLO11 | 一年更三版 版版不一样 | 关键改进及网络结构图【全网首发】
  • 深入掌握 Protobuf 与 RPC 的高效结合:实现C++工程中的高效通信