YOLOv5 模型检测
1.关键参数(常用)
(1)weights:训练好的模型文件
(2)source:检测的目标,可以是单张图片、文件夹、屏幕或者摄像头等
python detect.py --weights yolov5s.pt --source 0 #打开摄像头/img.jpg #打开图片/video.mp4 #视频/screen #整个屏幕
(3)conf-thres:置信度阈值,越低框越多,越高框越少
(4)iou-thres:IOU阈值,越低框越少,越高框越多
(5)max-det:在一张图片中最大的检测数量
(6)classes:指定类别以后,只检测出指定的类别
2.基于torch.hub的检测方法
import torch
# 确保你提供的路径正确,并且该目录包含hubconf.py文件
model_dir = 'E:/yolov5-7.0/'
# 从本地路径加载YOLOv5s模型
model = torch.hub.load(model_dir, 'yolov5s', source='local')
# 确保图像路径正确
image_path = './data/images/cat.png'
#Results
results = model(image_path)
# 显示结果
results.show()
YOLOv5 数据集构建
准备工作
1.数据收集
图片
视频(用OpenCV进行抽帧)
创建一个resource的文件夹,结构如下
在extra.ipynb中写入以下代码
import cv2
import matplotlib.pyplot as plt
#打开视频
video = cv2.VideoCapture("./favorite.mp4")
#读取一帧
ret,frame = video.read()
img = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
plt.imshow(img)
试运行,能看到一帧图像.
接着在extra.ipynb中写入以下代码,会在images文件夹下传入指定帧的图像.
video = cv2.VideoCapture("./favorite.mp4")
num = 0 #计数器
interval = 10 #间隔帧
while True:
ret,frame = video.read()
num += 1
if ret:
if num % interval == 0:
cv2.imwrite("./images/"+str(num)+".jpg",frame)
else:
break
2.标注工具
打开终端,激活YOLOv5的环境,输入“pip install labelimg”命令.
下载好以后输入“labelimg”.
点击opendir,选择要标注的图片所在的文件夹,弹出的第二个框选择label(标注好的图像放置的文件夹),建议images和label并列.
在左侧栏目中找到并把它替换为yolo,再点击save,最终就会以YOLOv5的方式存下来.同时在view中打开auto save mode,这样不用每次手动保存.
开始标注每一张图像.
快捷键W: Create RectBox
A: 上一张
D: 下一张
模型训练
1.整理数据集
images文件夹下有train(训练集)和val(验证集)两个文件夹,label文件夹下也有train和val两个文件夹,classes.txt可以放在外层文件夹(我的是resource),即与images并列.
2.关键参数
weights:预训练的权重文件
data:数据集
在官方给定的文件基础上再次训练,打开data目录下coco128.yaml
path:数据集所在位置
train:训练集所在位置
val:验证集所在位置
改写对应参数可以开始训练,把resource文件夹放入yolov5-7.0文件夹下,coco128.yaml复制一份并重名名为initial.yaml,对应路径改为
names的东西改为设定的标签:
在train.py里面修改路径
开始训练模型(注意:这个时候有报错可能是一些模块没有安装好,比如pandas,seaborn等,根据报错信息安装好就可以了)
训练好以后根据提示路径打开,weights文件夹下有两个权重文件,best.pt是训练过程中最好的模型,last.pt是训练过程中最后一轮模型,根据需要选择.
在终端输入tensorboard --logdir runs查看训练过程中各项指标的变化,默认情况下,TensorBoard会在localhost的6006端口运行,如果被占用,通过tensorboard --logdir runs --port 6007来指定另一个端口.根据网址打开TensorBoard可以查看训练过程中某些指标变化和模型结构,ctrl+C 可以退出TensorBoard.