先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
正文
|_ .xml
|_ ImageSets
|_ Main
|_ train.txt/val.txt/trainval.txt/test.txt
|_ SegmentationClass
|__ VOC2012
|_ JPEGImages
|_ .jpg
|_ Annotations
|_ ImageSets
|_ SegmentationClass
|__ …
1、Annotations文件夹中存放使用标注工具获得的.xml标签文件;
2、ImageSets/Main文件夹中存放着训练集\验证集\训练验证集\测试集图片的名称,后续代码训练的图片从这些文件中读取;
3、JPEGImages文件夹中存放的是原始的训练和验证图片,验证图片是随机的从训练集中获得的;
4、SegmentationClass和SegmentationObject用来存放目标分割的信息,由于当前的任务仅仅是一个目标检测的任务,因而不需要在这两个文件夹下面存放任何文件;
#### 3.2 构造新的PASCAL VOC数据集
切换到自己的想要存放数据集的目录,xxx代表自己的具体目录
cd xxx
#########################1、创建数据集包含的相关文件夹#########################
mkdir datasets
cd datasets
mkdir Annotations
mkdir ImageSets
mkdir JPEGImages
mkdir SegmentationClass
mkdir SegmentationObject
cd ImageSets
mkdir Main
#########################2、移动图片和标签到相应的文件夹#######################
cd xxx # xxx表示你的图片路径
mv * JPEGImages # 将图片(.jpg/.png/.bmp等)移动到JPEGImages文件夹中
cd xxx # xxx表示.xml文件所在的路径
mv * Annotations # 将标签文件(.xml)移动到Annotations文件夹中
#########################3、生成Main文件夹下面的.txt文件#######################
coding=utf-8
import os
import random
用来划分训练集合验证集的比例
trainval_percent = 0.95
train_percent = 0.85
设置输入的.xml和输出的.txt文件的路径
xmlfilepath = ‘./datasets/VOC2007/Annotations’
txtsavepath = ‘.datasets/VOC2007/ImageSets/Main’
total_xml = os.listdir(xmlfilepath)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
打开相应的文件,准备存储内容
ftrainval = open(‘./datasets/VOC2007/ImageSets/Main/trainval.txt’, ‘w’)
ftest = open(‘./datasets/VOC2007/ImageSets/Main/test.txt’, ‘w’)
ftrain = open(‘./datasets/VOC2007/ImageSets/Main/train.txt’, ‘w’)
fval = open(‘./datasets/VOC2007/ImageSets/Main/val.txt’, ‘w’)
遍历所有文件进行写文件
for i in list:
name=total_xml[i][:-4]+‘\n’
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
写完之后关闭文件
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
**如果你是使用Labelme生成的.json格式的标签文件,你想要使用VOC格式训练网络,那么你需要使用下面这个小工具将.json格式转换为.xml格式**
#########################4、对.json格式的标签文件进行处理#######################
coding=utf-8
import os
import numpy as np
import codecs
import json
from glob import glob
import cv2
import shutil
from sklearn.model_selection import train_test_split
#1.标签路径
labelme_path = “./xxx/” # 原始xxx标注数据