北京购物网站建设公司,wordpress菜单里想在添加一个菜单,企业做网站的公司,wordpress自己安装了插件吗刚开始跟着网上的教程做#xff0c;把环境安装错了#xff0c;后来直接用GitHub的官方教程来安装环境。 地址是yolov5官方团队代码及教程#xff0c;看readme文件就可以。 系列文章#xff1a; 基于Yolov5目标检测的物体分类识别及定位#xff08;一#xff09; -- 数据集… 刚开始跟着网上的教程做把环境安装错了后来直接用GitHub的官方教程来安装环境。 地址是yolov5官方团队代码及教程看readme文件就可以。 系列文章 基于Yolov5目标检测的物体分类识别及定位一 -- 数据集原图获取与标注 基于Yolov5目标检测的物体分类识别及定位二 -- yolov5运行环境搭建及label格式转换 目录
环境搭建
数据集格式转换
文件夹配置
标签文件的格式转换
更改配置文件
训练模型 环境搭建 很简单不要想的复杂。 先下载完整的官方代码。地址在开头下完解压。 用conda为例新建一个python3.8的版本的环境可以就叫yolov5然后进入下好的代码文件夹根目录命令行激活新建的yolov5这个环境并运行下面这句话来安装所有的必须的依赖包
pip install -r requirements.txt 没错你没看错也没想错就是在conda环境里用pip安装我刚开始不知道用conda install去挨个安装最后还是失败重来真的浪费时间。 等待全部安装好后应该是这个效果 如果下载太慢或者网络问题失败报错建议进行换源。教程在我另外的博客中
Anaconda使用conda连接网络时出现网络错误CondaHTTPError包括Anaconda安装与入门
使用Python的pip方法安装第三方包时很慢或者失败的问题 数据集格式转换
文件夹配置 环境搭建好后在项目的data文件夹中新建mydatas文件夹用来放自己做好的数据集。 在mydatas文件夹中新建images文件夹和labels文件夹。 在images文件夹和labels文件夹中都新建train2021文件夹和val2021文件夹。 效果为 把数据集的图片直接放入images/train2021/中也可以留出一部分做验证集、测试集。
标签文件的格式转换 这一步很重要大部分报错都因为这个。而最终判断是否成功运行起来的标志就是如果你用的是笔记本散热风扇有没有突然满速运转hhh 接下来把标签文件放入 labels/train2021/中但是不是把上一篇文章的一堆json文件放过来而是把那些json转换为txt文件因为yolov5需要的标签文件就是txt文件。这里借用一张知乎的博客截图需要注意的是这一项需要把字符串对应顺序换成012345的数字不然报错。 需要注意的是json文件经过loads方法读取后是dict类型而如果里面有嵌套的第二层json数据会读取为list类型不能通过简单的[‘key’]取出数据需要安装并用jsonpath模块简单有效以 $.. 模式寻找第二层子节点。
load() 或 loads() 用于读取json文件返回的是dict格式。
dump() 或 dumps() 用于写入json文件写入的是str格式。 jsonpath基本语法
value jsonpath(theJsonData, $..label) 后面的 描述 的规则是 以下是多个文本内容的文件的合并代码以及格式转换代码。
# 合并一个文件夹下的多个文本内容形式的文件
# 通用于txt、csv、json等的简单合并import osfiledir ./yourdir
filenames os.listdir(filedir) # 获取当前文件夹中的文件名称列表
f open(result.json,w) # 打开当前目录下的result文件如果没有则创建
i 0
for filename in filenames: # 先遍历文件名i 1print(i)if i 0:filepath filedir \\ filenameprint(filepath)#遍历单个文件读取行数for line in open(filepath,encoding gbk, errors ignore):# print(str(line))f.writelines(line)f.write(\n) # 最后换行
f.close() # 关闭文件# 转换json为txt并按规则计算坐标import os
import json
from jsonpath import jsonpathfiledir ./yourdir/
str2float {yourLabel_1:0, yourLabel_2:1, yourLabel_3:2, yourLabel_4:3, yourLabel_5:4, yourLabel_6:5}def jsontotxt(jsonfile):txt_path ./txts/imginfo json.load(open(filedir jsonfile))fn txt_path imginfo[imagePath].replace(.jpg, .txt)file open(fn, a)print(fn)height imginfo[imageHeight]weight imginfo[imageWidth]category jsonpath(imginfo, $..label)[0] # 最有效取子节点返回列表假列表取第一个就是strcategory str2float[category]# 通过字典把字符串格式的标签名换成012345解决 could not convert string to float 的报错pointsValue jsonpath(imginfo, $..points) # 有的图标了多个矩形是个真列表for ap in pointsValue: # 将坐标换算成yolov5的需求格式相对坐标x1,y1 ap[0]x2,y2 ap[1]x ((x2x1)/2)/weighty ((y2y1)/2)/heightw (x2-x1)/weighth (y2-y1)/heightx round(x,8)y round(y,8)w round(w,8)h round(h,8)file.write(str(category) )file.write(str(x) )file.write(str(y) )file.write(str(w) )file.write(str(h) \n)file.close()if __name__ __main__:filenames os.listdir(filedir)for filename in filenames:jsontotxt(filename) # 处理更改配置文件 接下来修改配置文件也可以自己新建由于我还是初学者所以先直接修改模板文件。 1、项目的data目录下的coco128.yaml文件修改 我们需要修改的是 train: 和 val: 和 nc: 和 names: [ a, b, c] 四行分别对应训练图片的路径验证图片的路径以及数据集的类别的数量和那些类别的名字。改完的效果例子sm隐藏 2、项目的models目录下的yolov5s.yaml也可选择其他的模型方法文件修改 这个文件只需要修改 nc: 那行跟上一个文件对应就可以。改完的例子 3、修改时需要注意的问题是train: 和 val: 以及 nc: 和 name: 的后面要有一个空格,原来的模板里就有修改的时候不要删除就可以跟后面的路径和数字隔开不然会报错。 训练模型 在项目根目录运行命令如果报错就按照错误信息修改命令或文件或依赖包或者重新配置环境。
python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights weighs/yolov5s.pt 有点长我们分开解读一下参数。
–img输入网络的图片经预处理后的照片尺寸
–batch每次输入网络的照片数量这里如果太大了会超过gpu的显存根据实际情况调整
–epoch代表要训练的循环次数根据你的想法调
–data上一步更改的第一个文件
–cfg上一步更改的第二个文件
–weights开发团队训练好的模型用来进行迁移训练可以加上也可以不加不加的话可能就是训练效果不好以及训练时长更长。 官方训练好的模型需要自己fq去作者给的链接去下载放在weighs文件夹中。 模型的百度云链接百度网盘 请输入提取码 提取码8g6c 作者团队是利用tensorboard来可视化训练过程的训练开始会在主目录生成一个runs文件.利用tensorboard打开即可需要TensorFlow环境。
tensorboard --logdir./runs 运行5个Epoch之后就得到了一个初版训练模型运行中的JPEG corrupt的报错不用管会自动跳过然后继续训练。 参考文章
https://github.com/ultralytics/yolov5/readme.md
yolov5训练自己的数据集(垃圾检测分类) - 知乎
https://blog.csdn.net/yapifeitu/article/details/106932503