第一步
去github下载yolov
点击下方链接进入github(进入github很慢,需要慢慢等待),进入github如下图一样,在下载yolov5源码
GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite
第二步
创建环境
打开终端输入下方命令创建环境等
创建环境
conda create -n yolov5-master python==3.8
激活环境
conda activate yolov5-master
第三步
用vscode打开程序,配置解释器
进入你下载的yolov5源码的文件夹,点击右键,选择在终端打开(E),在输入下方命令(要你自己有下载vscode才能打开vscode),打开vscode,在配置环境,按Ctrl + Shift + P,如下图所示输入python,在选择python 选择解释器,在选择你刚刚创建好的环境。
code ./
第四步
去github下载yolov5权重
点击GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite进入github往下翻如下图的地方,点击yolov5s,就会下载。下载完把刚刚下载的yolov5.pt放到你下载的yolov5源码下。
第五步
运行程序
运行程序predict.py如下图所示他在预测数据
第六步
训练自己的数据集
创建一个python脚本,把下方代码输入到脚本中,运行。就会创建生成文件夹,
import os
a_path = "" #这是你自己的下载的yolov5源码的绝对路径
if os.path.isdir(a_path):
b_path = a_path+"/userdata/data"
c_path = os.makedirs(b_path + "/images")
d_path = os.makedirs(b_path + "/labels")
e_path = os.makedirs(b_path + "/json")
os.chdir(c_path)
os.mkdir(train)
os.mkdir(val)
os.chdir(d_path)
os.mkdir(train)
os.mkdir(val)
os.chdir(e_path)
os.mkdir(train)
os.mkdir(val)
把labelme标注的数据放入刚刚创建文件夹里面
后缀名jpg的放到、userdata/data/images/train/
后缀名json的放到 userdata/data/json/train/
运行下方代码,把json转换成txt,用来训练模型
import json
import os
import glob
import os.path as osp
# def labelme2yolov2Seg(jsonfilePath="", resultDirPath="", classList=""):
"""
此函数用来将labelme软件标注好的数据集转换为yolov5_7.0sege中使用的数据集
:param jsonfilePath: labelme标注好的*.json文件所在文件夹
:param resultDirPath: 转换好后的*.txt保存文件夹
:param classList: 数据集中的类别标签
:return:
"""
zmr = ['checker_board']
list1 = []
ycm = " "json后缀的绝对路径
liqian = " " 放入txt后缀的绝对路径
# 0.创建保存转换结果的文件夹
if (not os.path.exists(liqian)):
os.mkdir(liqian)
# 1.获取目录下所有的labelme标注好的Json文件,存入列表中
for i in os.listdir(ycm):
q = os.path.join(ycm, i)
list1.append(q)
# print(i)
# print(q)
# print(list1)
for j in list1:
with open(j, "r") as f:
file_in = json.load(f)
shapes = file_in["shapes"]
print(j)
lyy = os.path.basename(j)
kl = osp.join(liqian, lyy.replace(".json", ".txt"))
with open(kl, "w+") as file_handle:
for shape in shapes:
file_handle.writelines(str(zmr.index(shape['label'])) + " ")
for point in shape["points"]:
x = point[0]/file_in["imageWidth"]
y = point[1]/file_in["imageHeight"]
file_handle.writelines(str(x) + " " + str(y) + " ")
file_handle.writelines("\n")
file_handle.close()
f.close()
在去models/segment/yolov5x-seg.yaml复制到userdata下,打开userdata/yolov5-seg.yaml设置如下图
在去 data/coco128-seg.yaml复制到userdata下,打开userdata/coco128-seg.yaml设置如下图所示
在去train.py修改如下图所示,在运行train.py程序就ok了