设备限制,需用实验室远程服务器进行部署:
sudo NV_GPU=0,1 nvidia-docker run --name 文件夹名 --shm-size=‘6g’ -d -p 7803:22 -it -v /home/disk3090ti/wjh3090ti:/workspace/文件夹名 pytorch/pytorch:aaa bash
各文件说明:
cfg:存放训练所需要的网络结构yaml文件
customdata:这个文件夹是存放用户自定义数据集,这是我后来训练v7的时候创建的,刚下载的时候是没有的
data:存放训练过程中超参数和训练相关data的yaml文件
models:存放的是定义网络结构的相关python文件和导出模型部署所需要的代码
runs:存放训练和测试的权重文件和相关信息
utils:存放一些代码运行中必备的代码
detect.py:用于测试的脚本
requirement.txt:训练和测试所需要下载的库
train.py:用于开启训练的脚本
(转自进我的收藏吃灰吧~~大佬)
设置密码
passwd root
apt-get update
apt-get install openssh-server
vim /etc/ssh/sshd_config
service ssh restart
conda create -n yolov7 python=3.7
conda activate yolov7
pip install -r your_yolov7_path/requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Labelimg标注工具选用voc格式标注完的文件是xml,yolo所需代码是txt格式,需要进行格式转换。xml2txt代码如下:
import os
import glob
import xml.etree.ElementTree as ET
xml_file=r'/workspace/hdy7/yolov7-main/data/data2/labels/val/'
l=['stem', 'blade', 'black tuber']
def convert(box,dw,dh):
x=(box[0]+box[2])/2.0
y=(box[1]+box[3])/2.0
w=box[2]-box[0]
h=box[3]-box[1]
x=x/dw
y=y/dh
w=w/dw
h=h/dh
return x,y,w,h
def f(name_id):
xml_o=open(r'/workspace/hdy7/yolov7-main/data/data2/labels/val/%s.xml'%name_id) #xml标签文件夹
txt_o=open(r'/workspace/hdy7/yolov7-main/data/data2/labels/val_txt/%s.txt'%name_id,'w') #txt输出文件
pares=ET.parse(xml_o)
root=pares.getroot()
objects=root.findall('object')
size=root.find('size')
dw=int(size.find('width').text)
dh=int(size.find('height').text)
for obj in objects :
c=l.index(obj.find('name').text)
bnd=obj.find('bndbox')
b=(float(bnd.find('xmin').text),float(bnd.find('ymin').text),
float(bnd.find('xmax').text),float(bnd.find('ymax').text))
x,y,w,h=convert(b,dw,dh)
write_t="{} {:.5f} {:.5f} {:.5f} {:.5f}\n".format(c,x,y,w,h)
txt_o.write(write_t)
xml_o.close()
txt_o.close()
name=glob.glob(os.path.join(xml_file,"*.xml"))
for i in name :
name_id=os.path.basename(i)[:-4]
f(name_id)
转完xml文件会变成如下txt格式
然后需要用代码生成图片的文件路径,代码如下:
import os
def listdir(path, list_name): # 传入存储的list
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
listdir(file_path, list_name)
else:
list_name.append(file_path)
list_name = []
path = '/workspace/hdy7/yolov7-main/data/data2/images/test/' # 文件夹路径
listdir(path, list_name)
print(list_name)
with open('/workspace/hdy7/yolov7-main/data/data2/test_list.txt', 'w') as f: # 要存入的txt
write = ''
for i in list_name:
write = write + str(i) + '\n'
f.write(write)
新建data.yaml数据路径配置文件,填写训练验证和测试集文件路径,修改标签种类数目nc,修改标签名字。
weights这里下载了源码里的权重文件,默认的从网站上自动下载会报错,建议自己下载到本地后上传。
batch-size根据算力修改
data给入前面设置的data.yaml文件路径
nosave可以改一下,要不会每几轮训练就保存一次训练结果。
subprocess.CalledProcessError: Command ‘git tag’ returned non-zero exit status 127.
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
服务器上装一下就行啦
apt-get update
apt install libgl1-mesa-glx