YOLOV8实战,从环境配置、数据准备、数据标注、模型训练、模型导出到源码分享
前言:
最近刷到有大佬用目标检测在做害虫密度检测,不明觉厉,心想有时间了我也要去琢磨琢磨物体检测,前几天又有人找我帮忙做cf的敌我检测,这回可是下了决心要磕一磕这个技术了,网上写YOLOV8的教程不少,但是从数据集制作、标注、训练、应用的详细教程往往不在一篇文章中,借鉴起来不是那么方便,所以我把自己摸索路上的一些笔记记录在这个平台,一来是备份,方便我将来自己寻找,二来嘛如果将来有人有相同的需求时也能有个参照
效果展示
图片展示
视频展示
和平精英敌我检测
简介:
【YOLOV8是啥?】
YOLOv8是Ultralytics的最新版本YOLO。作为最先进的 SOTA 模型,YOLOv8 建立在以前版本成功的基础上,引入了新功能和改进,以增强性能、灵活性和效率。
【YOLOV8能干啥?有啥应用场景?】
有应用场景能帮我们更好的掌握这项技术哦,比如我就是从病虫害检测和敌我检测开始入手学习的。
YOLOv8 支持全方位的视觉 AI 任务,包括检测、分割、姿势估计、跟踪和分类。这种多功能性使用户能够在不同的应用程序和域中利用YOLOv8的功能。模型中只需要设定不同的训练模型,就可以得到不同的检测结果。
接下来进入教程了
一、环境准备
1、新建一个虚拟环境
在Anaconda Prompt里面输入以下指令新建环境
conda create --name YOLOV8_1 python=3.9
上面代码里的–name是新建的环境名称,指定python版本为3.9,可按需更改
新建完成后,输入以下代码进入新建的虚拟环境
activate YOLOV8_1
2、配置第三方库
在虚拟环境里输入以下指令下载ultralytic库和labelimg库,其中调用YOLOV8在ultralytic库,数据标注要用到labelimg库
pip install ultralytics
pip install labelimg
3、另外我们需要通过克隆仓库到本地来获得yolov8最新版本。
github地址:,链接直达
https://github.com/ultralytics/ultralytics
4、下载一个预训练模型包
github地址:,链接直达
https://github.com/ultralytics/assets/releases/tag/v8.2.0
网站上提供了s、m、l、x版本,逐渐增大(随着架构的增大,训练时间也是逐渐增大),模型下载好之后和你的代码放在同级文件夹下
5、环境测试
环境准备到这里就差不多了,接下来执行代码测试一下环境搭建是否成功
测试代码
from ultralytics import YOLO
#加载模型,换成你自己的文件位置,图片也一样
model = YOLO(r"D:\YOLOV8\ultralytics-main\Self_Code\yolov8n.pt"
source=r"C:\Users\user2580185125\Desktop\yolov8博客\测试环境.png"
#进行预测并保存
model.predict(source, save=True, imgsz=640, conf=0.7)
测试效果展示
【原图】
【效果图】
这就代表你的环境搭建好了,我们要进入下一步骤了
二、数据集制作
我们测试的图片数据来自游戏视频,当然如果你有自己的图片素材也可,爬虫也可,我先录屏自己玩游戏,之后用代码把视频帧提取出来作为我们的原始图片,在这个上面去标注
①【视频帧提取代码】
import os
import cv2
import sys
import time
#遍历指定目录下所有的视频,按照指定时间间隔截取视频帧
def save_frame(time_in_sec, file_path):
# 打开视频文件
cap = cv2.VideoCapture(file_path)
# 获取视频的帧率
fps = cap.get(cv2.CAP_PROP_FPS)
# 获取视频的总帧数
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
duration = total_frames / fps
num = 0
while(num < duration):
num = num + time_in_sec
# 计算指定时间对应的帧数
frame_number = int(num * fps)
# 设置视频的当前帧
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_number)
# 读取当前帧
ret, frame = cap.read()
if ret:
timestamp = int(time