基于yolov5的鸟类图像准确识别

本文详述了基于yolov5的鸟类图像识别项目,从数据集制作到模型训练,再到测试结果的展示。通过调整训练轮数和参数,实现了对六种鸟类的准确定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目要求

现有不同种类的鸟,每一类有5张图,要求是对每一幅图中的鸟进行准确定位,即用bounding box将图中的鸟框出来。演示如下:

在这里插入图片描述

实现步骤:

1、数据集的制作

使用Make Sense网站制作数据集,创建六类鸟的labels,并对图像进行标注,并将其导出为yolov所使用的文件形式
创建标签数据集制作
下载制作好的数据集

2、下载yolov5官方代码,并下载yolov5s.pt,将其作为预训练使用的权重。
3、在目录下新建一个mydata文件夹,在该文件夹下面新建如下图的文件夹

创建文件夹
其中image的train和val文件夹中存放训练和预测的图片,labels下面存放制作好的数据集和用来预测的数据集(val下面的文件是后面运行过程中生成的),test文件夹下存放用来测试的图片。

4、在文件中放入yolov5s.pt预训练权重。

放入预训练权重

5、将文件打包上传到colab上(本计算机算力不够,故采用colab进行训练)
6、修改colab配置,选择使用GPU进行训练

修改笔记本设置

7、使用指令解压文件
!unzip -uq birds.zip
8、使用指令切换工作目录,并安装yolov5所需要的依赖库
%cd /content/birds/yolov5-master/
!pip install -r requirements.txt
9、将data目录下的VOC.yaml复制一份,并将其命名为birds.yaml,并修改以下代码为自己的文件路径
train: /content/birds/yolov5-master/mydata/images/train  # train images (relative to 'path')  30 images

### 使用YOLOv5进行鸟类识别的UI界面设计 对于使用YOLOv5进行鸟类识别的应用程序,其用户界面(UI)的设计至关重要。为了使应用程序易于使用且功能强大,通常会选择合适的工具和技术来构建这个界面。 #### UI技术选型 在开发基于YOLOv5鸟类识别应用时,可以考虑使用Python中的PyQt5库作为UI框架[^3]。PyQt5提供了丰富的组件和灵活的功能,非常适合用来创建跨平台的应用程序。它允许开发者轻松集成复杂的逻辑操作到图形界面上,从而提升用户体验。 #### 数据集配置 当涉及到具体的技术细节方面,在YOLOv5项目中`data.yaml`文件扮演着重要角色。此文件包含了有关数据集的关键信息,比如训练集和验证集的位置以及类别的总数目等。以下是简化版的数据配置示例: ```yaml train: ../data/train/images val: ../data/val/images nc: 200 # 类别数量 names: ['类别1', '类别2', ..., '类别200'] ``` 这段代码片段展示了如何设置路径指向本地存储的不同类型的图像集合,并指定了共有多少种不同的鸟类需要被区分出来[^2]。 #### 用户交互流程 一旦完成了上述准备工作之后,则可以通过编写相应的Python脚本来启动摄像头或者加载静态图片来进行实时预测。这些预测结果会被传递给前端GUI部分以便于可视化呈现给最终使用者观看。例如,可以在界面上显示检测框、置信度分数以及其他相关信息。 #### 示例代码结构 这里给出一段简单的伪代码表示如何连接YOLOv5模型与PyQt5 GUI: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.QtGui import QPixmap import torch from models.experimental import attempt_load from utils.general import non_max_suppression, scale_coords from utils.datasets import letterbox class BirdRecognitionApp(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle('Bird Recognition') self.setGeometry(100, 100, 800, 600) label = QLabel(self) pixmap = QPixmap('path_to_image.jpg') # 替换成实际图片路径 label.setPixmap(pixmap) label.resize(pixmap.width(), pixmap.height()) button = QPushButton('Detect Birds', self) button.clicked.connect(self.detect_birds) def detect_birds(self): model = attempt_load('best.pt', map_location=torch.device('cpu')) # 加载预训练权重 img_path = 'path_to_test_image_or_video' source_img = cv2.imread(img_path) processed_img = letterbox(source_img)[0] results = model(processed_img) detections = non_max_suppression(results.pred[0], conf_thres=0.4, iou_thres=0.5) for det in detections: if len(det): xyxy = det[:, :4].view(-1).tolist() confidence = round(float(det[:, 4]), 2) class_name = names[int(det[:, 5])] draw_rectangle_on_image(xyxy, source_img) add_text_above_box(f'{class_name} {confidence}', xyxy, source_img) if __name__ == '__main__': app = QApplication(sys.argv) window = BirdRecognitionApp() window.show() sys.exit(app.exec_()) ``` 以上代码仅作为一个概念性的演示,实际部署过程中还需要根据具体情况调整参数和其他细节之处。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值