训练普通模型:
一.安装与导入依赖(参考前一篇文章)
二.加载yolo模型
model=torch.hub.load('ultralytics/yolov5','yolov5s',pretrained=True)
三.使用yolov5进行图像物体识别
imgs=[] #图片地址
results=model(imgs) #识别图像
print(results) #输出结果
展示识别的图像:
plt.imshow(results.rander()[0])
四.利用OpenCV实现实时物体识别(识别一段视频)
训练自定义模型:
导包
配置参数(采集类别)
采集 图像数据集(导入一段视频可以按帧数分割成图片)
import cv2
import os
def extract_frames(video_path, output_folder):
# 检查输出文件夹是否存在,如果不存在则创建
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 打开视频文件
cap = cv2.VideoCapture(video_path)
frame_count = 0
# 读取视频帧
while cap.isOpened():
ret, frame = cap.read()
# 如果成功读取帧
if ret:
# 构造输出图像文件路径
output_path = os.path.join(output_folder, f"frame_{frame_count}.jpg")
# 保存帧为图像文件
cv2.imwrite(output_path, frame)
frame_count += 1
else:
break
# 关闭视频文件
cap.release()
cv2.destroyAllWindows()
# 视频文件路径
video_path = 'path/to/your/video.mp4'
# 输出图像文件夹路径
output_folder = 'output_frames/'
# 提取帧并保存为图像文件
extract_frames(video_path, output_folder)
用labelimg给图片打标签
1.在对应的虚拟环境终端安装labelimg
pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple
2.新建一个文件夹,用来存自己的数据集(!!所有路径必须是英文,不能有中文)
Lableimg— VOC2007 —
{
Annotations #用来存放标签
JPEGImages #用来存放图片
classes.txt #用来放类别名
}
在VOC2007文件夹下打开cmd
输入命令
labelimg JPEGImages classes.txt
3.使用labelimg进行数据标注
设置需要打标签的图片在哪里(JPEGImages)以及打好标签的图片应该放置在哪里(Annotations)
打完标签后label文件夹会放一个classes.txt里面放的是框的种类
4.打标签
打标签的快捷键:
A:切换到上一张图片
D:切换到下一张图片
W:调出标注十字架
del :删除标注框框
五.配置训练模型
在dataset.yml(去掉注释,用绝对路径/)
path:# 表示数据集的路径,即数据集所在的文件夹或目录的路径。
train:#训练集的文件路径或者文件列表
val:#验证集的文件路径或者文件列表
test:#测试集的文件路径或者文件列表
names:#类别名称列表,即数据集中所有可能的类别或标签的名称
训练数据:train.py
python train.py --data dataset.yaml --weights yolov5s.pt --img 640 --batch-size 16 --epochs 50
-
train.py
是用来执行模型训练的 Python 脚本。 -
--data dataset.yaml
: 这个参数指定了数据集的配置文件的路径 -
--weights yolov5s.pt
: 这个参数指定了初始权重文件的路径,用来初始化模型的参数 -
--img 640
: 这个参数指定了输入图像的尺寸大小,其中640
表示图像的宽度和高度都是 640 像素 -
--batch-size 16
: 这个参数指定了每个批次中包含的样本数量 -
--epochs 50
: 这个参数指定了训练的周期数,其中50
表示训练会进行 50 个周期
6.使用定制模型
model=torch.hub.load('ultralytics/yolov5','custom',path='yolov5/runs/../best.pt,prtrained=True')
-
'ultralytics/yolov5'
: 这是模型的名称,指定了要加载的模型是yolov5
,而ultralytics
是模型的提供者。-
custom
: 这个参数指定了加载的模型类型是自定义的。这意味着该模型并非官方提供的预训练模型,而是在自定义数据集上训练得到的。 -
path='yolov5/runs/../best.pt'
: 这个参数指定了模型的权重文件的路径。 -
pretrained=True
: 这个参数指定了加载的模型是否要使用预训练权重。设置为True
表示加载的模型将使用预训练权重。
-