yolov5实战讲解,适合新手入门,从环境搭建到模型训练,最后模型识别演示。
一、Anaconda新建环境YOLO
打开Anaconda Prompt, 查看conda下所有环境
conda env list
为yolo单独创建一个环境。
conda create -n yolo python=3.8
执行代码后,查看环境看到我们的新环境yolo创建完成,下面代码切入到yolo环境下
conda activate yolo
下载YOLOV5
拉取yolov5地址,解压后,看见里面有一个requirements.txt文件,这个txt文件里面记录了yolov5需要的依赖包,接下来我们使用pip命令一键下载这些依赖。
进入到刚刚下载的yolov5文件夹里在地址栏输入cmd回车,并且切换到刚刚新建的yolo环境下。
pip install -r requirements.txt
上面命令运行完,测试一下是否成功,这里使用的pycharm,在yolov5里面有个detect.py,运行后根据路径打开图片如图一样就成功了,接下来制作数据集。
制作数据集
在yolov5-master文件下创建以下目录结构,images下的train和val分别放我们训练和测试用的图片,labels下的train和val存放待会要制作的标签,K.yaml是存放一些目录信息和标志物分类,也是需要放进yolov5模型里的文件
接下来就是对images里面的图片进行打标,使用的打标工具是labelimg,下载地址在这,下载后解压,然后还是和上面如法炮制,labelImg-master文件夹下cmd,activate yolo切换环境,依次输入下面的代码,下载labelimg需要的依赖.
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
下载好后,使用下面的命令打开labelimg
python labelimg.py
labelimg里面需要这样设置,先是查看这里几个勾都打上,设置存放目录images里trian的图片就放在labels下面的train,val同理,下面设置为yolo模式。右边的预设标签是在labelimg-master里面的data文件夹里面的predefined_classes.txt,直接删除。(后续有需求,可以在这个txt文件里面,自行增加标签类别,将使用预设标签勾上在后面打标是可以自动归类。)
准备了50张狗图,45张用来训练,5张用来验证。
labelimg快捷键使用 , w 打标 ,D下一张。
lables文件夹下的train生成了dog.txt文件,0是标签位置,后面四个小数是标记的四个坐标点,这样就算打标完一张图片了。
按部就班把images里面的图片对应着标记完,接下来配置K.yaml文件,train和val放我们图片路径,nc是需要识别的种类,只标记了dog这个标签,nc = 1。names代表种类名称,对应nc,可以自行增加。
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: D:\yolov5-master\yolo_dataset\images\train
val: D:\yolov5-master\yolo_dataset\images\val
# number of classes
nc: 1
# class names
names: ['dog']
配置完成我们开始训练模型,依旧是在pycharm里面运行yolov5,找到train.py, 在data,default = ROOT / “这里写入K.yaml的路径”,这里有几个参数解释一下
–weigths: 指的是训练好的网络模型,用来初始化网络权重
–data:训练数据路径
–epochs:训练迭代次数
–batch-size:每次喂给神经网络的图片数目
–workers: 多线程训练
运行Train.py,能如图显示就表示正在训练,等待运行完毕。
运行完后根据提示路径,查看运行结果。这是生产了best.pt是训练中效果最好的,last.pt是最后一次,接下来我们来测试模型效果。
1 这里写进best.pt路径,2 放入测试图片的路径,3 放同train.py里data一样的K.yaml路径。
运行后测试,效果不错。