任务一:跑通yolov5的demo并训练出自己的数据集

看!这是什么,这是这位社团成员在11月6日未能按时提交的实验报告。

由于笔者不愿公开的原因,笔者于11月5日方开始正式搜索相关信息开始尝试完成任务。

当我开始正视这份任务要求时,这个句子仿若天书:anaconda的虚拟环境是什么?yolov5是什么?跑通demo的测试???好几个的陌生的专业名词让我头昏脑乱,将整句话复制到bing上却找不到满意的结果更让我打消了速胜战的念头(说人话:没办法赶得及ddl交了)

于是笔者开始拆分句子,从专业名词入手,那便从早之前落败过的anaconda开始吧。

通过上bilibili看视频以及在bing上搜来搜去

笔者了解到anaconda是包含了python可用的的各种软件以及科学包的集合。其中能够使anaconda使用便捷的是conda这个环境管理工具。当然,如果只使用python用pip也是ok的

anaconda的详细安装在此就不赘述,网络上有其他更专业的教程,而本博客的目的是简要记录本次实验过程以及问题。

烦扰到我的一点就是,anaconda的安装需要电脑上没有python,由于这是新电脑,本人并没有安装,但担心安装了anaconda之后又重复安装python不太好,所以到现在都不知道怎么直接用python,虽然anaconda安装了,spyder也能打python代码,但是用的不是很习惯。我很想念我的IDLE。如果有好心人知道怎么直接打开,请速速联系我

话说回来,anaconda创建虚拟环境以及在虚拟环境中安装依赖包是本次实验的基础条件。虚拟环境的必要性在于当我们接触深度学习之后,将会了解到更多其他的模型等,而它们所依赖的包,软件,软件版本都是不一样的。假如我们只在最基础的环境内安装这些包和软件,不仅使得这个大环境内乱,不易管理,还容易产生版本冲突等问题。

在安装好anaconda后,我们可以打开系统自带的cmd或者anaconda promote,使用以下命令行对虚拟环境进行管理

虚拟环境创建

conda create -n 所创建的虚拟环境名字 python=xx版本号

虚拟环境查看

conda env list

进入虚拟环境

anaconda activate 需要进入的虚拟环境的名字

退出虚拟环境

conda deactivate

在虚拟环境安装某个指定版本软件或者依赖包

conda install 需要安装的东西的名字

在只需要安装跟python软件相关的包时同样可以将conda 改为pip

在创建好虚拟环境后,就开始了解一下本次任务用到的yolov5究竟是什么

yolo是目标识别算法的一种类别,一个系列

yolov5是该系列中的一个版本,可以在GitHub上找到官方的下载

这里我搜了很久yolov5的demo这个词,直到我灵机一动搜索了demo,发现demo是小样,测验的

官方上同样给出了read me文档供大家查看yolov5所需的python版本

创建的虚拟环境中的python应当满足这个要求

在解压了下载的yolov5 master压缩包后

在解压到的文件夹中我们可以找到一个requirement.txt

安装requirement.txt文件安装依赖包有以下步骤

1.确定requirement.txt文件的路径

2.cd到该文件所在文件夹

ps:注意,若目前的盘跟文件所在的盘不一样,需要先进入到文件所在盘才能cd到文件夹

本人惨痛教训如下:

幸好有前辈帮忙

3.输入以下命令行

conda install -n requirement.txt

ps:conda本身默认的下载网站是外网,速度可能较慢,有需要的同学可以移步到清华镜像源网站按照官方教程更改anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 

 接下来就能感受到cmd风格的魅力了!(超级帅的下载条)

搜索过图中报的warning了,原因还是经典的UTF8等字符码之间的矛盾,emm,但目前笔者还没有找到解决方法,试过在设置里将电脑设置成了全局UTF8结果把锐捷认证给干倒了,连网都上不了,遂换回来了。反正该下载的都能下载,yolov5也依旧能继续跑,那就不管了,先抓住主要矛盾先。

安装完成后的提示会有个Successfully

笔者在测试运行时又又又出错了

借用跟我同一时间出同一错误的同学的图说明一下:

No mudule named‘torch’

事出有因,我立马上网搜了这条语句

原来是可能是没有安装pytorch,我还因此在cmd进入虚拟环境检查过pytorch 的版本,确实是没有

接着我又速速上了pytorch官网,虽然现在都没搞明白这是个什么东西,但找到安装的方法就好

PyTorch

结果需要选择我电脑的Cuda版本?

啥?Cuda又是什么?

悲伤的我于是又上网搜又翻书(书的封面如下)

随后安装网上找到的详细教程一步步把Cuda安装好了,还下载了CuDNN文件

笔者目前还是没有很理解Cuda,CuDNN,Pytorch的作用和关系,多说多错,那就不说了

安装完以上这些

整个的yolov5能够运行的环境也就搭建起来了

接着是在哪里运行的问题了,我们部长所推荐的视频中用的是spyder

后面我发现使用cmd同样是可以的

如果在spyder运行那就得在虚拟环境中安装一个对应python版本的spyder

安装方法如下:

在anaconda navigater 上找到install xxx on base

点击base,选中刚刚创建的虚拟环境,再向下找到spyder安装

安装完我们可以在软件列表找到一个新的spyder,后面跟着虚拟环境的名字

然后我们就可以使用虚拟环境版本python的spder了

笔者在测试yolov5使用的是spyder

但时间间隔太久,笔者又是照视频上的依葫芦画瓢完成的,便懒得赘述在哪输入命令以及严格的代码格式了

最后的demo结果如图

 另一种方法就是cmd方法了

这是笔者在官方文档里找到的命令行

python detect.py --weights yolov5s.pt --source 0                               
                                               img.jpg                         
                                               vid.mp4                         
                                               screen                          
                                               path/                           
                                               list.txt                        
                                               list.streams                    
                                               'path/*.jpg'                    
                                               'https://youtu.be/LNwODJXcvt4'  
                                               'rtsp://example.com/media.mp4'  

笔者在输入时踩过的坑有

1,命令行中路径的划分并不使用平常的反斜杠  \ 而是使用斜杠/

2.路径并不需要使用单引号或者双引号括住

3.笔者本人记得自己使用时特地将目前的文件夹cd到了yolov5才执行命令行,使用了相对路径的写法,以下是cmd中路径不同写法的详细说明

相对路径与绝对路径的写法_绝对路径用什么符号-CSDN博客

之所以详细介绍这个是因为觉得这个很有用,如果你用cmd方式运行的话就不必再另外安装spyder,并且官网的文档上都给出了命令行的示例。以后我们做很多事情时也应该会用到命令行,迟早都是要了解一下命令行的语法的。 

好,以上一大步就完成了,跑通了yolov5的demo

接下来就是用自己的数据集训练出自己的目标识别模型了

可以创建一个文件夹存放自己训练的数据

训练所需数据集分为训练集和验证集

如图,train是训练集,vaild是验证集,test是训练好模型后测试模型的数据集

 data是YAML文件说明训练所需的各种设置,有需要的人可以另外搜索YAML语法学习,着急的可以直接复制下面的语句,将识别的物体类别,类别数量,训练集路径,验证集路径改成自己的就好

names:
    - cat
    - mouse
nc: 2
train: Cat_5E0\train
val: Cat_5E0\valid

在训练集和验证集中都有以下两个文件夹,images存放图像,labels存放分类和物品识别的框框的数据

 图像需要我们直接搜寻,但物品识别的数据从何而来,当然,这并不需要我们自己去从零开始的一个一个坐标的确认,我们只需要用labelimg就行了 

conda install labelimage

在标注完训练所需数据集后

我们就可以开始训练模型了

以下是官网文档上的命令行格式

python train.py --data coco.yaml --batch-size 16 --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0 --epochs 300 --img-size 640 --notest --workers 8 --rect --cache-images --name my_model --evolve

 笔者只使用其中的几个参数,如下

python train.py --data Cat_5E0/data.yaml --batch-size 16 --weights weights/yolov5s.pt --epochs 300

照字面意思理解每项表示什么,batch size是指每轮跑多少张照片,epochs是总共跑多少轮

这样大概等一两个小时就跑好了

跑好后可以像测试demo一样测试train.py

跑好后的权重文件路径如下

python train.py --weights runs/train/exp/weights/best.pt --source Cat_5E0/test/data/images

 测试完打开runs\detect就可以找到测试结果的文件夹了

如图

就此,任务一大功告成

笔者比较懒,目前还没有探索改进模型精确度的方法

等有空了再好好玩一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值