YOLOv5物体检测

一、环境安装

1.1、anaconda安装 ,根据官方地址一步步安装,此略过。

python 复制代码
https://www.anaconda.com/download

创建虚拟环境

python 复制代码
conda  create -n yolov5 python=3.8

配置国内源,加速下载 (可选)

python 复制代码
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

1.2、pytorch安装

https://pytorch.org/index.html

https://pytorch.org/get-started/previous-versions/

python 复制代码
# 选择V1.8.2版本下
# CUDA 10.2 (英伟达显卡1650/1600/..选择)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
# CUDA 11.1 (英伟达显卡30以上选择)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111
# CPU Only (电脑没有GPU选)
pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cpu

1.3、yolov5下载

python 复制代码
https://github.com/ultralytics/yolov5/tree/master

下载yolov5 v7.0版本

https://github.com/ultralytics/yolov5/releases/tag/v7.0 AssetsSource code.zip压缩包

1.3.1 requirements.txt文件修改

修改yolov5模型内的requirements.txt文件,主要是

python 复制代码
numpy==1.18.5修改 numpy==1.20.3
Pillow==7.1.2修改 Pillow==8.3.0
注释掉torch,torchvision,因为文件内的版本和实际pytorch下载对应的版本可能不同,且已经有下载

1.3.2 下载预训练模型

yolov5有yolov5n、yolov5s、yolov5m、yolov5l、yolov5x五种参数模型,模型对应的参数params依次增加。

Assets 下下载五种模型,放置到yolov5-7.0文件夹下。

1.3.3 模型测试

通过终端输入以下内容,检验模型检测效果。

python 复制代码
python detect.py

二、模型检测

2.1、关键参数

weights:训练好的模型文件

yolov5n、yolov5s、yolov5m、yolov5l、yolov5x五种参数模型。

python 复制代码
python detect.py --weights yolov5s.pt
python detect.py --weights yolov5x.pt

source:检测的目标,可以是单张图片、文件夹、屏幕或者摄像头等

python 复制代码
python detect.py --weights yolov5s.pt --source 0   #摄像头
											   img.jpg #图片
											   vid.mp4 #视频
python detect.py --weights yolov5s.pt --source data/images/bus.jpg	
python detect.py --weights yolov5s.pt --source screen #整个屏幕检测									   

conf-thres :置信度阈值,越低框越多,越高框越少

python 复制代码
python detect.py --weights yolov5s.pt --conf-thres 0.8

iou-thres :iou阈值,越低框越少,越高框越多

三、数据集构建

3.1、标注工具

视频类数据集可以使用opencv进行视频抽帧

python 复制代码
import cv2
import matplotlib.pyplot as plt
video = cv2.VideoCapture('./bat.mp4')
ret,frame=video.read()
plt.imshow(frame)
plt.imshow(cv2.cvtcolor(frame,cv2.COLOR_BGR2BGR)) #转换图片通道

num=0
save_step=30  #间隔帧
while True:
	ret,frame=video.read()
	if not ret:
		break
	num+=1
	if num % save_step ==0:
		cv2.imwrite('./images/'+str(num)+".jpg",frame)

labelimg

python 复制代码
pip install labelimg

输入labelimg

(1) 打开文件夹Open Dir,确定文件存储位置Change Save Dir

(2) 点击PascalVOC使图片以YOLO格式存储

(3)点击图片目标,出现Create_RectBox进行标记

(4)图片标记label格式为txt,包括五条数据,第一个为类别,后四个为目标坐标

四、模型训练

4.1、数据处理

image :存放图片

train:训练集数据

val:验证集数据
label :存放标签

train:训练集标签,与训练集图片命名一一对应

val:验证集标签,与验证集图片命名一一对应

classes.txt不需要放文件内

4.2、关键参数

data :数据集描述文件
weights :预训练权重文件

data默认是选择coco128.yaml,此处复制coco128.yaml文件命名为bvn.yaml。主要根据自己路径修改里面path、train、val参数,其中classes根据实际目标检测对象类别进行修改

python 复制代码
path: ../datasets/coco128  # dataset root dir
train: images/train2017  # train images (relative to 'path') 128 images
val: images/train2017  # val images (relative to 'path') 128 images
test:  # test images (optional)
# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter

weights默认是选择yolov5s.pt模型,此处可以根据实际情况更改为yolov5n、yolov5m、yolov5l、yolov5x四种模型进行训练。

4.3、模型结果解读

模型训练结果会在run文件夹下的train文件的exp.中,文件内包含很多参数,其中weights中有训练最好的best.pt和最差的last.pt模型。

可以在终端通过tensorboard --logdir runs进行展示结果

五、模型验证

根据预训练完的模型,得到weights中有训练最好的best.pt,通过终端输入以下参数进行模型验证

python 复制代码
python val.py --weights runs/train/exp34/weights/best.pt

可以通过参数将图片/视频/...结果输出到桌面(--view-img)

python 复制代码
python val.py --weights runs/train/exp34/weights/best.pt --source datasets/xx.jpg --view-img

train中包含很多输出,其中包含训练的batch结果,验证集的val_batch0_pred.jpg结果。

相关推荐
AntBlack15 分钟前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
杜子不疼.2 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
myzzb3 小时前
基于uiautomation的自动化流程RPA开源开发演示
运维·python·学习·算法·自动化·rpa
TLuoQiu3 小时前
小电视视频内容获取GUI工具
爬虫·python
我叫黑大帅3 小时前
【CustomTkinter】 python可以写前端?😆
后端·python
胡耀超3 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr
java1234_小锋3 小时前
一周学会Matplotlib3 Python 数据可视化-绘制自相关图
开发语言·python·信息可视化·matplotlib·matplotlib3
Coovally AI模型快速验证5 小时前
YOLO、DarkNet和深度学习如何让自动驾驶看得清?
深度学习·算法·yolo·cnn·自动驾驶·transformer·无人机
Juchecar6 小时前
分析:将现代开源浏览器的JavaScript引擎更换为Python的可行性与操作
前端·javascript·python
科大饭桶6 小时前
昇腾AI自学Day2-- 深度学习基础工具与数学
人工智能·pytorch·python·深度学习·numpy