一步一步带你训练自己的SSD检测算法_ssd训练自己的数据集(1)

本文介绍了如何准备SSD(Single Shot MultiBox Detector)目标检测算法训练所需的数据集,包括创建目录结构、转换标注格式、划分训练集与验证集,并详细阐述了从克隆SSD代码库、配置环境到修改网络配置和预训练模型的全过程,为自定义数据集训练SSD模型提供了一站式指导。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

	|_ .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标注数据

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值