目标检测——基于 YOLOv8 实现图像检测

目录

目标检测——基于 YOLOv8 实现图像检测

注:自己用 PyCharm 创建一个空项目,并配置 conda 环境.

安装依赖项

注:最好是 通过 Acaonda 打开 你要安装到的环境,使用以下命令.

Ultralytics

  • pip 命令:
pip install ultralytics
  • 这里作者已经下载过了,输入命令回车之后会出现以下结果:

其它所需依赖项

  • 将官网的requirements.txt文件下载到自己项目的根目录下:

  • 输入以下命令安装依赖项:
pip install -r requirements.txt

准备数据集

下载数据集

  • 作者自制了游戏原神的数据集game.zip(已标注好,有 YOLO 所需的 yaml 文件):链接:https://pan.baidu.com/s/1HBbGCzSosiZy8j7ydjWoSQ?pwd=e376

  • 下载放置到项目根文件夹/datasets即可:

数据集说明

注:

  • 自制数据集文件夹 格式
datasets
  |--game
    |--images
      |--train
        |--xx1.png
      |--val
        |--xx2.png
    |--labels
      |--train
        |--xx1.txt
      |--val
        |--xx2.txt
  • game/labels/train/classes.txt总分类文件,显示了数据集所有标注的 类别

训练

注:训练成功后自动生成runs文件夹.

预训练模型

类型准确度耗时长运算次数/秒
YOLOv8n37.380.48.7
YOLOv8s44.9128.428.6
YOLOv8m50.2234.778.9
YOLOv8l52.9375.2165.2
YOLOv8x53.9479.1257.8

源码

  • 【文件】:train.ipynb
from ultralytics import YOLO

# step 1:设置所需文件路径
pretraining_model_path = 'yolov8n.pt'  # 预训练模型路径(若路径下无模型,会自动下载模型)
data_path = 'datasets/game/game.yaml'  # 数据集 yaml 路径

# step 2:加载模型
model = YOLO(pretraining_model_path)  # load a pretrained model (recommended for training)

# step 3:模型训练
model.train(data=data_path, epochs=300)

结果

验证

注:

  • 这里作者制作数据集时由于时间有限,实在是不想自己再找验证集标注了,就从训练集中随机抽取了64张作为了验证集,读者可自行更换验证集.
  • 同样,如何标注,见 ——> 使用 labelImg 标注数据_Re.Gin的博客-CSDN博客

源码

from ultralytics import YOLO

# step 1:设置所需文件路径
model_path = 'runs/detect/train2/weights/best.pt'  # 模型路径

# step 2:加载模型
model = YOLO(model_path)  # load a pretrained model (recommended for training)

# step 3:模型验证
metrics = model.val()
print("模型评估参数表:")
print(metrics.box.maps)  # a list contains map50-95 of each category

结果

预测

源码

from ultralytics import YOLO
from PIL import Image
import os
import matplotlib.pyplot as plt
import numpy as np

# step 1:设置所需文件路径
model_path = 'runs/detect/train2/weights/best.pt'  # 模型路径
source = 'datasets/game/images/predict'  # 推理来源

# step 2:加载模型
model = YOLO(model_path)  # load a pretrained model (recommended for training)

# step 3:模型预测
results = model.predict(source=source , save=True)

# step 4:显现预测结果
results_folder = 'runs/detect/predict2'  # 结果图片文件夹路径

# 获取结果文件夹中的所有图片文件
result_images = [os.path.join(results_folder, filename) for filename in os.listdir(results_folder) if
                   filename.endswith((".jpg", ".png", ".jpeg"))]

plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用中文字体

# 创建多图显示,每行显示3张照片
num_images = len(result_images)
num_columns = 3  # 每行显示3张照片
num_rows = (num_images + num_columns - 1) // num_columns  # 计算行数

fig, axes = plt.subplots(num_rows, num_columns, figsize=(15, 3 * num_rows))

# 批量分类图像并输出结果
for i, ax in enumerate(axes.ravel()):
    if i < num_images:
        # 获取当前图像的文件名
        image_name = os.path.basename(result_images[i])

        # 显示图像和判断结果 
        image = Image.open(result_images[i])
        ax.imshow(np.array(image), aspect='auto')
        ax.set_title(f"图片名称: {image_name}")
        ax.axis("off")

# 自动调整子图布局
plt.tight_layout()
plt.show()

结果


作者项目源码

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值