手把手教人工智能小白创建人工智能算法检测模型---以yolove8的动物智能检测系统为例

作品简介

1. 数据集准备

1.1 收集动物数据

  • 目标类别:确定需要检测的动物种类(例如,猫、狗、鸟等)。
  • 图片数量:每个类别建议收集至少 1000 张图片。
  • 数据来源
  • 免费数据集平台,如 KaggleRoboflow
  • 自行抓取图片或使用开源的动物图片数据集。

1.2 数据标注

  • 使用 LabelImg 对图片进行标注。
  • 保存为 YOLO 格式,每张图片生成一个对应的 .txt 文件,内容格式如下:
class_id x_center y_center width height
  • class_id:类别 ID,从 0 开始编号。
  • x_center, y_center, width, height:边界框中心点坐标和宽高(归一化到 0-1)。

1.3 数据集目录结构

确保数据集目录结构如下:

animal_dataset/
├── images/
│   ├── train/
│   │   ├── cat1.jpg
│   │   ├── dog1.jpg
│   └── val/
│       ├── bird1.jpg
├── labels/
│   ├── train/
│   │   ├── cat1.txt
│   │   ├── dog1.txt
│   └── val/
│       ├── bird1.txt
├── animal_dataset.yaml

1.4 数据配置文件

创建 animal_dataset.yaml 文件:

train: animal_dataset/images/train
val: animal_dataset/images/val

nc: 3  # 类别数(例如:猫、狗、鸟)
names: ['cat', 'dog', 'bird']  # 类别名称

2. 安装 YOLOv8

确保安装了 YOLOv8 和必要的依赖项:

pip install ultralytics

3. 训练模型

使用以下代码训练模型:

from ultralytics import YOLO

# 加载 YOLOv8 的预训练模型
model = YOLO('yolov8n.pt')  # 可选 yolov8n.pt, yolov8s.pt 等

# 开始训练
model.train(
    data='animal_dataset.yaml',  # 数据配置文件路径
    epochs=50,                   # 训练轮数
    imgsz=640,                   # 图片大小
    batch=16,                    # 批次大小
    workers=4,                   # 数据加载线程数
    name='animal_detection',     # 项目名称
    device=0                     # GPU 设备(0 表示使用第一个 GPU)
)

训练过程将:

  • 使用预训练模型 yolov8n.pt
  • 根据提供的数据集 animal_dataset.yaml 微调模型。
  • 训练结果保存在 runs/detect/animal_detection/ 文件夹中。

4. 导出模型

训练完成后,导出模型为 animal_model.pt

model.export(format='torchscript')  # 导出为 TorchScript 格式

模型文件将保存为 animal_model.pt

5. 测试模型

测试模型的检测效果:

# 加载训练好的模型
model = YOLO('animal_model.pt')

# 检测单张图片
results = model('test_image.jpg', save=True)  # 保存检测结果

# 检测视频
results = model('test_video.mp4', save=True)  # 保存视频结果

6. 完成后提供模型

animal_model.pt 放置到主程序所在目录,即可完成程序与模型的集成。

可用的公开数据集

模型优化建议

  1. 更多类别: 如果需要支持更多动物类别,可以扩展数据集并更新 animal_dataset.yaml
  2. 提高精度: 使用更大的模型(如 yolov8s.ptyolov8m.pt)进行训练。
  3. 数据增强: 使用 YOLO 的内置数据增强功能提升模型的泛化能力。

完成后,你的 animal_model.pt 就可以与 GUI 系统配套使用,实现动物智能检测功能!

整个基于pyqt的动物智能系统

主要功能

  1. GUI 界面
  • 使用 PyQt 创建直观的用户界面。
  • 支持加载图片或视频进行检测。
  1. YOLOv8 动物检测
  • 使用预训练或自定义的 YOLOv8 模型。
  • 实时显示检测结果。
  1. 结果保存
  • 用户可以保存标注后的图片或视频。

部分代码实现

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QFileDialog, QVBoxLayout, QWidget, QMessageBox
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtCore import Qt
import cv2
import os
from ultralytics import YOLO

class AnimalDetectionApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("动物智能检测系统")
        self.setGeometry(200, 200, 800, 600)
        self.model = None

        self.init_ui()

    def init_ui(self):
        # 主窗口布局
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QVBoxLayout()

        # 加载模型按钮
        self.load_model_button = QPushButton("加载模型")
        self.load_model_button.clicked.connect(self.load_model)
        self.layout.addWidget(self.load_model_button)

        # 加载图片按钮
        self.load_image_button = QPushButton("加载图片进行检测")
        self.load_image_button.clicked.connect(self.load_image)
        self.layout.addWidget(self.load_image_button)

        # 加载视频按钮
        self.load_video_button = QPushButton("加载视频进行检测")
        self.load_video_button.clicked.connect(self.load_video)
        self.layout.addWidget(self.load_video_button)

        # 显示检测结果的标签
        self.result_label = QLabel("检测结果将在此显示")
        self.result_label.setAlignment(Qt.AlignCenter)
        self.layout.addWidget(self.result_label)

        self.central_widget.setLayout(self.layout)


代码说明

核心功能

  1. 模型加载
  • 用户通过 GUI 加载训练好的 YOLOv8 模型。
  • 检测模型加载错误并弹窗提示。
  1. 图片检测
  • 用户加载图片,调用 YOLOv8 模型进行检测。
  • 标注检测结果,并显示在界面中。
  1. 视频检测
  • 用户加载视频,逐帧检测。
  • 支持实时显示检测进度,并保存标注后的新视频。

运行环境

  1. 安装依赖
pip install pyqt5 ultralytics opencv-python
  1. 运行代码: 将代码保存为 animal_detection.py,通过以下命令运行:
python animal_detection.py

界面功能

  1. 加载模型
  • 用户选择 YOLOv8 模型文件(如 animal_model.pt)。
  1. 加载图片检测
  • 选择图片文件。
  • 显示检测后的图片结果。
  1. 加载视频检测
  • 选择视频文件。
  • 实时检测并保存新视频。

模型训练

如果你需要训练一个动物检测模型,可以参考以下步骤:

  1. 数据准备
  • 收集动物图像数据集并标注(使用 YOLO 格式)。
  • 数据集结构与火灾检测类似。
  1. 训练 YOLOv8
from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # 加载预训练模型
model.train(data="animal_dataset.yaml", epochs=50, imgsz=640)
model.export(format="torchscript")  # 导出模型为 .pt 格式

扩展功能

  1. 类别过滤
  • 添加类别选择器,只显示指定类别的检测结果。
  1. 多线程处理
  • 使用多线程优化视频检测,避免界面卡顿。
  1. 实时摄像头检测
  • 添加摄像头实时检测功能。


附件为构建pyqtGUI窗口代码,看清后购买


创作时间: