目录
一、源码下载
在Github上面可以找到yolov5的源码。
在下面步骤中用的项目:
链接: https://pan.baidu.com/s/1-AahzGVu8ia8RQOFTPWBNQ?pwd=wxgd 提取码: wxgd 复制这段内容后打开百度网盘手机App,操作更方便哦
解压出来既可
二、环境搭建
1.安装Anaconda,搭建虚拟环境
Anaconda的安装还是很简单的,按照指引下一步下一步安装即可安装完成
安装完成后
这个时候你就已经安装完Anaconda了,但是你在cmd中还是调用不到conda命令,你还需要在环境变量中去添加
1.1 配置Anaconda的环境变量
桌面右键此电脑-点击属性-高级系统设置-环境变量
系统变量中找到Path-双击进去
你需要找到你安装Anaconda的路径,并把这五个路径添加进去。
添加的操作-在右边新建-浏览-然后找到你的安装路径
打开cmd-输入conda --version,可以验证环境变量是否添加成功
1.2 创建环境
打开cmd-输入conda create -n yolov5 python=3.8。conda create -n [环境名] python=3.8
这样就创建完成了
然后输入conda activate yolov5 启动环境,启动成功左边会显示你的环境名。有时候会提示你要初始化一下才可以启动环境,看上面给你提示的指令,我这是没有提示,所以不用。-初始化指令:conda init
三、配置训练环境
1.CPU训练环境配置
启动环境--进入yolov5-master项目路径。我下载的是在桌面,就从桌面进去。
输入pip install -r requirements.txt
pip & conda换成清华源
如果安装慢的话可以先换国内源。
我pip使用的是清华源:pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
conda也是清华的:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
安装完成。
安装Git
Git官网下载地址:Git - 下载软件包 (git-scm.com)
因为我这之前就安装过了,再次安装的话会跳过选择组件。基本这个按照指引下一步走就行。
这时候你就可以验证一下了。
输入:python detect.py
等待进度条下载完成
那你将会得到两张训练好的图片,找到对应的路径就可以看到。(红色框框是路径,在yolov5-master项目下找到)
为了后续可以更方便的管理项目,可以下载个vscode
1.1 创建自己的训练集
完成了环境配置后,我们就可以准备自己的训练集了。
第一步:物体拍摄
对要训练的物体拍照,什么方式都可以,我是弄了个python程序来拍摄。
插上USB外置摄像头,如果电脑自带了也可以使用本机的。
将程序端口改为"1",本机的是"0',
设置分辨率。
设置保存图片的文件夹路径
当运行程序后,会有一个窗口显示画面。当按下“s”会保存一张照片,命令行会显示保存了几张照片。
按“q”关闭窗口,这时候桌面会创建一个文件夹来保存照片,因为我给的路径在桌面。
出于演示,我就不拍摄这么多了,我就用之前的数据集。
注意!!!这里是出于演示,正常一个物体的素材不应该这么少,素材少了会导致置信度低或识别不出来。我一般是一个物体100张照片,训练次数100次。也就是epoch 100
第二步:物体标注
下载标注工具(LabelImg):Releases · HumanSignal/labelImg (github.com)
解压完成后打开data路径下的文件
双击打开后-清空里面的内容-添加你训练物品的名称(你一次训练多少个物体,就添加多少个物体的名称,我只有一种就添加一种的)
然后返回打开.exe文件.
open Dir:找到需要标签的图像路径打开
Change save Dir: 保存标签文件的路径(没有的话,创建一个文件夹来存储标签文件)
pasclVOC:点击一下切换成yolo格式
Use default labtel: 在方框勾选后,在后面输入图片名字。
View-Auto Save mode:自动保存标签文件
都打开后,就可以开始标注了,按"w"会出现一个十字框,对着物品拉就行了。右上角那个如果勾了,不会出现标签列表,它会自动帮你按你输入的名称标注,注意千万别输错了,会导致序号出错,标签名称也会对应不上。
接下来就是枯燥乏味的框框框啦,还好我的数据少。
第三步:筛选训练集和验证集
在项目中创建一个文件夹来存放图像
yolov5-master创建imagedata文件夹,在放入test数据集
注意!!!我这里是images,前面是少了一个s,后面都会按照images来操作。
接下来就用程序来让它分出训练集和验证集,打开apportion.py脚本,在下面路径中指向我们的数据集
file_path:指向图片的路径
xml_path:指向标签的路径
new_file_path:筛选后的数据集存放路径
执行等待,结束后就可以在文件夹中看到筛选好的数据集了
1.2 CPU开始训练
训练开始前,还需要设置一下路径。
创建test_data.yaml文件
train:指向分配好的数据集中的训练集
val : 指向分配好的数据集中的验证集
nc:种类
names:0(序号) : 名称
设置完后,打开cmd,进入配置好的虚拟环境中
输入:python train.py --data test_data.yaml --weights yolov5s.pt --img 640 --epoch 5 --batch-size 4 --device cpu
data:指向刚创建test_data.yaml文件
weights:指向的是预训练模型
img:图片大小
epoch:训练次数
batch:每批放进去训练的图片张数
device :训练用的硬件
训练结束后会提示路径,在这个路径下会有last.pt和best.pt两个模型文件。
last.pt: 保存的是训练过程中的最后一个状态
best.pt:保存的是训练过程中最佳的一个状态
1.3 推理验证
插上外置usb摄像头
cmd输入:python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.6 --source 1 --view-img
weights: 路径指向训练好的模型
img: 图像大小
conf: 置信度,当物品识别的值小于0.6不显示
source: 选择摄像头 “1”是外置,“0”是本机
view-img: 打开窗口显示图像。
可以看到窗口中成功识别出了耳机,因为素材太少所以置信度不高。
那么当我们素材过多的时候,如果还是用cpu来训练的话,那就太慢了,所以我们用GPU来跑。
2. GPU训练环境配置
2.1安装cuda
先确认显卡支持cuda的最高版本是多少
在cmd中输入:nvidia-smi.exe
红框的就是显卡支持的最高版本。
因为cuda是配合pytorch来使用的,而现在pytorch支持最新的版本是12.1。(当然你可以安装最新的12.5,听说是可以向下兼容的)
那我们就装个12.1的。
打开CUDA下载地址:CUDA Toolkit 12.1 Update 1 Downloads | NVIDIA Developer
接下来进入安装步骤,只需要注意一步,剩下的按照指引下一步下一步即可。
这里选自定义
然后再CUDA中将Visual Studio Integration去掉,接着下一步安装即可。
因为我已经装过了,我就不下一步了。
2.2 配置cuda环境变量
好,现在cuda已经装完了,那接下来还要配置它的环境变量。
现在系统变量中找到这两项(如果有就可以不用管了)
下一步进入系统变量的Path中,添加以下两项
添加好后验证一下。
cmd中输入:nvcc -V
这就是添加成功了。
2.3 安装pytorch
conda activate yolov5进入我们创建的虚拟环境中。
上pytorch官网复制对应cuda的版本:PyTorch
我这里下载的是12.1的,使用conda来安装,pip安装这个容易报错。
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
将上面这行指令复制到虚拟环境下安装。
2.4 GPU开始训练
安装完成后,进入到我们的项目。
还是我们的训练指令,但是要修改一下,将device cpu 改成 device 0,你的电脑也可能需要的是device 1,优先0如果报错可以改成1。
可以训练cpu训练的那个数据集,这样就你就可以看到这训练的速度差点可不是一星半点。
python train.py --data test_data.yaml --weights yolov5s.pt --img 640 --epoch 100 --batch-size 16 --device 0
当你显示出这行的时候,说明你的GPU被成功识别到了,那接下来看进度条从眼前飞过就行了。我的素材少所以很快。
当到了这里,说明你成功用你的GPU训练出了模型,快去试试效果吧~